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

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

이 자습서에서는 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 설치를 참조하세요.

AKS 클러스터를 업그레이드하려면 Azure Kubernetes Service 기여자 역할 또는 동등한 권한이 필요합니다.

업그레이드하기 전에 AKS 릴리스 정보를 검토하여 주요 변경 내용 및 사용되지 않는 API를 확인합니다. 또한 워크로드의 PDB(Pod 중단 예산), 가용 컴퓨팅 할당량, 그리고 증설 노드용 서브넷의 IP 용량도 확인하세요. 자세한 내용은 AKS 클러스터에 대한 업그레이드 옵션 및 권장 사항을 참조하세요.

Azure CLI 사용하여 사용 가능한 클러스터 버전 가져오기

업그레이드하기 전에 az aks get-upgrades 명령을 사용하여 클러스터에서 사용 가능한 Kubernetes 릴리스를 확인하세요.

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

다음 예제 출력은 클러스터의 현재 버전을 보여 하며 아래의 최신 버전을 upgrades나열합니다.

  {
    "agentPoolProfiles": null,
    "controlPlaneProfile": {
      "kubernetesVersion": "1.33.7",
      ...
      "upgrades": [
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.10"
        },
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.9"
        }
      ]
    },
    ...
  }

Azure PowerShell 사용하여 사용 가능한 클러스터 버전 가져오기

  1. 업그레이드하기 전에 cmdlet을 사용하여 Get-AzAksCluster 클러스터의 현재 Kubernetes 버전 및 지역을 확인합니다.

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
      Select-Object -Property Name, CurrentKubernetesVersion, Location
    

    다음 예제 출력은 클러스터의 현재 버전 및 위치를 보여줍니다.

    Name              CurrentKubernetesVersion      Location
    ----              ------------------------      --------
    myAKSCluster      1.33.7                        westus2
    
  2. 클러스터가 있는 리전에서 사용 가능한 Kubernetes 릴리스를 Get-AzAksVersion cmdlet을 사용하여 나열하세요.

    Get-AzAksVersion -Location westus2 | Where-Object OrchestratorVersion
    

    다음 예제 출력은 OrchestratorVersion 아래의 지역별 버전을 보여줍니다.

    Default     IsPreview     OrchestratorType     OrchestratorVersion
    -------     ---------     ----------------     -------------------
                              Kubernetes               1.34.10
                              Kubernetes               1.34.9
    True                      Kubernetes               1.33.7
    ...
    

    잠재적인 업그레이드 대상을 식별하려면 클러스터의 현재 버전보다 최신 버전을 Kubernetes 버전 업그레이드 규칙과 비교합니다. 이 cmdlet은 지역 가용성을 나열하고 특정 클러스터에 대한 업그레이드 경로의 유효성을 검사하지 않습니다.

Azure 포털을 사용하여 사용 가능한 클러스터 버전 가져오기

  1. Azure Portal에 로그인합니다.

  2. AKS 클러스터 리소스로 이동합니다.

  3. 서비스 메뉴의 설정에서 업그레이드를 선택합니다.

  4. Kubernetes 버전별로 업그레이드 버전을 선택합니다.

    Azure Portal의 업그레이드 버전 옵션 스크린샷

  5. Kubernetes 버전 업그레이드 페이지에서 Kubernetes 버전 드롭다운을 선택하여 업그레이드에 사용할 수 있는 Kubernetes 버전을 봅니다.

    사용 가능한 업그레이드 버전이 있는 업그레이드 버전 화면의 스크린샷.

사용 가능한 업그레이드가 없는 경우 클러스터가 이미 사용 가능한 최신 버전에 있거나 클러스터 버전이 지원 창 밖에 있을 수 있습니다. 버전이 지원되지 않고 AKS에서 복구 업그레이드를 제공하지 않는 경우 지원되는 Kubernetes 버전으로 새 클러스터를 만들고 워크로드를 마이그레이션합니다. 자세한 내용은 Kubernetes 버전에 대한 AKS 지원 정책을 참조하세요.

AKS 클러스터 업그레이드 프로세스

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

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

참고

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

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

클러스터를 수동으로 업그레이드하거나 자동 클러스터 업그레이드를 구성할 수 있습니다. 지원되는 Kubernetes 버전에서 클러스터를 유지할 수 있도록 자동 클러스터 업그레이드를 구성합니다.

Azure CLI 사용하여 수동으로 클러스터 업그레이드

명령을 사용하여 클러스터를 업그레이드합니다 az aks upgrade . 이 예제에서는 클러스터를 버전 1.34.10으로 업그레이드합니다.

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.34.10

참고

