자습서 - AKS(Azure Kubernetes Service) 클러스터 업그레이드

애플리케이션 및 클러스터 수명 주기의 일부로, 사용 가능한 최신 버전의 Kubernetes로 업그레이드할 수 있습니다. Azure CLI, Azure PowerShell 또는 Azure Portal을 사용하여 AKS(Azure Kubernetes Service) 클러스터를 업그레이드할 수 있습니다.

7부 중 마지막 부분인 이 자습서에서는 AKS 클러스터를 업그레이드합니다. 다음 방법에 대해 설명합니다.

  • 현재 및 사용 가능한 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.26.6으로 표시하고 사용 가능한 버전을 upgrades 아래에 나열합니다.

    {
      "agentPoolProfiles": null,
      "controlPlaneProfile": {
        "kubernetesVersion": "1.26.6",
        ...
        "upgrades": [
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.1"
          },
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.3"
          }
        ]
      },
      ...
    }
    

AKS 클러스터 업그레이드

AKS 노드는 실행 중인 애플리케이션에 대한 잠재적인 중단을 최소화하기 위해 신중하게 차단 및 드레이닝됩니다. 이 프로세스 중에 AKS에서 다음 단계를 수행합니다.

  • 지정된 Kubernetes 버전을 실행하는 클러스터에 새 버퍼 노드(또는 최대 서지로 구성된 노드)를 추가합니다.
  • 실행 중인 애플리케이션의 중단을 최소화하기 위해 이전 노드 중 하나를 차단 및 드레이닝합니다. 최대 서지를 사용하는 경우 지정된 버퍼 노드 수만큼 많은 노드를 동시에 차단 및 드레이닝합니다.
  • 이전 노드가 완전히 드레이닝되면 새 버전을 받기 위해 이미지로 다시 설치되고 업그레이드할 다음 노드의 버퍼 노드가 됩니다.
  • 이 프로세스는 클러스터의 모든 노드가 업그레이드될 때까지 반복됩니다.
  • 프로세스가 끝나면 마지막 버퍼 노드가 삭제되어 기존 에이전트 노드 수와 영역 잔량이 유지됩니다.

참고 항목

패치가 지정되지 않은 경우 클러스터는 지정된 부 버전의 최신 GA 패치로 자동 업그레이드됩니다. 예를 들어, --kubernetes-version1.21로 설정하면 클러스터가 1.21.9로 업그레이드됩니다.

자세한 내용은 AKS에서 지원되는 Kubernetes 부 버전 업그레이드를 참조하세요.

클러스터를 수동으로 업그레이드하거나 자동 클러스터 업그레이드를 구성할 수 있습니다. 클러스터가 항상 최신 버전의 Kubernetes를 실행하도록 자동 클러스터 업그레이드를 구성하는 것이 좋습니다.

클러스터 수동 업그레이드

  • 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.27.3으로 업그레이드한 결과를 보여 줍니다. 이제 kubernetesVersion1.27.3이 표시됩니다.

    {
      "agentPoolProfiles": [
        {
          "count": 3,
          "maxPods": 110,
          "name": "nodepool1",
          "osType": "Linux",
          "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.27.3",
      "location": "eastus",
      "name": "myAKSCluster",
      "type": "Microsoft.ContainerService/ManagedClusters"
    }
    

클러스터 자동 업그레이드 구성

  • patch로 설정된 --auto-upgrade-channel 매개 변수와 함께 az aks update 명령을 사용하여 클러스터에서 자동 업그레이드 채널을 설정합니다.

    az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel patch
    

자세한 내용은 AKS(Azure Kubernetes Service) 클러스터 자동 업그레이드를 참조하세요.

AKS 노드 이미지 업그레이드

AKS는 새 노드 이미지를 정기적으로 제공합니다. Linux 노드 이미지는 매주 업데이트되고 Windows 노드 이미지는 매월 업데이트됩니다. 최신 AKS 기능과 보안 업데이트를 사용하려면 노드 이미지를 자주 업그레이드하는 것이 좋습니다. 자세한 내용은 AKS(Azure Kubernetes Service) 노드 이미지 업그레이드를 참조하세요. 노드 이미지 자동 업그레이드를 구성하려면 AKS(Azure Kubernetes Service) 클러스터 노드 운영 체제 이미지 자동 업그레이드를 참조하세요.

업그레이드 이벤트 보기

참고 항목

클러스터를 업그레이드할 때 다음과 같은 Kubernetes 이벤트가 노드에서 발생할 수 있습니다.

  • 서지: 서지 노드를 만듭니다.
  • 드레이닝: 노드에서 Pod를 제거합니다. 각 Pod는 5분의 시간 제한 안에 제거를 완료해야 합니다.
  • 업데이트: 노드 업데이트가 성공했거나 실패했습니다.
  • 삭제: 서지 노드를 삭제합니다.
  • kubectl get events 명령을 사용하여 기본 네임스페이스에서 업그레이드 이벤트를 확인합니다.

    kubectl get events --field-selector source=upgrader
    

    다음 예제 출력은 업그레이드 중에 발생하는 상기 이벤트 중 일부를 보여 줍니다.

    ...
    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.27.3을 실행하는 경우를 보여 줍니다.

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.27.3               1.27.3                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

클러스터 삭제

이 자습서는 시리즈 마지막 부분이므로, Azure 요금이 발생하지 않도록 AKS 클러스터를 삭제하는 것이 좋습니다.

  • az group delete 명령을 사용하여 리소스 그룹, 컨테이너 서비스 및 모든 관련 리소스를 제거합니다.

    az group delete --name myResourceGroup --yes --no-wait
    

참고 항목

클러스터를 삭제해도 AKS 클러스터에서 사용하는 Microsoft Entra 서비스 주체는 제거되지 않습니다. 서비스 주체를 제거하는 방법에 대한 단계는 AKS 서비스 주체 고려 사항 및 삭제를 참조하세요. 관리 ID를 사용한 경우 ID는 플랫폼에서 관리되므로 비밀을 프로비전하거나 회전할 필요가 없습니다.

다음 단계

이 자습서에서는 AKS 클러스터에서 Kubernetes를 업그레이드했습니다. 다음 방법에 대해 알아보았습니다.

  • 현재 및 사용 가능한 Kubernetes 버전을 확인합니다.
  • Kubernetes 노드를 업그레이드합니다.
  • 성공적인 업그레이드의 유효성을 검사합니다.

AKS에 대한 자세한 내용은 AKS 개요를 참조하세요. AKS로 전체 솔루션을 만드는 방법에 대한 참고 자료는 AKS 솔루션 참고 자료를 참조하세요.