AKS의 Windows Server 노드 풀에 대해 자주 묻는 질문과 대답

AKS(Azure Kubernetes Service)에서는 노드에서 Windows Server를 게스트 OS로 실행하는 노드 풀을 만들 수 있습니다. 이러한 노드는 .NET Framework 빌드된 것과 같은 네이티브 Windows 컨테이너 애플리케이션을 실행할 수 있습니다. Linux 및 Windows OS에서 컨테이너 지원을 제공하는 방법에는 차이점이 있습니다. 일반적인 Linux Kubernetes 및 Pod 관련 기능은 현재 Windows 노드 풀에서 사용할 수 없습니다.

이 문서에서는 AKS의 Windows Server 노드에 대해 자주 묻는 질문과 그 답변 및 OS 개념에 대해 간략하게 설명합니다.

Windows에서 지원되는 디스크 종류는 무엇인가요?

Azure 디스크 및 Azure Files는 지원되는 볼륨 유형이며 Windows Server 컨테이너에서 NTFS 볼륨으로 액세스됩니다.

Linux 및 Windows에서 2세대 VM(가상 머신)을 지원합니까?

2세대 VM은 WS2022용 Linux 및 Windows에서만 지원됩니다. 자세한 내용은 Azure에서 Gen2 VM에 대한 지원을 참조하세요.

Windows 노드를 어떻게 패치하나요?

Windows 노드의 최신 패치를 얻으려면 노드 풀을 업그레이드 하거나 노드 이미지를 업그레이드하면 됩니다. AKS에 있는 노드에서는 Windows 업데이트를 사용할 수 없습니다. AKS는 패치가 가능해지는 즉시 새 노드 풀 이미지를 릴리스하며, 패치 및 핫픽스의 최신 상태를 유지하기 위해 노드 풀을 업그레이드하는 것은 사용자의 책임입니다. 이 패치 프로세스는 Kubernetes 버전이 사용되는 경우에도 적용됩니다. AKS 릴리스 정보는 새 버전을 사용할 수 있는 시기를 나타냅니다. Windows Server 노드 풀을 업그레이드하는 방법에 대한 자세한 내용은 AKS에서 노드 풀 업그레이드를 참조하세요. 노드 이미지 업데이트에만 관심이 있는 경우 AKS 노드 이미지 업그레이드를 참조하세요.

참고 항목

업데이트된 Windows Server 이미지는 노드 풀을 업그레이드 하기 전에 클러스터 업그레이드(컨트롤 플레인 업그레이드)를 수행한 경우에만 사용됩니다.

클라이언트 원본 IP 유지가 지원되나요?

현재 클라이언트 원본 IP 유지는 Windows 노드에서 지원되지 않습니다.

노드당 최대 Pod 수를 변경할 수 있나요?

예. 변경의 의미와 사용 가능한 옵션은 최대 Pod 수를 참조하세요.

Windows OS의 기본 TCP 시간 제한은 무엇인가요?

Windows OS의 기본 TCP 시간 제한은 4분입니다. 이 값은 구성할 수 없습니다. 애플리케이션이 더 긴 시간 제한을 사용하는 경우 동일한 노드의 서로 다른 컨테이너 간의 TCP 연결은 4분 후에 닫힙니다.

새 Windows 에이전트 풀을 만들려고 할 때 오류가 표시되는 이유는 무엇인가요?

2020년 2월 이전에 클러스터를 만들었고 클러스터 업그레이드 작업을 한 번도 수행하지 않은 경우 클러스터는 여전히 이전 Windows 이미지를 사용합니다. 다음과 유사한 오류가 나타날 수 있습니다.

"배포 템플릿에서 참조되는 다음 이미지 목록을 찾을 수 없습니다. 게시자: MicrosoftWindowsServer, 제안: WindowsServer, Sku: 2019-datacenter-core-smalldisk-2004, 버전: latest. 사용 가능한 이미지를 찾는 방법에 대한 지침은 Azure PowerShell을 사용하여 Azure Marketplace VM 이미지 찾기 및 사용을 참조하세요.

이 오류를 해결하려면

  1. 클러스터 컨트롤 플레인을 업그레이드하여 이미지 제품 및 게시자를 업데이트합니다.
  2. 새로운 Windows 에이전트 풀을 만듭니다.
  3. 기존 Windows 에이전트 풀에서 새로운 Windows 에이전트 풀로 Windows Pod를 이동합니다.
  4. 이전의 Windows 에이전트 풀을 삭제합니다.

새 Windows pod를 배포하려고 할 때 오류가 표시되는 이유는 무엇인가요?

--max-pods만들려는 Pod 수보다 작은 값을 지정하면No available addresses 오류가 표시 될 수 있습니다.