지원되는 비 LTS 클러스터는 부 버전별로 순차적으로 업그레이드해야 합니다. 예를 들어 1.33.x 에서 1.35.x로 업그레이드하려면 먼저 1.34.x로 업그레이드합니다. 업그레이드가 버전 기울이기 요구 사항 및 유효성 검사에 부합하는 경우 LTS 클러스터는 AKS에서 제공하는 상위 LTS 버전으로 이동할 때 부 버전을 건너뛸 수 있습니다. 자세한 내용은 Kubernetes 버전 업그레이드 규칙을 참조하세요.

다음 예제 출력은 업그레이드 결과를 보여줍니다. 이제 값은 kubernetesVersion 예제 명령에 지정된 버전과 일치합니다.

{
  ...
  "agentPoolProfiles": [
    {
      ...
      "count": 3,
      "currentOrchestratorVersion": "1.34.10",
      "maxPods": 110,
      "name": "nodepool1",
      "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202608.26.0",
      "orchestratorVersion": "1.34.10",
      "osType": "Linux",
      "upgradeSettings": {
        "drainTimeoutInMinutes": null,
        "maxSurge": "10%",
        "nodeSoakDurationInMinutes": null,
        "undrainableNodeBehavior": null
      },
      "vmSize": "Standard_DS2_v2",
      ...
    }
  ],
  ...
  "currentKubernetesVersion": "1.34.10",
  "dnsPrefix": "myAKSClust-myResourceGroup-12ab34",
  "enableRbac": false,
  "fqdn": "myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io",
  "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
  "kubernetesVersion": "1.34.10",
  "location": "westus2",
  "name": "myAKSCluster",
  "type": "Microsoft.ContainerService/ManagedClusters"
  ...
}

Azure PowerShell 사용하여 수동으로 클러스터 업그레이드

Set-AzAksCluster cmdlet을 사용하여 클러스터를 업그레이드하세요. 이 예제에서는 클러스터를 버전 1.34.10으로 업그레이드합니다.

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -KubernetesVersion 1.34.10

참고

지원되는 비 LTS 클러스터는 부 버전별로 순차적으로 업그레이드해야 합니다. 예를 들어 1.33.x 에서 1.35.x로 업그레이드하려면 먼저 1.34.x로 업그레이드합니다. 업그레이드가 버전 기울이기 요구 사항 및 유효성 검사에 부합하는 경우 LTS 클러스터는 AKS에서 제공하는 상위 LTS 버전으로 이동할 때 부 버전을 건너뛸 수 있습니다. 자세한 내용은 Kubernetes 버전 업그레이드 규칙을 참조하세요.

다음 예제 출력은 업그레이드 결과를 보여줍니다. 이제 값은 KubernetesVersion 예제 cmdlet에 지정된 버전과 일치합니다.

...
ProvisioningState        : Succeeded
MaxAgentPools            : 100
KubernetesVersion        : 1.34.10
CurrentKubernetesVersion : 1.34.10
...
ResourceGroupName        : myResourceGroup
Name                     : myAKSCluster
Type                     : Microsoft.ContainerService/ManagedClusters
Location                 : westus2
Tags                     :

Azure 포털을 사용하여 클러스터 수동 업그레이드

  1. Azure Portal에서 AKS 클러스터 리소스로 이동합니다.

  2. 서비스 메뉴의 설정에서 업그레이드를 선택합니다.

  3. Kubernetes 버전별로 업그레이드 버전을 선택합니다.

    Azure Portal의 업그레이드 버전 옵션 스크린샷

  4. Kubernetes 버전 업그레이드 페이지에서 Kubernetes 버전 드롭다운을 선택하여 업그레이드에 사용할 수 있는 Kubernetes 버전을 봅니다.

    사용 가능한 업그레이드 버전이 있는 업그레이드 버전 화면의 스크린샷.

  5. 업그레이드할 Kubernetes 버전을 선택한 다음 저장을 선택합니다.

업그레이드 기간은 노드 수, 서지 설정, 워크로드 중단 제약 조건, 드레이닝 시간 제한 및 노드 흡수 기간과 같은 요인에 따라 달라집니다. 기본 드레이닝 시간 제한은 노드당 30분이며 5분에서 24시간까지 구성할 수 있습니다. 노드 흡수 기간은 노드당 0~30분을 추가할 수 있습니다. 자세한 내용은 노드 풀 급증 및 비가용성 설정 사용자 지정을 참조하세요.

Azure CLI 사용하여 자동 클러스터 업그레이드 구성

Azure PowerShell 사용하여 자동 클러스터 업그레이드 구성

Azure 포털을 사용하여 자동 클러스터 업그레이드 구성

