계획된 유지 관리를 사용하여 Azure Kubernetes Service 클러스터에 대한 업그레이드 예약 및 제어

이 문서에서는 계획된 유지 관리를 사용하여 AKS(Azure Kubernetes Service)에서 클러스터 및 노드 이미지 업그레이드를 예약하고 제어하는 방법을 보여 줍니다.

AKS 클러스터에서 정기적으로 유지 관리가 자동으로 수행됩니다. 유지 관리 작업에는 두 가지 유형이 있습니다.

AKS에서 계획된 유지 관리 기능을 사용하는 경우 두 유형의 유지 관리를 선택한 주기로 실행하여 워크로드 영향을 최소화할 수 있습니다.

시작하기 전에

  • 이 문서에서는 기존 AKS 클러스터가 있다고 가정합니다. AKS 클러스터가 없는 경우 AKS 클러스터 만들기를 참조하세요.
  • Azure CLI를 사용하는 경우 az upgrade 명령을 사용하여 최신 버전으로 업그레이드합니다.

고려 사항

계획된 유지 관리를 사용하는 경우 다음 고려 사항이 적용됩니다.

  • AKS는 긴급하거나 중요한 계획되지 않은 사후 유지 관리 작업을 위해 계획된 유지 관리 기간을 중단할 권리를 보유합니다. 이러한 유지 관리 작업은 구성에 정의된 notAllowedTime 또는 notAllowedDates 기간 동안 실행될 수도 있습니다.
  • 유지 관리 작업은 최선의 노력으로만 간주되며 지정된 기간 내에 수행되도록 보장되지 않습니다.

계획된 유지 관리에 대한 구성 유형 예약

계획된 유지 관리에는 다음 세 가지 일정 구성 유형을 사용할 수 있습니다.

  • default AKS 릴리스를 제어하기 위한 기본 구성입니다. 릴리스는 Azure 안전한 배포 관행으로 인해 초기 배송 시점부터 모든 지역에 배포하는 데 최대 2주가 걸릴 수 있습니다.

    default(을)를 선택하여 가장 중단이 적은 방식으로 이러한 업데이트를 예약합니다. 주별 릴리스 추적기를 사용하여 지역별 진행 중인 AKS 릴리스의 상태를 모니터링할 수 있습니다.

  • aksManagedAutoUpgradeSchedule(은)는 지정된 자동 업그레이드 채널에서 예약된 클러스터 업그레이드를 수행할 시기를 제어합니다. default 구성에 비해 이 구성을 사용하여 보다 세밀하게 제어되는 주기 및 되풀이 설정을 구성할 수 있습니다. 클러스터 자동 업그레이드에 대한 자세한 내용은 Azure Kubernetes Service 클러스터 자동으로 업그레이드를 참조하세요.

  • aksManagedNodeOSUpgradeSchedule 노드 OS 자동 업그레이드 채널에서 예약한 노드 OS 보안 패치를 수행할 시기를 제어합니다. default 구성에 비해 이 구성을 사용하여 보다 세밀하게 제어되는 주기 및 되풀이 설정을 구성할 수 있습니다. 노드 OS 자동 업그레이드 채널에 대한 자세한 내용은 AKS 클러스터 노드 이미지 자동 패치 및 업데이트를 참조하세요.

모든 클러스터 업그레이드 시나리오에는 aksManagedAutoUpgradeSchedule을 사용하고 모든 노드 OS 보안 패치 시나리오에는 aksManagedNodeOSUpgradeSchedule을 사용하는 것이 좋습니다.

default 옵션은 AKS 주간 릴리스에만 사용됩니다. az aks maintenanceconfiguration update 명령을 사용하여 default 구성을 aksManagedAutoUpgradeSchedule 또는 aksManagedNodeOSUpgradeSchedule 구성으로 전환할 수 있습니다.

유지 관리 기간 만들기

참고 항목

자동 업그레이드를 사용하는 경우 적절한 기능을 보장하기 위해 유지 관리 기간을 4시간 이상 사용합니다.

계획된 유지 관리 기간은 UTC(협정 세계시)에 지정됩니다.

default 유지 관리 기간에는 다음과 같은 속성이 있습니다.

이름 설명 기본값
timeInWeek default 구성에서 이 속성에는 유지 관리 기간을 정의하는 dayhourSlots 값이 포함됩니다. 해당 없음
timeInWeek.day default 구성에서 유지 관리를 수행하는 요일입니다. 해당 없음
timeInWeek.hourSlots default 구성에서 특정 날짜에 유지 관리를 수행할 시간 슬롯의 목록입니다. 해당 없음
notAllowedTime 유지 관리를 실행할 수 없는 날짜 범위이며, startend 자식 속성에 따라 결정됩니다. 이 속성은 구성 파일을 사용하여 유지 관리 기간을 만드는 경우에만 적용됩니다. 해당 없음

