유지보수 기간 및 제외 구성

이 페이지에서는 유지보수 기간 및 유지보수 제외를 사용하여 Google Kubernetes Engine(GKE) 클러스터에서 자동 업그레이드와 같은 자동 클러스터 유지보수가 수행되거나 될 수 없는 시기를 제어하는 방법을 보여줍니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Google Cloud CLI가 설치되었는지 확인합니다.
  • 다음 방법 중 하나를 사용하여 프로젝트의 기본 Google Cloud CLI 설정을 지정합니다.
    • 프로젝트 기본값 설정 방법을 알아보려면 gcloud init를 사용합니다.
    • 프로젝트 ID, 영역, 리전을 개별적으로 설정하려면 gcloud config를 사용합니다.

    gcloud init

    1. gcloud init를 실행하고 다음 안내를 따르세요.

      gcloud init

      원격 서버에서 SSH를 사용하는 경우 --console-only 플래그를 사용하여 다음 명령어로 브라우저를 실행하지 못하게 할 수 있습니다.

      gcloud init --console-only
    2. 안내를 따라 gcloud CLI에서 Google Cloud 계정을 사용하도록 승인합니다.
    3. 새 구성을 만들거나 기존 구성을 선택합니다.
    4. Google Cloud 프로젝트를 선택합니다.
    5. 기본 Compute Engine 영역을 선택합니다.
    6. 기본 Compute Engine 리전을 선택합니다.

    gcloud config

    1. 기본 프로젝트 ID를 설정합니다.
      gcloud config set project PROJECT_ID
    2. 기본 Compute Engine 리전(예시: us-central1)을 설정합니다.
      gcloud config set compute/region COMPUTE_REGION
    3. 기본 Compute Engine 영역(예시: us-central1-c)을 설정합니다.
      gcloud config set compute/zone COMPUTE_ZONE
    4. gcloud를 최신 버전으로 업데이트합니다.
      gcloud components update

    기본 위치를 설정하면 gcloud CLI에서 One of [--zone, --region] must be supplied: Please specify location과 같은 오류를 방지할 수 있습니다.

유지보수 기간 구성

유지보수 기간을 구성하려면 유지보수 기간이 언제 시작하는지, 얼마나 지속되는지, 어떤 빈도로 반복되는지를 구성합니다. 예를 들어 월요일부터 금요일까지 매주 반복되는 유지보수 기간을 구성할 수 있습니다.

Google Cloud Console 또는 Google Cloud CLI를 사용하여 유지보수 기간을 구성할 수 있습니다.

간단한 유지보수 기간으로 클러스터 만들기

gcloud CLI에서 --maintenance-window 플래그를 지정하여 간단한 유지보수 기간을 만들 수 있습니다. 이 플래그를 사용하면 단순화된 형식을 사용하여 매일 4시간의 유지보수 기간을 지정할 수 있습니다.

간단한 유지보수 기간으로 새 클러스터를 만들려면 다음 명령어를 실행합니다.

gcloud container clusters create CLUSTER_NAME \
    --maintenance-window START_TIME

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름입니다.
  • START_TIME: UTC 시간 기준 24시간 타임스탬프입니다(예: 16:00).

유지보수 기간은 매일 지정된 START_TIME에 실행되며 4시간 동안 실행됩니다.

유지보수 기간이 있는 클러스터 만들기

gcloud CLI 또는 Google Cloud Console에서 유지보수 기간을 사용하여 새 클러스터를 만들 수 있습니다.

gcloud

유지보수 기간이 있는 새 클러스터를 만들려면 다음 명령어를 실행합니다.

gcloud container clusters create CLUSTER_NAME \
    --maintenance-window-start START_TIME \
    --maintenance-window-end END_TIME \
    --maintenance-window-recurrence RRULE

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름입니다.
  • START_TIME: 유지보수 기간을 시작할 시간으로 RFC-5545 DTSTART 값으로 표시됩니다.
  • END_TIME: 유지보수 기간을 종료할 시간으로 START_TIME과 동일한 형식으로 지정되지만 유지보수 기간을 계산하는 데만 사용됩니다. END_TIME 값은 START_TIME 이후 시간이어야 합니다.
  • RRULE: RFC-5545 RRULE입니다. 이는 반복 규칙을 지정하는 방법이 여러 가지인 매우 유연한 형식입니다.