이 오류를 해결하려면 az aks nodepool add충분한 값이 있는 명령--max-pods을 사용합니다.

az aks nodepool add \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --name $NODEPOOL_NAME \
    --max-pods 3

자세한 내용은 --max-pods문서를 참조하세요.

내 VM 노드에 "sshd"라는 예기치 않은 사용자가 있는 이유는 무엇인가요?

AKS는 OpenSSH 서비스를 설치할 때 "sshd"라는 사용자를 추가합니다. 이 사용자는 악의적이지 않습니다. 예기치 않은 사용자 계정을 무시하도록 경고를 업데이트하는 것이 좋습니다.

내 Windows 노드 풀에 대한 서비스 주체를 어떻게 회전하나요?

Windows 노드 풀은 서비스 주체 회전을 지원하지 않습니다. 서비스 주체를 업데이트하려면 새로운 Windows 노드 풀을 만들고 Pod를 이전 풀에서 새로운 풀로 마이그레이션합니다. Pod를 새 풀로 마이그레이션한 후에는 이전 노드 풀을 삭제합니다.

서비스 주체 대신, 기본적으로 서비스 사용자와 관련된 래퍼로 관리 ID를 사용합니다. 자세한 내용은 Azure Kubernetes Service에서 관리 ID 사용을 참조하세요.

내 클러스터에서 Windows Server 노드의 관리자 암호를 어떻게 변경하나요?

AKS 클러스터를 만들 때 --windows-admin-password--windows-admin-username 매개 변수를 지정하여 클러스터의 모든 Windows Server 노드에 대한 관리자 자격 증명을 설정합니다. 관리자 자격 증명을 지정하지 않은 경우, 가령 Azure Portal을 사용해 클러스터를 만들었거나 Azure CLI를 사용해 --vm-set-type VirtualMachineScaleSets--network-plugin azure를 설정한 경우, 사용자 이름은 기본값으로 azureuser로 설정되고 임의 암호가 생성됩니다.

관리자 암호를 변경하려면 az aks update 명령을 사용합니다.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --windows-admin-password $NEW_PW

Important

az aks update 작업을 수행하면 모든 Windows Server 노드 풀이 업그레이드됩니다. Linux 노드 풀에는 영향을 주지 않습니다.

--windows-admin-password를 변경하는 경우, 새 암호는 14자 이상이어야 하며 Windows Server 암호 요구 사항을 충족해야 합니다.

얼마나 많은 노드 풀을 만들 수 있습니까?

Windows 노드 풀이 있는 AKS 클러스터에는 AKS 서비스에 대해 지정된 기본값과 다른 AKS 리소스 제한이 없습니다. 자세한 내용은 AKS(Azure Kubernetes Service)의 할당량, 가상 머신 크기 제한 및 지역 가용성을 참조하세요

Windows 노드 풀에 어떤 이름을 붙일 수 있나요?

Windows 노드 풀에는 6자 이름이 있을 수 있습니다.

Windows 노드에서 모든 기능이 지원되나요?

Kubenet는 현재 Windows 노드에서 지원되지 않습니다.

Windows 노드에서 수신 컨트롤러를 실행할 수 있나요?

예, Windows Server 컨테이너를 지원하는 수신 컨트롤러는 AKS의 Windows 노드에서 실행할 수 있습니다.

내 Windows Server 컨테이너에서 gMSA를 사용할 수 있나요?

일반적으로 gMSA(그룹 관리 서비스 계정) 지원은 AKS에서 Windows에 사용할 수 있습니다. AKS(Azure Kubernetes Service) 클러스터의 Windows Server 노드에 대해 GMSA(그룹 관리 서비스 계정) 사용을 참조하세요.

Windows 노드 및 컨테이너가 있는 컨테이너에 Azure Monitor를 사용할 수 있나요?

예, 가능합니다. 하지만 Azure Monitor는 Windows 컨테이너에서 로그(stdout, stderr) 및 메트릭을 수집하기 위한 퍼블릭 미리 보기로 제공됩니다. Windows 컨테이너에서 stdout 로그의 라이브 스트림에 연결할 수도 있습니다.

Windows 노드가 있는 클러스터의 서비스 수에 제한이 있나요?

Windows 노드가 있는 클러스터는 포트 소모가 발생하기 전까지 약 500개(혹은 그 이하)의 서비스를 사용할 수 있습니다. 이 제한은 외부 트래픽 정책이 "클러스터"로 설정된 Kubernetes Service에 적용됩니다.

서비스의 외부 트래픽 정책이 클러스터로 구성된 경우 트래픽은 노드에서 추가 원본 NAT를 거치며 이로 인해 TCPIP 동적 포트 풀에서 포트가 예약됩니다. 이 포트 풀은 제한된 리소스(기본적으로 최대 16K 포트)이며 서비스에 대한 많은 활성 연결로 인해 동적 포트 풀이 고갈되어 연결이 끊어질 수 있습니다.

