다음을 통해 공유


AKS(Azure Kubernetes Service) Windows 워크로드용 OS 버전 업그레이드

AKS(Azure Kubernetes Service)에서 실행 중인 Windows 워크로드의 OS 버전을 업그레이드하는 경우 새 노드 풀을 배포하여 각 노드 풀에서 Windows 버전이 일치하는지 확인해야 합니다. 이 문서에서는 AKS에서 Windows 워크로드의 OS 버전을 업그레이드하는 단계를 설명합니다. 이 예제에서는 Windows Server 2019에서 Windows Server 2022로 업그레이드하는 데 중점을 두고 있지만 동일한 프로세스를 따라 모든 Windows Server 버전에서 다른 버전으로 업그레이드할 수 있습니다.

Windows Server OS 버전 지원

새 버전의 Windows Server 운영 체제가 릴리스되면 AKS는 이를 지원하고, 최신 버전으로 업그레이드하여 수정 사항, 개선 사항 및 새 기능을 활용하는 것이 좋습니다. AKS는 Windows Server 2022부터 모든 Windows Server 버전에 대해 5년 간의 지원 수명 주기를 제공합니다. 이 기간 동안 AKS는 업그레이드할 수 있도록 최신 버전의 Windows Server OS를 지원하는 새 버전을 릴리스합니다.

참고 항목

  • Windows Server 2019는 Kubernetes 버전 1.32가 EOL(수명 종료)에 도달하면 사용 중지될 예정입니다. 자세한 내용은 AKS 릴리스 정보를 참조하세요.
  • Windows Server 2022는 Kubernetes 버전 1.34가 EOL(수명 종료)에 도달하면 사용 중지될 예정입니다. 자세한 내용은 AKS 릴리스 정보를 참조하세요.

제한 사항

Windows Server 2019 및 Windows Server 2022는 AKS의 동일한 노드 풀에 공존할 수 없습니다. 새 OS 버전을 호스팅하려면 새 노드 풀을 만들어야 합니다. 이전 노드 풀의 사용 권한 및 액세스 권한을 새 노드 풀과 일치시키는 것이 중요합니다.

시작하기 전에

  • Dockerfile의 FROM 문을 새 OS 버전으로 업데이트합니다.
  • 애플리케이션을 확인하고 컨테이너 앱이 새 OS 버전에서 작동하는지 확인합니다.
  • AKS에서 확인된 컨테이너 앱을 개발 또는 테스트 환경에 배포합니다.
  • 이 문서에서 사용할 새 이미지 이름이나 태그를 기록해 두세요.

참고 항목

Windows 워크로드의 Dockerfile을 빌드하는 방법을 알아보려면 Windows의 DockerfileWindows Dockerfile 최적화를 참조하세요.

기존 클러스터에 Windows Server 2022 노드 풀 추가

YAML 파일 업데이트

노드 선택기는 Windows 노드에 Windows Pod를 배치하는 데 가장 일반적이며 권장되는 옵션입니다.

  1. 다음 주석을 추가하여 YAML 파일에 노드 선택기를 추가합니다.

          nodeSelector:
            "kubernetes.io/os": windows
    

    주석은 사용 가능한 Windows 노드를 찾아 해당 노드에 Pod를 배치합니다(다른 모든 예약 규칙에 따라). Windows Server 2019에서 Windows Server 2022로 업그레이드하는 경우 Windows 노드와 최신 OS 버전을 실행하는 노드에 배치를 적용해야 합니다. 이를 수행하기 위해 한 가지 옵션은 다른 주석을 사용하는 것입니다.

          nodeSelector:
            "kubernetes.azure.com/os-sku": Windows2022
    
  2. YAML 파일에서 nodeSelector를 업데이트한 후에는 사용하려는 컨테이너 이미지도 업데이트해야 합니다. Dockerfile에서 FROM 문을 변경하여 컨테이너화된 애플리케이션의 새 버전을 만든 이전 단계에서 이 정보를 가져올 수 있습니다.

참고 항목