예를 들어 다음 명령어는 2021년 8월 1일 UTC를 기준으로 오전 2시에 시작해서 4시간 후에 종료되며 매일 실행되는 유지보수 기간이 있는 my-cluster 클러스터를 만듭니다. 날짜 및 시간 형식 지정에 대해 자세히 알아보세요.

gcloud container clusters create my-cluster \
    --maintenance-window-start 2021-08-01T02:00:00Z \
    --maintenance-window-end 2021-08-01T06:00:00Z \
    --maintenance-window-recurrence FREQ=DAILY

콘솔

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다.

  4. 탐색창의 클러스터에서 자동화를 클릭합니다.

  5. 유지보수 기간 사용 설정 체크박스를 선택합니다.

  6. 시작 시간과 기간을 선택한 다음 유지보수 기간이 시작되는 요일을 선택합니다. 반복 규칙 사양(RRule)을 직접 수정하려면 커스텀 편집기를 선택합니다.

  7. 만들기를 클릭합니다.

기존 클러스터의 유지보수 기간 구성

gcloud

기존 클러스터의 유지보수 기간을 만들거나 업데이트하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --maintenance-window-start START_TIME \
    --maintenance-window-end END_TIME \
    --maintenance-window-recurrence RRULE

다음을 바꿉니다.

  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • START_TIME: 유지보수 기간을 시작할 시간으로 RFC-5545 DTSTART 값으로 표시됩니다.
  • END_TIME: 유지보수 기간을 종료할 시간으로 START_TIME과 동일한 형식으로 지정되지만 유지보수 기간을 계산하는 데만 사용됩니다. END_TIME 값은 START_TIME 이후 시간이어야 합니다.
  • RRULE: RFC-5545 RRULE입니다. 이는 반복 규칙을 지정하는 방법이 여러 가지인 매우 유연한 형식입니다.

Console

기존 클러스터의 유지관리 기간을 만들거나 수정하려면 다음 단계를 따르세요.

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.

  3. 자동화에서 유지보수 기간 필드 옆의 유지보수 정책 수정을 클릭합니다.

  4. 유지보수 기간 사용 설정 체크박스를 선택합니다.

  5. 시작 시간과 기간을 선택한 다음 유지보수 기간이 시작되는 요일을 선택합니다. RRule을 직접 수정하려면 커스텀 편집기를 선택합니다.

  6. 변경사항 저장을 클릭합니다.

완료되지 않은 유지보수를 수동으로 완료

업그레이드 또는 기타 자동 유지보수가 완료되는 데 유지보수 기간보다 긴 시간이 소요되면 GKE는 진행 중인 유지보수 태스크를 중지했다가 다음 유지보수 기간 중에 다시 시작합니다. 자동 업그레이드가 취소되고 노드 자동 업그레이드가 사용 설정된 경우에는 노드 버전이 혼합된 상태일 수 있지만 클러스터는 정상적으로 작동합니다.

클러스터를 수동으로 업그레이드하거나, 부분 업그레이드를 취소하거나 롤백하려면 수동으로 클러스터 업그레이드를 확인하세요.

유지보수 기간 삭제

gcloud

클러스터에서 유지보수 기간을 삭제하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME --clear-maintenance-window

CLUSTER_NAME을 기존 클러스터의 이름으로 바꿉니다.

Console

유지관리 기간을 삭제하려면 다음 단계를 따르세요.

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.

  3. 자동화에서 유지보수 기간 필드 옆의 유지보수 정책 수정을 클릭합니다.

  4. 유지보수 기간 사용 설정 체크박스를 선택 취소합니다.

  5. 변경사항 저장을 클릭합니다.

유지보수 기간 예시

다음 예시는 유지보수 기간을 구성하는 여러 가지 방법을 보여줍니다. 플래그는 새 클러스터를 만들거나 기존 클러스터를 업데이트할 때 동일한 구문을 사용하므로 관련 플래그만 표시됩니다.

2019년 8월 27일부터 매주 화요일과 수요일에 하루 종일

이 예시에서 시작 및 종료 타임스탬프의 차이는 만 하루입니다. 따라서 유지보수 기간은 화요일과 수요일에 각각 24시간 동안 실행됩니다.

--maintenance-window-start 2019-08-27T00:00:00Z \
--maintenance-window-end 2019-08-28T00:00:00Z \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=TU,WE'
평일에 매일 오전 9시~오후 5시(UTC-4)

