자습서: AKS(Azure Kubernetes Service)에서 Kubernetes 업그레이드
애플리케이션 및 클러스터 수명 주기의 일부로 사용 가능한 최신 버전의 Kubernetes로 업그레이드할 수 있습니다. Azure CLI, Azure PowerShell 또는 Azure Portal 사용하여 AKS(Azure Kubernetes Service) 클러스터를 업그레이드할 수 있습니다.
7부 중 마지막인 이 자습서에서는 다음과 같은 방법에 대해 알아봅니다.
- 현재 및 사용 가능한 Kubernetes 버전을 확인합니다.
- Kubernetes 노드를 업그레이드합니다.
- 성공적인 업그레이드의 유효성을 검사합니다.
시작하기 전에
이전 자습서에서는 애플리케이션을 컨테이너 이미지에 패키지하고 컨테이너 이미지를 ACR(Azure Container Registry)에 업로드했습니다. 또한 AKS 클러스터를 만들고 애플리케이션을 배포했습니다. 이러한 단계를 완료하지 않았고 이 자습서와 함께 수행하려는 경우 자습서 1: AKS용 애플리케이션 준비로 시작합니다.
- Azure CLI를 사용하는 경우 이 자습서에는 Azure CLI 버전 2.34.1 이상이 필요합니다.
az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요. - Azure PowerShell 사용하는 경우 이 자습서에는 Azure PowerShell 버전 5.9.0 이상이 필요합니다.
Get-InstalledModule -Name Az
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure PowerShell 설치를 참조하세요.
사용 가능한 클러스터 버전 가져오기
업그레이드하기 전에 명령을 사용하여
az aks get-upgrades
클러스터에 사용할 수 있는 Kubernetes 릴리스를 검사.az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
다음 예제 출력은 현재 버전을 1.18.10 으로 표시하고 업그레이드에서 사용 가능한 버전을 나열 합니다.
{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.18.10", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.19.1" }, { "isPreview": null, "kubernetesVersion": "1.19.3" } ] }, ... }
클러스터 업그레이드
AKS 노드는 실행 중인 애플리케이션에 대한 잠재적인 중단을 최소화하기 위해 신중하게 차단 및 드레이닝됩니다. 이 프로세스 중에 AKS는 다음 단계를 수행합니다.
- 지정된 Kubernetes 버전을 실행하는 클러스터에 새 버퍼 노드(또는 최대 서지로 구성된 노드 수)를 추가합니다.
- 실행 중인 애플리케이션의 중단을 최소화하기 위해 이전 노드 중 하나를 코드 및 드레이닝합니다. 최대 서지를 사용하는 경우 지정된 버퍼 노드 수와 동시에 노드 수를 제한하고 드레 이닝합니다.
- 이전 노드가 완전히 드레이닝되면 새 버전을 수신하도록 이미지화되고 업그레이드할 다음 노드의 버퍼 노드가 됩니다.
- 이 프로세스는 클러스터의 모든 노드가 업그레이드될 때까지 반복됩니다.
- 프로세스가 끝나면 마지막 버퍼 노드가 삭제되어 기존 에이전트 노드 수와 영역 균형이 유지됩니다.
참고
패치가 지정되지 않은 경우 클러스터가 지정된 부 버전의 최신 GA 패치로 자동 업그레이드됩니다. 예를 들어 --kubernetes-version
을 1.21
로 설정하면 클러스터가 1.21.9
로 업그레이드됩니다.
별칭 부 버전으로 업그레이드하는 경우 상위 부 버전만 지원됩니다. 예를 들어 1.20.x
에서 1.20
로 업그레이드하면 최신 GA 1.20
패치로의 업그레이드가 트리거되지 않지만 1.21
로 업그레이드하면 최신 GA 1.21
패치로 업그레이드가 트리거됩니다.
명령을 사용하여 클러스터를 업그레이드합니다
az aks upgrade
.az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version KUBERNETES_VERSION
참고
부 버전을 한 번에 하나씩 업그레이드할 수 있습니다. 예를 들어 1.14.x 에서 1.15.x로 업그레이드할 수 있지만 1.14.x 에서 1.16.x 로 직접 업그레이드할 수는 없습니다. 1.14.x에서 1.16.x로 업그레이드하려면 먼저 1.14.x에서 1.15.x로 업그레이드한 다음 1.15.x에서 1.16.x로의 또 다른 업그레이드까지 수행해야 합니다.
다음 예 출력은 1.19.1로 업그레이드한 결과를 보여 줍니다. 이제 kubernetesVersion에 1.19.1이 표시됩니다.
{ "agentPoolProfiles": [ { "count": 3, "maxPods": 110, "name": "nodepool1", "osType": "Linux", "storageProfile": "ManagedDisks", "vmSize": "Standard_DS1_v2", } ], "dnsPrefix": "myAKSClust-myResourceGroup-19da35", "enableRbac": false, "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io", "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster", "kubernetesVersion": "1.19.1", "location": "eastus", "name": "myAKSCluster", "type": "Microsoft.ContainerService/ManagedClusters" }
업그레이드 이벤트 보기
참고
클러스터를 업그레이드할 때 노드에서 다음과 같은 Kubernetes 이벤트가 발생할 수 있습니다.
- 서지: 서지 노드를 만듭니다.
- 드레이닝: 노드에서 Pod를 제거합니다. 각 Pod에는 제거를 완료하는 데 5분의 시간 제한이 있습니다.
- 업데이트: 노드 업데이트가 성공했거나 실패했습니다.
- 삭제: 서지 노드를 삭제합니다.
명령을 사용하여 기본 네임스페이스에서 업그레이드 이벤트를 봅니다
kubectl get events
.kubectl get events
다음 예제 출력은 업그레이드 중에 나열된 위의 이벤트 중 일부를 보여 줍니다.
... default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001] ... default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool %!s(MISSING) ...
업그레이드 유효성 검사
명령을 사용하여 업그레이드가 성공했는지 확인합니다
az aks show
.az aks show --resource-group myResourceGroup --name myAKSCluster --output table
다음 예제 출력에서는 AKS 클러스터에서 KubernetesVersion 1.19.1을 실행하는 것을 보여줍니다.
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------------ ------------------- ---------------------------------------------------------------- myAKSCluster eastus myResourceGroup 1.19.1 1.19.1 Succeeded myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
클러스터 삭제
이 자습서는 시리즈의 마지막 부분이므로 AKS 클러스터를 삭제하는 것이 좋습니다. Kubernetes 노드는 Azure Virtual Machines에서 실행되며 클러스터를 사용하지 않는 경우에도 요금이 계속 부과됩니다.
명령을 사용하여 리소스 그룹, 컨테이너 서비스 및 모든 관련 리소스를
az group delete
제거합니다.az group delete --name myResourceGroup --yes --no-wait
참고
클러스터를 삭제하면 AKS 클러스터에서 사용하는 azure Active Directory(Azure AD) 서비스 주체가 제거되지 않습니다. 서비스 주체를 제거하는 방법에 대한 단계는 AKS 서비스 주체 고려 사항 및 삭제를 참조하세요. 관리 ID를 사용한 경우 ID는 플랫폼에서 관리되며 비밀을 프로비전하거나 회전할 필요가 없습니다.
다음 단계
이 자습서에서는 AKS 클러스터에서 Kubernetes를 업그레이드했습니다. 구체적으로 다음 작업 방법을 알아보았습니다.
- 현재 및 사용 가능한 Kubernetes 버전을 확인합니다.
- Kubernetes 노드를 업그레이드합니다.
- 성공적인 업그레이드의 유효성을 검사합니다.
AKS에 대한 자세한 내용은 AKS 개요를 참조하세요. AKS를 사용하여 전체 솔루션을 만드는 방법에 대한 지침은 AKS 솔루션 지침을 참조하세요.