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의 Dockerfile 및 Windows Dockerfile 최적화를 참조하세요.
기존 클러스터에 Windows Server 2022 노드 풀 추가
- 기존 클러스터에 Windows Server 2022 노드 풀을 추가합니다.
YAML 파일 업데이트
노드 선택기는 Windows 노드에 Windows Pod를 배치하는 데 가장 일반적이며 권장되는 옵션입니다.
다음 주석을 추가하여 YAML 파일에 노드 선택기를 추가합니다.
nodeSelector: "kubernetes.io/os": windows
주석은 사용 가능한 Windows 노드를 찾아 해당 노드에 Pod를 배치합니다(다른 모든 예약 규칙에 따라). Windows Server 2019에서 Windows Server 2022로 업그레이드하는 경우 Windows 노드와 최신 OS 버전을 실행하는 노드에 배치를 적용해야 합니다. 이를 수행하기 위해 한 가지 옵션은 다른 주석을 사용하는 것입니다.
nodeSelector: "kubernetes.azure.com/os-sku": Windows2022
YAML 파일에서
nodeSelector
를 업데이트한 후에는 사용하려는 컨테이너 이미지도 업데이트해야 합니다. Dockerfile에서FROM
문을 변경하여 컨테이너화된 애플리케이션의 새 버전을 만든 이전 단계에서 이 정보를 가져올 수 있습니다.
참고 항목
처음에 애플리케이션을 배포하는 데 사용한 것과 동일한 YAML 파일을 사용해야 합니다. 이렇게 하면 nodeSelector
및 컨테이너 이미지 외에 다른 구성이 변경되지 않습니다.
업데이트된 YAML 파일을 기존 워크로드에 적용
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
kubectl apply
명령을 사용하여 업데이트된 YAML 파일을 기존 워크로드에 적용하고 YAML 파일의 이름을 지정합니다.kubectl apply -f <filename>
다음 출력 예는 배포에 대한 구성된 상태를 보여 줍니다.
deployment.apps/sample configured service/sample unchanged
이 시점에, AKS는 기존 Pod를 종료하고 Windows Server 2022 노드에 새 Pod를 배포하는 프로세스를 시작합니다.
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 컨테이너 애플리케이션 배포를 참조하세요.
Azure Kubernetes Service