처음에 애플리케이션을 배포하는 데 사용한 것과 동일한 YAML 파일을 사용해야 합니다. 이렇게 하면 nodeSelector 및 컨테이너 이미지 외에 다른 구성이 변경되지 않습니다.

업데이트된 YAML 파일을 기존 워크로드에 적용

  1. kubectl get nodes 명령을 사용하여 클러스터의 노드를 봅니다.

    kubectl get nodes -o wide
    

    다음 출력 예는 만든 새 노드 풀과 기존 노드 풀을 포함하여 클러스터의 모든 노드를 보여 줍니다.

    NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
    aks-agentpool-18877473-vmss000000   Ready    agent   5h40m   v1.23.8   10.240.0.4     <none>        Ubuntu 18.04.6 LTS               5.4.0-1085-azure   containerd://1.5.11+azure-2
    akspoolws000000                     Ready    agent   3h15m   v1.23.8   10.240.0.208   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000001                     Ready    agent   3h17m   v1.23.8   10.240.0.239   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000002                     Ready    agent   3h17m   v1.23.8   10.240.1.14    <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akswspool000000                     Ready    agent   5h37m   v1.23.8   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    akswspool000001                     Ready    agent   5h37m   v1.23.8   10.240.0.146   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    akswspool000002                     Ready    agent   5h37m   v1.23.8   10.240.0.177   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    
  2. kubectl apply 명령을 사용하여 업데이트된 YAML 파일을 기존 워크로드에 적용하고 YAML 파일의 이름을 지정합니다.

    kubectl apply -f <filename>
    

    다음 출력 예는 배포에 대한 구성된 상태를 보여 줍니다.

    deployment.apps/sample configured
    service/sample unchanged
    

    이 시점에, AKS는 기존 Pod를 종료하고 Windows Server 2022 노드에 새 Pod를 배포하는 프로세스를 시작합니다.

  3. kubectl get pods 명령을 사용하여 배포 상태를 확인합니다.

    kubectl get pods -o wide
    

    다음 출력 예는 default 네임스페이스의 Pod를 보여 줍니다.

    NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE              NOMINATED NODE   READINESS GATES
    sample-7794bfcc4c-k62cq   1/1     Running   0          2m49s   10.240.0.238   akspoolws000000   <none>           <none>
    sample-7794bfcc4c-rswq9   1/1     Running   0          2m49s   10.240.1.10    akspoolws000001   <none>           <none>
    sample-7794bfcc4c-sh78c   1/1     Running   0          2m49s   10.240.0.228   akspoolws000000   <none>           <none>
    

보안 및 인증 고려 사항

gMSA(그룹 관리 서비스 계정)를 사용하는 경우 새 노드 풀에 대한 관리 ID 구성을 업데이트해야 합니다. gMSA는 Windows Pod를 실행하는 노드가 Microsoft Entra ID에 대해 컨테이너를 인증할 수 있도록 비밀(사용자 계정 및 비밀)을 사용합니다. Azure Key Vault에서 해당 비밀에 액세스하기 위해 노드는 노드가 리소스에 액세스할 수 있도록 하는 관리 ID를 사용합니다. 관리 ID는 노드 풀별로 구성되고 Pod는 이제 새 노드 풀에 있으므로 해당 구성을 업데이트해야 합니다. 자세한 내용은 AKS(Azure Kubernetes Service) 클러스터의 Windows Server 노드에 대해 GMSA(그룹 관리 서비스 계정) 사용을 참조하세요.

다른 Azure 리소스에 액세스할 때 다른 Pod 또는 노드 풀에 대한 관리 ID에도 동일한 원칙이 적용됩니다. 새 노드 풀을 반영하도록 관리 ID가 제공하는 모든 액세스를 업데이트해야 합니다. 업데이트 및 로그인 활동을 보려면 관리 ID 활동을 보는 방법을 참조하세요.

다음 단계

이 문서에서는 AKS에서 Windows 워크로드용 OS 버전을 업그레이드하는 방법을 알아보았습니다. AKS의 Windows 워크로드에 대해 자세히 알아보려면 AKS(Azure Kubernetes Service)에 Windows 컨테이너 애플리케이션 배포를 참조하세요.