이 예시는 일일 유지보수 기간을 설정하되 주말은 생략하는 방법을 보여줍니다. 이 예시에서는 UTC가 아닌 시간대를 지정합니다.

--maintenance-window-start 2019-09-02T09:00:00-04:00 \
--maintenance-window-end 2019-09-02T17:00:00-04:00 \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR'
주 1회 오후 4시(UTC-7)에 8시간 동안

--maintenance-window-start의 시간대를 지정하지 않으면 Google Cloud 계정에 구성된 현지 시간이 사용됩니다. Google Cloud Console은 항상 현지 시간을 사용합니다.

--maintenance-window-start 2019-08-13T16:00:00-7:00 \
--maintenance-window-end 2019-08-14T00:00:00-7:00 \
--maintenance-window-recurrence FREQ=WEEKLY

유지보수 제외 구성

클러스터에 유지보수 제외를 설정하려면 다음을 지정해야 합니다.

  • 이름: 제외의 이름입니다(선택사항).
  • 시작 시간: 제외 기간이 시작되는 날짜와 시간입니다.
  • 종료 시간: 제외 기간이 종료되는 날짜 및 시간입니다. 사용 가능한 각 범위의 제외 기간 길이에 대한 제한사항은 다음 표를 참조하세요.
  • 범위: 제한할 자동 업그레이드의 범위입니다. 사용 가능한 제외 범위가 나열된 다음 표를 참조하세요.
범위 설명 최대 제외 기간
업그레이드 없음(기본값) 모든 패치 및 마이너 업그레이드를 제외합니다. 업그레이드 시 클러스터 제어 영역 및 노드 풀의 VM 중단을 방지합니다. 30일을 초과할 수 없습니다.
마이너 업그레이드 없음 모든 부 업그레이드는 제외됩니다. 패치 업그레이드로 인해 클러스터의 제어 영역과 노드 풀에 VM 중단이 발생할 수 있습니다. 180일을 초과하거나 부 버전의 지원 종료 날짜를 지날 수 없습니다.
마이너 또는 노드 업그레이드 없음 모든 부 업그레이드와 노드 업그레이드를 제외합니다. 업그레이드 시 클러스터의 노드 풀에 대한 VM 중단을 방지합니다. 하지만 제어 영역에 중단이 발생할 수 있습니다. 180일을 초과하거나 부 버전의 지원 종료 날짜를 지날 수 없습니다.

부 버전과 패치 버전의 정의는 버전 관리 스키마를 참조하세요.

유지보수 제외에는 다음과 같은 제한사항이 있습니다.

  • 출시 채널에 등록된 클러스터만 유지보수 제외에서 자동 업그레이드 범위를 제한할 수 있습니다.
  • 모든 업그레이드를 제외하는 유지보수 제외를 최대 3개 추가할 수 있습니다(즉, '업그레이드 없음' 범위).
  • 유지보수 제외는 총 20개까지 사용할 수 있습니다.
  • 제외에 범위를 지정하지 않는 경우 범위의 기본값은 '업그레이드 없음'입니다.

유지보수 제외가 있는 클러스터 만들기

Google Cloud Console을 사용하여 새 클러스터를 만들 때 유지보수 제외를 구성할 수 있습니다. 이 태스크는 gcloud CLI에서 수행될 수 없습니다.

유지보수 제외가 있는 새 클러스터를 만들려면 다음 안내를 따르세요.

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다.

  4. 탐색창의 클러스터에서 자동화를 클릭합니다.

  5. 유지보수 제외에서 유지보수 제외 추가를 클릭합니다.

  6. 범위, 시작 시간종료 시간을 선택합니다.

  7. 만들기를 클릭합니다.

블랙 프라이데이의 유지보수 제외 예시를 확인할 수 있습니다.

기존 클러스터의 유지보수 제외 구성

Google Cloud Console 또는 gcloud CLI를 사용하여 기존 클러스터에서 유지보수 제외를 구성할 수 있습니다.

gcloud

기존 클러스터의 유지보수 제외를 구성하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --add-maintenance-exclusion-name EXCLUSION_NAME
    --add-maintenance-exclusion-start START_DATE_TIME \
    --add-maintenance-exclusion-end END_DATE_TIME \
    --add-maintenance-exclusion-scope SCOPE

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름입니다.
  • EXCLUSION_NAME: 유지보수 제외의 이름입니다.
  • START_DATE_TIME: 제외 시작 날짜와 시간입니다.
  • END_DATE_TIME: 제외 종료 날짜와 시간입니다.
  • SCOPE: 제외할 업그레이드 범위입니다. no_upgrades, no_minor_upgrades, no_minor_or_node_upgrades 값 중 하나일 수 있습니다.

