다음을 통해 공유


API 호환성이 손상되는 변경에서 AKS(Azure Kubernetes Service) 클러스터 업그레이드를 자동으로 중지

이 문서에서는 API 호환성이 손상되는 변경에서 AKS(Azure Kubernetes Service) 클러스터 업그레이드를 자동으로 중지하는 방법을 보여 줍니다.

개요

지원되는 Kubernetes 버전 내에서 유지하려면 클러스터를 일년에 한 번 이상 업그레이드하고 가능한 모든 중단에 대비해야 합니다. 이러한 중단에는 API 호환성이 손상되는 변경, 사용 중단, Helm 및 CSI(Container Storage Interface)와 같은 종속성으로 인한 중단이 포함됩니다. 가동 중지 시간 없이 이러한 중단을 예상하고 중요한 워크로드를 마이그레이션하는 것은 어려울 수 있습니다.

더 이상 사용되지 않는 API를 사용한 부 버전 변경으로 구성된 업그레이드 작업을 자동으로 중지하고 문제에 대해 경고하도록 AKS 클러스터를 구성할 수 있습니다. 이 기능은 예기치 못한 중단을 방지하고 업그레이드를 진행하기 전에 더 이상 사용되지 않는 API를 해결할 시간을 제공합니다.

시작하기 전에

시작하기 전에 다음 필수 조건을 충족하는지 확인합니다.

  • 업그레이드 작업은 클러스터 컨트롤 플레인에 대한 Kubernetes 부 버전 변경입니다.
  • 업그레이드하는 Kubernetes 버전은 1.26 이상입니다.
  • 업그레이드하려는 대상 버전에 대해 사용되지 않는 API의 마지막으로 확인된 사용량은 업그레이드 작업 전 12시간 이내에 발생해야 합니다. AKS는 시간당 사용량을 기록하므로 1시간 이내에 사용되지 않는 API의 사용량은 검색에 표시되지 않을 수 있습니다.

중지된 업그레이드 작업 완화

필수 구성 요소를 충족하는 경우 업그레이드를 시도하고 다음 예제 오류 메시지와 유사한 오류 메시지를 수신합니다.

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

문제를 완화할 수 있는 두 가지 옵션이 있습니다. 사용되지 않는 API 사용을 제거(권장)하거나 유효성 검사를 무시하여 API 변경 내용을 무시하는 것입니다.

  1. Azure Portal에서 클러스터 리소스로 이동하여 문제 진단 및 해결을 선택합니다.

  2. 만들기, 업그레이드, 삭제 및 크기 조정>Kubernetes API 사용 중단을 선택합니다.

    '선택된 Kubernetes API 사용 중단' 섹션을 보여 주는 Azure Portal의 스크린샷.

  3. 마지막으로 사용되지 않는 API 사용량이 표시된 시점으로부터 12시간 정도 기다립니다. 사용되지 않는 API 사용량의 동사를 확인하여 조사식인지 확인합니다. 시계라면 사용량이 0이 될 때까지 기다릴 수 있습니다. (컨테이너 인사이트를 사용하도록 설정하고 kube 감사 로그를 탐색하여 과거 API 사용량을 확인할 수도 있습니다.)

  4. 클러스터 업그레이드를 다시 시도합니다.

유효성 검사를 바이패스하여 API 변경 내용 무시

참고 항목

이 방법을 사용하려면 Azure CLI 버전 2.57 이상을 사용해야 합니다. 미리 보기 CLI 확장이 설치된 경우 버전 3.0.0b10 이상으로 업데이트해야 합니다. 대상 Kubernetes 버전에서 더 이상 사용되지 않는 API가 장기적으로 작동하지 않을 수 있으므로 이 방법은 권장되지 않습니다. 업그레이드가 완료된 후 가능한 한 빨리 제거하는 것이 좋습니다.

  1. 유효성 검사를 우회하여 API 호환성이 손상되는 변경 내용을 무시하고 업그레이드를 호출합니다. enable-force-upgrade 플래그를 지정하고 upgrade-override-until 속성을 설정하여 유효성 검사가 무시되는 기간의 끝을 정의합니다. 값이 설정되지 않으면 기간이 현재 시간에서 3일 후로 기본 설정됩니다. 지정한 날짜와 시간은 미래여야 합니다.

    az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    참고 항목

    Z는 'Zulu' 시간이라고도 하는 UTC/GMT 오프셋 0에 대한 영역 지정자입니다. 이 예제에서는 기간 끝을 13:00:00 GMT로 설정합니다. 자세한 내용은 결합된 날짜 및 시간 표현을 참조하세요.

다음 단계

이 문서에서는 API 호환성이 손상되는 변경에서 AKS 클러스터 업그레이드를 자동으로 중지하는 방법을 보여 줍니다. AKS 클러스터에 대한 업그레이드 옵션에 대한 자세한 내용은 AKS(Azure Kubernetes Service) 클러스터에 대한 업그레이드 옵션을 참조하세요.