외부 트래픽 정책을 "로컬"로 설정하여 Kubernetes Service를 구성한 경우 포트 소모 문제는 500개 서비스에서 발생하지 않을 수 있습니다.

Windows 노드에서 Azure 하이브리드 혜택을 사용할 수 있나요?

예. Windows Server용 Azure 하이브리드 혜택은 온-프레미스 Windows Server 라이선스를 AKS Windows 노드로 가져올 수 있도록 하여 운영 비용을 절감합니다.

Azure 하이브리드 혜택은 전체 AKS 클러스터, 또는 개별 노드에서 사용할 수 있습니다. 개별 노드의 경우 노드 리소스 그룹으로 이동하여 노드에 Azure 하이브리드 혜택을 직접 적용해야 합니다. 개별 노드에 Azure 하이브리드 혜택을 적용하는 자세한 정보는 Windows Server용 Azure 하이브리드 혜택을 참조하세요.

새로운 AKS 클러스터에서 Azure 하이브리드 혜택을 사용하려면 az aks create 명령을 실행하고 --enable-ahub 인수를 사용합니다.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-sku Standard \
    --windows-admin-password 'Password1234$' \
    --windows-admin-username azure \
    --network-plugin azure
    --enable-ahub

기존 AKS 클러스터에서 Azure 하이브리드 혜택을 사용하려면 az aks update 명령을 실행하고 --enable-ahub 인수를 사용하여 클러스터를 업데이트합니다.

az aks update \
    --resource-group myResourceGroup
    --name myAKSCluster
    --enable-ahub

클러스터의 Windows 노드에서 Azure 하이브리드 혜택이 설정되어 있는지 확인하려면 --name--resource-group 인수로 az vmss show 명령을 실행하여 가상 머신 확장 집합을 쿼리합니다. Windows 노드 풀에 대한 확장 집합이 만들어지는 리소스 그룹을 식별하려면 az vmss list -o table 명령을 실행할 수 있습니다.

az vmss show --name myScaleSet --resource-group MC_<resourceGroup>_<clusterName>_<region>

확장 집합의 Windows 노드에서 Azure 하이브리드 혜택이 사용하도록 설정된 경우 az vmss show의 출력은 다음과 유사합니다.

""hardwareProfile": null,
    "licenseType": "Windows_Server",
    "networkProfile": {
      "healthProbe": null,
      "networkApiVersion": null,

실행 중인 컨테이너의 표준 시간대를 어떻게 변경하나요?

실행 중인 Windows Server 컨테이너의 표준 시간대를 변경하려면 PowerShell 세션을 사용하여 실행 중인 컨테이너에 연결합니다. 예시:

kubectl exec -it CONTAINER-NAME -- powershell

실행 중인 컨테이너에서 Set-TimeZone을 사용하여 실행 중인 컨테이너의 표준 시간대를 설정합니다. 예시:

Set-TimeZone -Id "Russian Standard Time"

실행 중인 컨테이너 또는 사용 가능한 표준 시간대 목록의 현재 표준 시간대를 확인하려면 Get-TimeZone을 사용합니다.

클라이언트 연결에서 Windows 컨테이너가 있는 Pod에 대한 세션 선호도를 유지할 수 있나요?

클라이언트 연결에서 Windows 컨테이너가 있는 Pod에 대한 세션 선호도는 Windows Server 2022 OS 버전에서 지원되지만, 노드당 단일 인스턴스를 실행하도록 원하는 Pod를 제한하고 로컬 노드의 Pod로 트래픽을 전송하도록 Kubernetes 서비스를 구성하여 현재 클라이언트 IP에서 세션 선호도를 충족합니다.

다음 구성을 사용합니다.

  1. 최소 버전 1.20을 실행하는 AKS 클러스터를 사용합니다.
  2. Windows 노드당 하나의 인스턴스만 허용하도록 Pod를 제한합니다. 배포 구성에서 선호도 방지를 사용하여 이 작업을 수행할 수 있습니다.
  3. Kubernetes 서비스 구성에서 externalTrafficPolicy=Local을 설정합니다. 이렇게 하면 Kubernetes 서비스가 로컬 노드 내의 Pod로만 트래픽을 전달합니다.
  4. Kubernetes 서비스 구성에서 sessionAffinity: ClientIP를 설정합니다. 이렇게 하면 Azure Load Balancer가 세션 선호도로 구성됩니다.

다음 단계

AKS에서 Windows Server 컨테이너를 시작하려면 AKS에서 Windows server를 실행 하는 노드 풀을 만듭니다.