共用方式為


使用 RDP 連線到 Azure Kubernetes Service (AKS) 叢集 Windows 伺服器節點,以進行維護或疑難排解

在 Azure Kubernetes Service (AKS) 叢集的生命週期中,您可能需要存取 AKS Windows 伺服器節點。 此存取可能用於維護、記錄收集,或其他疑難排解作業。 您可以使用 RDP 存取 AKS Windows 伺服器節點。 基於安全考量,AKS 節點不會公開至網際網路。

或者,如果您想要透過 SSH 連線到 AKS Windows Server 節點,您會需要存取叢集建立期間所使用的相同金鑰組。 遵循透過 SSH 連線至 Azure Kubernetes Service (AKS) 叢集節點中的步驟。

本文會示範如何使用私人 IP 位址,以 AKS 節點建立 RDP 連線。

開始之前

本文假設您的現有 AKS 叢集具有 Windows 伺服器節點。 如果您需要 AKS 叢集,請參閱使用 Azure CLI 建立具有 Windows 容器的 AKS 叢集一文。 您需要 Windows 伺服器節點的 Windows 系統管理員使用者名稱和密碼,才能進行疑難排解。 您也需要 RDP 用戶端,例如 Microsoft 遠端桌面

如果您需要重設密碼,請使用 az aks update 來變更密碼。

az aks update --resource-group myResourceGroup --name myAKSCluster --windows-admin-password $WINDOWS_ADMIN_PASSWORD

如果您需要重設使用者名稱和密碼,請參閱在 Windows VM 中重設遠端桌面服務或其管理員密碼

您也必須安裝並設定 Azure CLI 2.0.61 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

將虛擬機器部署到與叢集相同的子網路

AKS 叢集的 Windows Server 節點沒有可外部存取的 IP 位址。 若要建立 RDP 連線,您可以將具有公開可存取 IP 位址的虛擬機器部署到與 Windows 伺服器節點相同的子網路。

下列範例會在 myResourceGroup 資源群組中建立名為 myVM 的 VM。

您必須取得 Windows Server 節點集區所使用的子網路標識碼,並查詢:

  • 叢集的節點資源群組
  • 虛擬網路
  • 子網路的名稱
  • 子網路識別碼
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
VNET_NAME=$(az network vnet list --resource-group $CLUSTER_RG --query [0].name -o tsv)
SUBNET_NAME=$(az network vnet subnet list --resource-group $CLUSTER_RG --vnet-name $VNET_NAME --query [0].name -o tsv)
SUBNET_ID=$(az network vnet subnet show --resource-group $CLUSTER_RG --vnet-name $VNET_NAME --name $SUBNET_NAME --query id -o tsv)

現在您已擁有 SUBNET_ID,請在相同的 Azure Cloud Shell 視窗中執行下列命令,以建立 VM:

PUBLIC_IP_ADDRESS="myVMPublicIP"

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image win2019datacenter \
    --admin-username azureuser \
    --admin-password {admin-password} \
    --subnet $SUBNET_ID \
    --nic-delete-option delete \
    --os-disk-delete-option delete \
    --nsg "" \
    --public-ip-address $PUBLIC_IP_ADDRESS \
    --query publicIpAddress -o tsv

下列範例輸出顯示已成功建立 VM,並顯示虛擬機器的公用 IP 位址。

13.62.204.18

記錄虛擬機器的公用 IP 位址。 您會在稍後的步驟中使用這個位址。

允許存取虛擬機器

根據預設,AKS 節點集區子網路會受到 NSG (網路安全性群組) 保護。 您必須在 NSG 中啟用存取權,才能存取虛擬機器。

注意

NSG 是由 AKS 服務所控制。 您對 NSG 所做的任何變更,都會隨時由控制平面覆寫。

首先需取得資源群組和名稱,以將規則新增至:

CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list --resource-group $CLUSTER_RG --query [].name -o tsv)

然後建立 NSG 規則:

az network nsg rule create \
 --name tempRDPAccess \
 --resource-group $CLUSTER_RG \
 --nsg-name $NSG_NAME \
 --priority 100 \
 --destination-port-range 3389 \
 --protocol Tcp \
 --description "Temporary RDP access to Windows nodes"

取得節點位址

若要管理 Kubernetes 叢集,請使用 kubectl (Kubernetes 命令列用戶端)。 如果您使用 Azure Cloud Shell,則 kubectl 已安裝。 若要在本機安裝 kubectl,請使用 az aks install-cli 命令:

az aks install-cli

若要設定 kubectl 以連線到 Kubernetes 叢集,請使用 az aks get-credentials 命令。 此命令會下載憑證並設定 Kubernetes CLI 以供使用。

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

使用 kubectl get 命令列出 Windows 伺服器節點的內部 IP 位址:

kubectl get nodes -o wide

下列範例輸出顯示叢集中所有節點的內部 IP 位址,包括 Windows 伺服器節點。

$ kubectl get nodes -o wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION      CONTAINER-RUNTIME
aks-nodepool1-42485177-vmss000000   Ready    agent   18h   v1.12.7   10.240.0.4    <none>        Ubuntu 16.04.6 LTS          4.15.0-1040-azure   docker://3.0.4
aksnpwin000000                      Ready    agent   13h   v1.12.7   10.240.0.67   <none>        Windows Server Datacenter   10.0.17763.437

記錄您想進行疑難排解之 Windows 伺服器節點的內部 IP 位址。 您會在稍後的步驟中使用這個位址。

連線至虛擬機器與節點

連線至您稍早使用 RDP 用戶端建立的虛擬機器公用 IP 位址,例如 Microsoft 遠端桌面

使用 RDP 用戶端連線到虛擬機器的影像

在您連線到虛擬機器之後,請從虛擬機器內使用 RDP 用戶端,連線到您想要進行疑難排解之 Windows 伺服器節點的內部 IP 位址

使用 RDP 用戶端連線到 Windows Server 節點的影像

您現在已連線到 Windows Server 節點。

Windows Server 節點中 Cmd 視窗的影像

您現在可以在 cmd 視窗中執行任何疑難排解命令。 由於 Windows 伺服器節點使用 Windows Server Core,因此當您透過 RDP 連線到 Windows 伺服器節點時,沒有完整的 GUI 或其他 GUI 工具。

移除 RDP 存取

完成時,結束與 Windows 伺服器節點的 RDP 連線,然後結束虛擬機器的 RDP 工作階段。 結束這兩個 RDP 工作階段後,請使用 az vm delete 命令刪除虛擬機器:

# Delete the virtual machine
az vm delete \
 --resource-group myResourceGroup \
 --name myVM

刪除與虛擬機器相關聯的公用 IP:

az network public-ip delete \
 --resource-group myResourceGroup \
 --name $PUBLIC_IP_ADDRESS

刪除 NSG 規則:

CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list --resource-group $CLUSTER_RG --query [].name -o tsv)
az network nsg rule delete \
 --resource-group $CLUSTER_RG \
 --nsg-name $NSG_NAME \
 --name tempRDPAccess

使用 Azure Bastion 連線

或者,您可以使用 Azure Bastion 連線到您的 Windows Server 節點。

部署 Azure Bastion

若要部署 Azure Bastion,您必須尋找 AKS 叢集所連線的虛擬網路。

  1. 在 Azure 入口網站中,移至 [虛擬網路]。 選取 AKS 叢集所連線的虛擬網路。
  2. 在 [設定] 下,選取 [Bastion],然後選取 [部署 Bastion]。 等到流程完成,再移至下一個步驟。

使用 Azure Bastion 連線到您的 Windows Server 節點

移至 AKS 叢集的節點資源群組。 在 Azure Cloud Shell 中執行下列命令,以取得節點資源群組的名稱:

az aks show --name myAKSCluster --resource-group myResourceGroup --query 'nodeResourceGroup' -o tsv
  1. 選取 [概觀],然後選取您的 Windows 節點集區虛擬機器擴展集。
  2. 在 [設定] 底下,選取 [執行個體]。 選取您想要連線的 Windows Server 節點。
  3. 在 [支援 + 疑難排解] 下,選取 [Bastion]
  4. 輸入建立 AKS 叢集時所設定的認證。 選取 Connect

您現在可以在 cmd 視窗中執行任何疑難排解命令。 由於 Windows 伺服器節點使用 Windows Server Core,因此當您透過 RDP 連線到 Windows 伺服器節點時,沒有完整的 GUI 或其他 GUI 工具。

注意

如果您關閉終端機視窗,請按下 [CTRL + ALT + End],選取 [工作管理員]、選取 [更多詳細資料]、選取 [檔案]、選取 [執行新工作],然後輸入 cmd.exe,開啟另一個終端機。 您也可以登出並使用 Bastion 重新連線。

移除 Bastion 存取

完成後,結束 Bastion 工作階段並移除 Bastion 資源。

  1. 在 Azure 入口網站中,移至 [Bastion],然後選取您建立的 Bastion 資源。
  2. 在頁面頂端,選取 [刪除]。 等候流程完成,再繼續進行下一個步驟。
  3. 在 Azure 入口網站中,移至 [虛擬網路]。 選取 AKS 叢集所連線的虛擬網路。
  4. 在 [設定] 下,選取 [子網路],然後刪除為 Bastion 資源建立的 AzureBastionSubnet 子網路。

下一步

如需更多疑難排解資料,您可以檢視 kubernetes 主要節點記錄Azure 監視器