aksManagedAutoUpgradeSchedule 또는 aksManagedNodeOSUpgradeSchedule 유지 관리 기간에는 다음과 같은 속성이 있습니다.

이름 설명 기본값
utcOffset 클러스터 유지 관리를 위한 표준 시간대입니다. +00:00
startDate 유지 관리 기간이 적용되는 날짜입니다. 만들 때의 현재 날짜
startTime utcOffset에 의해 결정된 표준 시간대에 따라 유지 관리가 시작되는 시간입니다. 해당 없음
schedule 업그레이드 빈도입니다. Weekly, AbsoluteMonthlyRelativeMonthly, 세 가지 형식을 사용할 수 있습니다. 해당 없음
intervalDays 유지 관리 실행 간격(일). aksManagedNodeOSUpgradeSchedule에만 적용할 수 있습니다. 해당 없음
intervalWeeks 유지 관리 실행에 대한 주 간격입니다. 해당 없음
intervalMonths 유지 관리 실행에 대한 월 간격입니다. 해당 없음
dayOfWeek 유지 관리를 시작할 지정된 요일입니다. 해당 없음
durationHours 유지 관리를 실행할 기간입니다. 해당 없음
notAllowedDates 유지 관리를 실행할 수 없는 날짜 범위이며, startend 자식 속성에 따라 결정됩니다. 구성 파일을 사용하여 유지 관리 기간을 만드는 경우에만 적용됩니다. 해당 없음

일정 유형

사용 가능한 4가지 일정 유형은 Daily, Weekly, AbsoluteMonthlyRelativeMonthly입니다.

Weekly, AbsoluteMonthlyRelativeMonthly 일정 유형은 aksManagedClusterAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule 구성에만 적용됩니다. Daily 일정은 aksManagedNodeOSUpgradeSchedule 구성에만 적용됩니다.

각 일정 유형에 대해 표시된 모든 필드가 필요합니다.

Daily 일정은 "3일마다"처럼 보일 수 있습니다.

"schedule": {
    "daily": {
        "intervalDays": 3
    }
}

Weekly 일정은 "격주 금요일마다"처럼 보일 수 있습니다.

"schedule": {
    "weekly": {
        "intervalWeeks": 2,
        "dayOfWeek": "Friday"
    }
}

AbsoluteMonthly 일정은 "3개월마다 매월 첫 날에"와 같이 표시될 수 있습니다.

"schedule": {
    "absoluteMonthly": {
        "intervalMonths": 3,
        "dayOfMonth": 1
    }
}

RelativeMonthly 일정은 "2개월마다 마지막 월요일에"와 같이 표시될 수 있습니다.

"schedule": {
    "relativeMonthly": {
        "intervalMonths": 2,
        "dayOfWeek": "Monday",
        "weekIndex": "Last"
    }
}

weekIndex 유효한 값은 First, Second, Third, FourthLast(을)를 포함합니다.

유지 관리 기간 구성 추가

az aks maintenanceconfiguration add 명령을 사용하여 AKS 클러스터에 유지 관리 기간 구성을 추가합니다.

첫 번째 예제에서는 매주 월요일 오전 1:00부터 오전 2:00까지 유지 관리를 예약하는 새 default 구성을 추가합니다. 두 번째 예제에서는 UTC+5:30 표준 시간대에서 오전 12시~오전 8시 사이에 매 3일 금요일마다 유지 관리를 실행하도록 예약하는 새 aksManagedAutoUpgradeSchedule 구성을 추가합니다.

# Add a new default configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1

# Add a new aksManagedAutoUpgradeSchedule configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00

참고 항목

default 구성 유형을 사용하는 경우 --start-time 매개 변수를 생략하여 하루 중 언제든지 유지 관리를 허용할 수 있습니다.

기존 유지 관리 기간 업데이트

az aks maintenanceconfiguration update 명령을 사용하여 기존 유지 관리 구성을 업데이트합니다.

다음 예제에서는 default 구성을 업데이트하여 유지 관리가 매주 월요일 오전 2:00부터 오전 3:00까지 실행되도록 예약합니다.

az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2

기존 클러스터의 모든 유지 관리 기간 나열

az aks maintenanceconfiguration list 명령을 사용하여 AKS 클러스터의 현재 유지 관리 구성 기간을 나열합니다.

az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster

기존 클러스터에서 특정 유지 관리 구성 기간 표시

