유지 관리 또는 문제 해결을 위해 AKS(Azure Kubernetes Service) 클러스터 Windows Server 노드와 RDP와 연결

AKS(Azure Kubernetes Service) 클러스터의 수명 주기 내내 AKS Windows Server 노드에 액세스해야 합니다. 유지 관리, 로그 수집 또는 기타 문제 해결 작업을 위해 이 액세스를 사용할 수 있습니다. RDP를 사용하여 AKS Windows Server 노드에 액세스할 수 있습니다. 보안을 위해 AKS 노드는 인터넷에 노출되지 않습니다.

또는 AKS Windows Server 노드에 SSH를 사용하려는 경우 클러스터를 만들 때 사용된 것과 동일한 키 쌍에 액세스해야 합니다. AKS(Azure Kubernetes Service) 클러스터 노드에 SSH 연결의 단계를 따릅니다.

이 문서에서는 개인 IP 주소를 사용하여 AKS 노드와 RDP를 연결하는 방법을 보여 줍니다.

시작하기 전에

이 문서에서는 Windows Server 노드가 포함된 기존 AKS 클러스터가 있다고 가정합니다. AKS 클러스터가 필요한 경우 Azure CLI를 사용하여 Windows 컨테이너가 있는 AKS 클러스터 만들기 문서를 참조하세요. 문제를 해결하려는 Windows Server 노드에 대한 Windows 관리자 사용자 이름과 암호가 필요합니다. 또한 Microsoft 원격 데스크톱과 같은 RDP 클라이언트가 필요합니다.

암호를 다시 설정해야 하는 경우 az aks update를 사용하여 암호를 변경합니다.

az aks update -g myResourceGroup -n 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 Server 노드와 동일한 서브넷에 배포할 수 있습니다.

다음 예제에서는 myResourceGroup 리소스 그룹에 myVM이라는 가상 머신을 만듭니다.

Windows Server 노드 풀과 쿼리에서 서브넷 ID를 가져와서 다음을 쿼리해야 합니다.

  • 클러스터의 노드 리소스 그룹
  • 가상 네트워크
  • 서브넷의 이름
  • 서브넷 ID
CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
VNET_NAME=$(az network vnet list -g $CLUSTER_RG --query [0].name -o tsv)
SUBNET_NAME=$(az network vnet subnet list -g $CLUSTER_RG --vnet-name $VNET_NAME --query [0].name -o tsv)
SUBNET_ID=$(az network vnet subnet show -g $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에 대한 변경 내용은 언제든지 컨트롤 플레인에 의해 덮어 쓰여집니다.

먼저 규칙을 추가할 NSG의 리소스 그룹과 이름을 가져옵니다.

CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list -g $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 클러스터를 관리하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. Azure Cloud Shell을 사용하는 경우 kubectl이 이미 설치되어 있습니다. kubectl을 로컬로 설치하려면 az aks install-cli 명령을 사용합니다.

az aks install-cli

Kubernetes 클러스터에 연결하도록 kubectl을 구성하려면 az aks get-credentials 명령을 사용합니다. 이 명령은 자격 증명을 다운로드하고 Kubernetes CLI가 해당 자격 증명을 사용하도록 구성합니다.

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

kubectl get 명령을 사용하여 Windows Server 노드의 내부 IP 주소를 나열합니다.

kubectl get nodes -o wide

다음 예제 출력에서는 Windows Server 노드를 비롯한 클러스터에 있는 모든 노드의 내부 IP 주소를 보여 줍니다.

$ 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 Server 노드의 내부 IP 주소를 기록해 둡니다. 이 주소는 이후 단계에서 사용합니다.

가상 머신 및 노드에 연결

Microsoft 원격 데스크톱과 같은 RDP 클라이언트를 사용하여 이전에 만든 가상 머신의 공용 IP 주소에 연결합니다.

Image of connecting to the virtual machine using an RDP client

가상 머신에 연결한 후 가상 머신 내 RDP 클라이언트를 사용하여 문제를 해결하려는 Windows Server 노드의 내부 IP 주소에 연결합니다.

Image of connecting to the Windows Server node using an RDP client

이제 Windows Server 노드에 연결되었습니다.

Image of cmd window in the Windows Server node

이제 cmd 창에서 문제 해결 명령을 실행할 수 있습니다. Windows Server 노드는 Windows Server Core를 사용하기 때문에 RDP를 통해 Windows Server 노드에 연결할 때 전체 GUI나 다른 GUI 도구가 없습니다.

RDP 액세스 제거

완료되면 Windows Server 노드에 대한 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 -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list -g $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 Portal에서 가상 네트워크로 이동합니다. AKS 클러스터가 연결된 가상 네트워크를 선택합니다.
  2. 설정에서 Bastion을 선택한 다음 Bastion 배포를 선택합니다. 다음 단계로 이동하기 전에 프로세스가 완료될 때까지 기다리세요.

Azure Bastion을 사용하여 Windows Server 노드에 연결

AKS 클러스터의 노드 리소스 그룹으로 이동합니다. Azure Cloud Shell에서 아래 명령을 실행하여 노드 리소스 그룹의 이름을 가져옵니다.

az aks show -n myAKSCluster -g myResourceGroup --query 'nodeResourceGroup' -o tsv
  1. 개요를 선택하고 Windows 노드 풀 가상 머신 확장 집합을 선택합니다.
  2. 설정에서 인스턴스를 선택합니다. 연결하려는 Windows 서버 노드를 선택합니다.
  3. 지원 + 문제 해결에서 Bastion을 선택합니다.
  4. AKS 클러스터를 만들 때 설정한 자격 증명을 입력합니다. 연결을 선택합니다.

이제 cmd 창에서 문제 해결 명령을 실행할 수 있습니다. Windows Server 노드는 Windows Server Core를 사용하기 때문에 RDP를 통해 Windows Server 노드에 연결할 때 전체 GUI나 다른 GUI 도구가 없습니다.

참고 항목

터미널 창을 닫은 경우 CTRL + ALT + End를 누르고 작업 관리자를 선택하고 자세히를 선택한 뒤 파일을 선택한 다음 새 작업 실행을 선택하고 cmd.exe를 입력하여 다른 터미널을 엽니다. Bastion에서 로그아웃했다가 다시 연결할 수도 있습니다.

Bastion 액세스 제거

완료되면 Bastion 세션을 종료하고 Bastion 리소스를 제거합니다.

  1. Azure Portal에서 Bastion으로 이동하여 만든 Bastion 리소스를 선택합니다.
  2. 페이지 위쪽에서 삭제를 선택합니다. 다음 단계로 진행하기 전에 프로세스가 완료될 때까지 기다리세요.
  3. Azure Portal에서 가상 네트워크로 이동합니다. AKS 클러스터가 연결된 가상 네트워크를 선택합니다.
  4. 설정에서 서브넷을 선택하고 Bastion 리소스에 대해 만들어진 AzureBastionSubnet 서브넷을 삭제합니다.

다음 단계

문제 해결 데이터가 더 필요한 경우 Kubernetes 기본 노드 로그 또는 Azure Monitor를 볼 수 있습니다.