AKS 자동 클러스터는 stable 채널을 사용하므로 채널을 구성할 필요가 없습니다. AKS 표준 클러스터의 경우 버전 정책에 따라 채널을 선택합니다. rapidstable 채널은 Kubernetes 마이너 버전을 업그레이드하고 클러스터를 지원되는 버전 범위 내에 유지하는 데 도움이 됩니다. 채널은 patch 현재 부 버전에 대한 패치만 설치하고 클러스터를 최신 부 버전으로 진행하지 않습니다.

AKS 표준 클러스터에서 명령을 사용하여 az aks update 자동 업그레이드 채널을 설정합니다. 다음 예제에서는 채널을 사용합니다 stable .

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

AKS 표준 클러스터에서 cmdlet을 사용하여 Set-AzAksCluster 자동 업그레이드 채널을 설정합니다. 다음 예제에서는 채널을 사용합니다 Stable .

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -AutoUpgradeChannel Stable
  1. Azure Portal에서 AKS 클러스터 리소스로 이동합니다.

  2. 서비스 메뉴의 설정에서 업그레이드를 선택합니다.

  3. Kubernetes 버전별로 업그레이드 버전을 선택합니다.

    Azure Portal의 업그레이드 버전 옵션 스크린샷

  4. AKS 표준 클러스터의 경우 Kubernetes 버전 업그레이드 페이지에서 자동 업그레이드 드롭다운을 선택하고 안정적으로 사용 설정을 선택한 다음 저장을 선택합니다.

    자동 업그레이드 채널 옵션을 보여 주는 Kubernetes 버전 업그레이드 페이지의 스크린샷

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

노드 이미지 업그레이드

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

업그레이드 이벤트 확인

참고

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

  • 서지: 서지 노드를 만듭니다.
  • 드레이닝: 노드에서 Pod를 제거합니다. AKS를 사용하면 기본적으로 노드를 30분 동안 드레이닝할 수 있습니다. 드레이닝 시간 제한을 5분에서 24시간으로 구성할 수 있습니다.
  • 업데이트: 노드 업데이트가 성공했거나 실패했습니다.
  • 삭제: 서지 노드를 삭제합니다.

kubectl get 필드 선택기에서 명령을 사용하여 기본 네임스페이스에서 AKS 업그레이드기 이벤트를 볼 수 있습니다.

kubectl get events --field-selector source=upgrader

다음 예제 출력은 업그레이드 중에 나열된 이전 이벤트 중 일부를 보여 줍니다.

LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
...
5m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
5m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Deleting node aks-nodepool1-12345678-vmss000000 from API server
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully reimaged node: aks-nodepool1-12345678-vmss000000
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully upgraded node: aks-nodepool1-12345678-vmss000000
4m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
...

Azure CLI 사용하여 업그레이드 유효성 검사

명령을 사용하여 업그레이드가 성공했는지 확인합니다 az aks show .

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

다음 예제 출력은 AKS 클러스터가 대상 Kubernetes 버전을 실행한다는 것을 보여 줍니다.

Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
myAKSCluster  westus2      myResourceGroup  1.34.10              1.34.10                   Succeeded            myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io

Azure PowerShell 사용하여 업그레이드 유효성 검사

Get-AzAksCluster cmdlet을 사용하여 업그레이드가 성공적으로 완료되었는지 확인합니다.

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
  Select-Object -Property Name, Location, KubernetesVersion, ProvisioningState

다음 예제 출력은 AKS 클러스터가 대상 Kubernetes 버전을 실행한다는 것을 보여 줍니다.

Name             Location     KubernetesVersion     ProvisioningState
----             --------     -----------------     -----------------
myAKSCluster     westus2       1.34.10               Succeeded

Azure 포털을 사용하여 업그레이드 유효성 검사

  1. Azure Portal에서 AKS 클러스터 리소스로 이동합니다.
  2. 개요 페이지의 Essentials에서 Kubernetes 버전을 확인하여 업그레이드가 성공했는지 확인합니다.

Azure CLI 사용하여 클러스터 삭제

Azure PowerShell 사용하여 클러스터 삭제

Azure 포털을 사용하여 클러스터 삭제

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

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

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

Remove-AzResourceGroup cmdlet을 사용하여 리소스 그룹, 컨테이너 서비스 및 모든 관련 리소스를 제거합니다.

Remove-AzResourceGroup -Name myResourceGroup
  1. Azure Portal에서 AKS 클러스터 리소스로 이동합니다.
  2. 개요 페이지에서 삭제를 선택합니다.
  3. 클러스터 삭제 확인 페이지에서 삭제를 선택합니다.

참고

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

다음 단계

이 자습서에서는 AKS 클러스터에서 Kubernetes를 업그레이드했습니다. 구체적으로 다음 작업 방법을 알아보았습니다.

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

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