--name 매개 변수와 함께 az aks maintenanceconfiguration show 명령을 사용하여 AKS 클러스터의 특정 유지 관리 구성 창을 봅니다.

az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule

다음 예제 출력은 aksManagedAutoUpgradeSchedule에 대한 유지 관리 기간을 보여줍니다.

{
  "id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
  "maintenanceWindow": {
    "durationHours": 4,
    "notAllowedDates": [
      {
        "end": "2024-01-05",
        "start": "2023-12-23"
      }
    ],
    "schedule": {
      "absoluteMonthly": {
        "dayOfMonth": 1,
        "intervalMonths": 3
      },
      "daily": null,
      "relativeMonthly": null,
      "weekly": null
    },
    "startDate": "2023-01-20",
    "startTime": "09:00",
    "utcOffset": "-08:00"
  },
  "name": "aksManagedAutoUpgradeSchedule",
  "notAllowedTime": null,
  "resourceGroup": "myResourceGroup",
  "systemData": null,
  "timeInWeek": null,
  "type": null
}

기존 클러스터에서 유지 관리 구성 기간 삭제

az aks maintenanceconfiguration delete 명령을 사용하여 AKS 클러스터에서 유지 관리 구성 기간을 삭제합니다.

다음 예제에서는 autoUpgradeSchedule 유지 관리 구성을 삭제합니다.

az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule

FAQ

  • 내 클러스터의 기존 유지 관리 구성을 어떻게 확인할 수 있나요?

    az aks maintenanceconfiguration show 명령 사용

  • notAllowedTime 또는 notAllowedDates 기간에도 대응적이고 계획되지 않은 유지 관리가 발생할 수 있나요?

    예. AKS는 긴급하거나, 중요한 계획되지 않거나, 반응형 유지 관리 작업의 해당 기간을 중단할 권리를 보유합니다.

  • 유지 관리 이벤트가 발생했는지 어떻게 알 수 있나요?

    릴리스의 경우 클러스터의 지역을 확인하고 주간 릴리스 정보를 조회하여 유지 관리 일정과 일치하는지 확인합니다. 자동 업그레이드의 상태를 보려면 클러스터에서 활동 로그를 조회합니다. AKS 클러스터 업그레이드에 설명한 대로 특정 업그레이드 관련 이벤트를 조회할 수도 있습니다.

    AKS는 업그레이드 관련 Azure Event Grid 이벤트도 내보냅니다. 자세한 내용은 Event Grid 원본의로서의 AKS를 참조하세요.

  • 둘 이상의 유지 관리 구성을 동시에 사용할 수 있나요?

    예, default, aksManagedAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule 세 가지 구성을 모두 동시에 실행할 수 있습니다. 창이 겹치면 AKS에서 실행 순서를 결정합니다.

  • 유지 관리 기간을 구성했지만 업그레이드가 수행되지 않았습니다. 이유는 무엇입니까?

    AKS 자동 업그레이드에는 유지 관리 기간을 고려하는 데 일정 시간이 필요합니다. 유지 관리 구성의 생성 또는 업데이트와 예약된 시작 시간 사이의 최소 24시간을 권장합니다.

    또한 계획된 유지 관리 기간이 시작될 때 클러스터가 시작되었는지 확인합니다. 클러스터가 중지되면 컨트롤 플레인의 할당이 취소되고 작업을 수행할 수 없습니다.

  • 내 에이전트 풀 중 하나가 유지 관리 기간 외부에서 업그레이드된 이유는 무엇인가요?

    예를 들어 Pod 중단 예산으로 인해 에이전트 풀이 업그레이드되지 않은 경우 나중에 유지 관리 기간 외부에서 업그레이드될 수 있습니다. 이 시나리오를 "캐치업 업그레이드"라고 합니다. AKS 컨트롤 플레인과 다른 버전으로 에이전트 풀을 업그레이드하지 않도록 합니다.

  • 유지 관리 구성에 대한 모범 사례가 있나요?

    NodeImage 채널을 사용하는 경우 노드 OS 보안 업데이트 일정을 매주 주기로 설정하는 것이 좋습니다. 새 노드 이미지가 매주 제공되기 때문입니다. SecurityPatch 채널에서 일일 보안 업데이트를 수신하도록 옵트인할 수도 있습니다.

    Kubernetes N-2 지원 정책을 최신 상태를 유지하려면 자동 업그레이드 일정을 월별 주기로 설정합니다.

    업그레이드 모범 사례 및 기타 고려 사항에 대한 자세한 내용은 AKS 패치 및 업그레이드 지침을 참조하세요.

다음 단계