使用 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 用戶端,連線到您想要進行疑難排解之 Windows 伺服器節點的內部 IP 位址。
您現在已連線到 Windows Server 節點。
您現在可以在 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 叢集所連線的虛擬網路。
- 在 Azure 入口網站中,移至 [虛擬網路]。 選取 AKS 叢集所連線的虛擬網路。
- 在 [設定] 下,選取 [Bastion],然後選取 [部署 Bastion]。 等到流程完成,再移至下一個步驟。
使用 Azure Bastion 連線到您的 Windows Server 節點
移至 AKS 叢集的節點資源群組。 在 Azure Cloud Shell 中執行下列命令,以取得節點資源群組的名稱:
az aks show --name myAKSCluster --resource-group myResourceGroup --query 'nodeResourceGroup' -o tsv
- 選取 [概觀],然後選取您的 Windows 節點集區虛擬機器擴展集。
- 在 [設定] 底下,選取 [執行個體]。 選取您想要連線的 Windows Server 節點。
- 在 [支援 + 疑難排解] 下,選取 [Bastion]。
- 輸入建立 AKS 叢集時所設定的認證。 選取 Connect。
您現在可以在 cmd 視窗中執行任何疑難排解命令。 由於 Windows 伺服器節點使用 Windows Server Core,因此當您透過 RDP 連線到 Windows 伺服器節點時,沒有完整的 GUI 或其他 GUI 工具。
注意
如果您關閉終端機視窗,請按下 [CTRL + ALT + End],選取 [工作管理員]、選取 [更多詳細資料]、選取 [檔案]、選取 [執行新工作],然後輸入 cmd.exe,開啟另一個終端機。 您也可以登出並使用 Bastion 重新連線。
移除 Bastion 存取
完成後,結束 Bastion 工作階段並移除 Bastion 資源。
- 在 Azure 入口網站中,移至 [Bastion],然後選取您建立的 Bastion 資源。
- 在頁面頂端,選取 [刪除]。 等候流程完成,再繼續進行下一個步驟。
- 在 Azure 入口網站中,移至 [虛擬網路]。 選取 AKS 叢集所連線的虛擬網路。
- 在 [設定] 下,選取 [子網路],然後刪除為 Bastion 資源建立的 AzureBastionSubnet 子網路。
下一步
如需更多疑難排解資料,您可以檢視 kubernetes 主要節點記錄或 Azure 監視器。