지원되는 날짜 및 시간 형식을 보려면 gcloud topic datetimes를 실행합니다.

Console

기존 클러스터의 유지보수 제외를 구성하려면 다음 안내를 따르세요.

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.

  3. 자동화에서 유지보수 제외 필드 옆의 유지보수 제외 수정을 클릭합니다.

  4. 유지보수 제외에서 유지보수 제외 추가를 클릭합니다.

  5. 범위, 시작 시간종료 시간을 선택합니다.

  6. 변경사항 저장을 클릭합니다.

유지보수 제외 삭제

Google Cloud Console 또는 gcloud CLI를 사용하여 유지보수 제외를 삭제할 수 있습니다.

gcloud

기존 유지보수 제외를 삭제하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --remove-maintenance-exclusion EXCLUSION_NAME

다음을 바꿉니다.

  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • EXCLUSION_NAME: 삭제할 유지보수 제외의 이름입니다.

Console

기존 클러스터에서 유지보수 제외를 삭제하려면 다음 안내를 따르세요.

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.

  3. 자동화에서 유지보수 제외 필드 옆의 유지보수 제외 수정을 클릭합니다.

  4. 유지보수 제외에서 삭제하려는 제외의 종료 시간 필드 옆에 있는 항목 삭제를 클릭합니다.

  5. 변경사항 저장을 클릭합니다.

클러스터의 모든 유지보수 제외를 보려면 클러스터의 유지보수 정책을 참조하세요.

유지보수 제외 예시

다음 예시에서는 블랙 프라이데이에서 사이버 먼데이까지 4일간, 많은 소매업체에서 연중 판매량이 가장 많은 기간에 유지보수를 방지합니다. 이 예시는 2021년 블랙 프라이데이(2021년 11월 26일)부터 2021년 사이버 먼데이(2021년 11월 29일)까지, 미동부 시간(UTC-5) 기준 자정부터 태평양 시간(UTC-8) 기준 23:59:59까지 유지보수 기간이 발생하지 않도록 하는 방법을 보여줍니다.

gcloud container clusters update sample-cluster \
    --add-maintenance-exclusion-name black-friday \
    --add-maintenance-exclusion-start 2021-11-26T00:00:00-05:00 \
    --add-maintenance-exclusion-end 2021-11-29T23:59:59-08:00 \
    --add-maintenance-exclusion-scope no_upgrades

클러스터의 유지보수 정책 보기

유지보수 기간 및 모든 유지보수 제외를 포함하여 클러스터의 유지보수 정책을 보려면 다음 명령어를 사용합니다.

gcloud container clusters describe CLUSTER_NAME

문제 해결하기

유지보수 제외가 출시 채널에만 적용됨

유지보수 제외에서 자동 업그레이드 범위를 제한하는 경우 클러스터를 출시 채널에 등록해야 합니다. 그렇지 않으면 다음 오류가 발생할 수 있습니다.

ERROR: (gcloud.container.clusters.update) INVALID_ARGUMENT: Cannot update to
STATIC channel since following maintenancePolicy.maintenanceExclusions can only
apply to release channels. Please remove those maintenance exclusions.
ERROR: (gcloud.container.clusters.update) ResponseError: code=400,
message=MaintenancePolicy.maintenanceExclusions["no"] could not apply to cluster
in STATIC channel, only no_upgrades exclusions are allowed in STATIC channel.

유지보수 제외가 한도를 초과함

모든 업그레이드(즉, '업그레이드 없음' 범위)를 제외하는 유지보수 제외를 최대 3개까지만 지정할 수 있습니다. 그렇지 않으면 다음 오류가 발생합니다.

ERROR: (gcloud.container.clusters.update) ResponseError: code=400,
message=Number of active maintenance exclusions exceeds limit (3).

유지보수 제외를 최대 20개까지 지정할 수 있습니다. 그렇지 않으면 다음 오류가 발생합니다.

ERROR: (gcloud.container.clusters.update) ResponseError: code=400,
message=Number of total maintenance exclusions exceeds limit (20).

다음 단계