프로덕션 환경에서 클러스터 업그레이드 관리


이 페이지에서는 출시 시퀀싱을 사용하여 GKE 클러스터 업그레이드를 관리하는 방법을 보여줍니다. 자세한 내용은 출시 시퀀싱을 사용한 클러스터 업그레이드 정보를 참조하세요.

시작하기 전에

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

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다.

출시 시퀀스 구성

이 문서에서는 FleetFleet 범위를 사용하여 클러스터를 구성하고 출시 시퀀스를 만드는 방법을 설명합니다.

출시 시퀀싱을 사용하면 동일한 출시 채널의 클러스터 집합에 버전이 출시되는 순서와 시간을 선택할 수 있습니다. 최대 3개의 범위로 시퀀스를 만들 수 있습니다.

출시 시퀀스를 만들려면 클러스터를 범위로 구성해야 합니다. 클러스터를 범위로 구성하는 방법에 대한 안내는 이 예시를 참조하세요. 범위가 구성되면 업스트림 범위 관계와 각 범위의 적응 시간을 정의하여 출시 시퀀스를 만들 수 있습니다. 작동 방식에 대한 자세한 내용은 출시 시퀀스가 생성되는 방법을 참조하세요.

클러스터를 범위로 구성

출시 시퀀스에서 모든 범위의 모든 클러스터는 동일한 출시 채널에 등록되고 동일한 부 버전에 있어야 합니다. 이러한 요구사항이 충족되지 않고 클러스터 간 버전이 일치하지 않으면 버전 출시에 문제가 발생할 수 있습니다. 자세한 내용은 출시 자격요건을 참조하세요.

범위는 Fleet 내의 조직 단위입니다. 클러스터를 다른 프로젝트에서 호스팅되는 Fleet 및 범위에 등록할 수 있습니다. 여러 Fleet에 범위가 있는 출시 시퀀스를 만들 수 있습니다.

클러스터를 이미 범위로 구성했다면 다음 단계를 건너뛰고 출시 시퀀스 만들기로 진행할 수 있습니다.

  1. 시퀀스의 각 클러스터에 대해 Fleet에 클러스터를 등록합니다. 이 클러스터의 범위를 만들 프로젝트의 Fleet에 클러스터를 등록해야 합니다. 다른 호스트 프로젝트의 Fleet에 클러스터를 등록하려면 프로젝트 간 등록에 필요한 권한을 설정했는지 확인합니다.
  2. 클러스터를 구성하기 위해 범위 2~3개를 만듭니다. 범위 각각의 Fleet의 호스트 프로젝트에서 명령어를 실행합니다. 출시 시퀀스에는 최대 3개의 범위가 있을 수 있습니다. 만들려는 각 범위에 대해 명령어를 반복합니다.

    전체 플래그 목록은 gcloud alpha container fleet scopes create를 참조하세요. create 명령어를 사용하는 경우 안내에 있는 플래그를 사용하여 출시 시퀀스를 만듭니다.

  3. 범위에 각 클러스터 추가

출시 시퀀스 만들기

출시 시퀀스는 연결된 목록으로 구성됩니다. 자세한 내용은 출시 시퀀스가 생성되는 방법을 참조하세요. 출시 시퀀스를 만들 때 각 범위에 다음 속성을 설정합니다.

  • 업스트림 범위: 업스트림 범위의 리소스 경로이며 projects/{project-number}/locations/global/scopes/{scope-name} 형식입니다. 시퀀스의 첫 번째 범위에 대한 업스트림 범위를 설정하지 않습니다. 업스트림 범위는 다운스트림 범위의 새 버전을 검증합니다.
  • 적응 시간: 범위의 적응 시간은 업그레이드가 완료되거나 출시가 30일 소요된 시점과 다운스트림 범위에서 업그레이드가 시작될 수 있는 시점입니다. 자세한 내용은 출시 시퀀스에서 버전 검증 작동 방식을 참조하세요.

범위를 만들거나 업데이트할 때 이러한 속성을 설정할 수 있습니다. 다음 안내에서는 update 명령어를 사용하지만 create 명령어로 범위를 만들 때 동일한 속성을 설정할 수 있습니다.

다음 각 명령어에서 SOAK_TIME을 업데이트할 범위의 적응 시간으로 바꿉니다.

  1. 시퀀스의 첫 번째 클러스터에 대한 적응 시간을 설정합니다.

    gcloud alpha container fleet scopes update FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=FIRST_SCOPE_PROJECT_ID
    

    FIRST_SCOPE를 첫 번째 범위의 전체 경로로 바꾸고 FIRST_SCOPE_PROJECT_ID를 첫 번째 범위가 호스팅되는 프로젝트의 프로젝트 ID로 바꿉니다.

  2. 시퀀스의 두 번째 범위에 대한 업스트림 범위 및 적응 시간을 설정합니다.

    gcloud alpha container fleet scopes update SECOND_SCOPE \
        --upstream-scope=projects/FIRST_SCOPE_PROJECT_NUMBER/locations/global/scopes/FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=SECOND_SCOPE_PROJECT_ID
    

    SECOND_SCOPE를 첫 번째 범위의 전체 경로로 바꾸고 SECOND_SCOPE_PROJECT_ID를 두 번째 범위가 호스팅되는 프로젝트의 프로젝트 ID로 바꿉니다.

  3. 선택사항: 출시 시퀀스에 3개의 범위를 사용하려면 시퀀스의 세 번째 범위에 대한 업스트림 범위를 설정합니다.

    gcloud alpha container fleet scopes update THIRD_SCOPE \
        --upstream-scope=projects/SECOND_SCOPE_PROJECT/locations/global/scopes/SECOND_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=THIRD_SCOPE_PROJECT_ID
    

    THIRD_SCOPE를 첫 번째 범위의 전체 경로로 바꾸고 THIRD_SCOPE_PROJECT_ID를 세 번째 범위가 호스팅되는 프로젝트의 프로젝트 ID로 바꿉니다.

출시 시퀀스 확인

시퀀스에서 첫 번째 범위를 설명하여 설정을 확인합니다. 각 범위에 대해 범위를 설명할 때 업스트림 범위와 다운스트림 범위를 볼 수 있습니다.

버전 출시 프로세스 제어

GKE를 사용한 클러스터 업그레이드는 프로세스를 수동으로 제어하는 여러 메커니즘을 제공합니다. 이러한 제어 외에도 출시 시퀀싱을 사용하여 클러스터 업그레이드를 제어할 수 있는 추가적인 방법이 있습니다. 이 섹션에서는 필요에 따라 업그레이드를 제어하는 방법을 알아봅니다.

출시 시퀀스 상태 확인

출시 시퀀스의 상태를 확인합니다.

gcloud alpha container fleet scopes describe SCOPE_NAME \
    --show-linked-cluster-upgrade
    --project=SCOPE_PROJECT_ID

SCOPE_NAME을 롤아웃 시퀀스의 범위 이름으로 바꾸고 SCOPE_PROJECT_ID를 이 범위의 프로젝트 ID로 바꿉니다. 출시 시퀀스에 서로 다른 Fleet의 프로젝트 간 범위가 있는 경우 이 명령어를 실행하기 위해 필수 권한이 있어야 합니다.

출력에서 clusterUpgrade(s).specclusterUpgrade(s).state 속성에는 적응 시간, 클러스터 업그레이드 재정의, 업그레이드 상태와 같은 클러스터 업그레이드에 대한 추가 정보가 포함됩니다. 이 명령어로 제공되는 정보에 대한 자세한 내용은 시퀀스에서 버전 출시 상태 확인을 참조하세요.

시퀀스의 한 범위에 대한 정보만 필요하면 --show-linked-cluster-upgrade 플래그를 --show-cluster-upgrade로 바꿉니다.

전체 플래그 목록은 gcloud alpha container fleet scopes describe를 참조하세요.

범위 내 개별 클러스터의 상태를 보려면 범위가 있는 Fleet의 프로젝트에서 다음 명령어를 실행합니다.

gcloud alpha container fleet features describe clusterupgrade

출시 자격요건 문제 해결

출시 시퀀스의 모든 클러스터에 동일한 업그레이드 대상이 없는 경우 업스트림 범위의 클러스터가 다운스트림 범위의 클러스터에 필요한 업그레이드 대상을 검증하지 않으므로 GKE가 클러스터 업그레이드를 진행하지 못할 수 있습니다.

출시 시퀀스에 출시 자격 문제가 있는지 확인하려면 출시 시퀀스의 상태를 확인하세요. 범위를 사용할 수 없는 경우 안내에 따라 범위의 개별 클러스터 상태를 확인합니다.

클러스터가 이전 버전을 사용하여 부적격한 경우(예: 범위 내 대부분의 클러스터가 1.23에서 1.24로 업그레이드되는데 클러스터의 버전이 1.22인 경우) 수동으로 클러스터를 1.24로 업그레이드하여 버전 불일치를 해결할 수 있습니다.

클러스터가 상위 버전을 사용하여 부적격한 경우(예: 범위 내 대부분의 클러스터가 1.23에서 1.24로 업그레이드되는데 클러스터의 버전이 1.25인 경우) 수동으로 업그레이드하여 버전 불일치를 해결할 수 없습니다.

클러스터 업그레이드를 즉시 진행하려면 부분적으로 적격한 출시 진행의 안내에 따라 INELIGIBLE 상태의 클러스터를 삭제합니다.

적응 시간 변경

특정 버전 출시의 적응 시간을 시퀀스에 구성된 적응 시간과 다르게 하려면 다음 명령어에 --add-upgrade-soaking-override 플래그를 사용하여 변경할 수 있습니다.

gcloud alpha container fleet scopes update SCOPE_NAME \
    --add-upgrade-soaking-override=SOAK_TIME \
    --upgrade-selector=name=UPGRADE_NAME,version=VERSION

다음을 바꿉니다.

  • SCOPE_NAME: 특정 버전의 버전 출시에 사용되는 적응 시간을 재정의하려는 범위의 이름입니다.
  • SOAK_TIME: 기본값 이외에 사용할 적응 시간입니다(예: 한 버전 출시에 대한 적응 시간을 건너뛰려면 '0d').
  • UPGRADE_NAME: 업그레이드 이름이며 k8s_control_plane 또는 k8s_node일 수 있습니다.
  • VERSION: 이 범위에 출시 후 적응 시간을 원하는 GKE 버전입니다(예: 1.25.2-gke.400).

예를 들어 이미 새 버전을 검증했으며 다음 범위에서 업그레이드를 시작할 준비가 되면 적응 시간을 0으로 설정할 수 있습니다. 또한 특정 버전을 검증하는 데 기본 적응 시간보다 많은 시간이 필요한 경우에도 사용할 수 있습니다.

시퀀스 순서 변경

시퀀스 순서를 변경하려면 출시 시퀀스 만들기 안내에 있는 명령어를 사용하여 업스트림 범위를 업데이트합니다.

범위 버전 출시 완료 지연

범위에서 클러스터로 새 버전 출시가 완료되지 않도록 일시적으로 방지해야 하는 경우 대상 버전으로 업그레이드되지 않은 클러스터에 유지보수 제외를 추가할 수 있습니다. 이렇게 하면 범위가 최대 30일 동안 적응 시간 또는 다운스트림 범위로 진행되지 않도록 일시중지할 수 있습니다. 30일이 지나면 범위가 적응되기 시작합니다.

해당 범위의 적응 시간을 30일로 변경하여 출시 시퀀스가 다음 범위로 이동하기 전에 대기하는 시간을 극대화할 수도 있습니다.

다음 범위부터 업그레이드를 더 지연해야 하는 경우 다음 범위의 클러스터에 유지보수 제외를 사용할 수 있습니다.

부분적으로 적격한 출시 진행

범위의 클러스터 업그레이드가 아직 30일 한도에 도달하지 않았으며 출시 자격요건 문제로 인해 완료되지 않은 경우(예: 범위 내 버전 불일치) 범위에서 클러스터를 삭제하여 버전 출시를 완료하고 적응 시간을 시작하거나 출시 시퀀스의 다음 범위로 이동할 수 있습니다. 다른 이유로 인해 범위에서 클러스터를 삭제할 수도 있습니다. 예를 들어 이 클러스터의 사용량이 범위 내의 다른 클러스터와 관련이 없는 경우입니다.

안내에 따라 범위에서 클러스터를 삭제합니다.

범위의 버전 출시를 차단하는 모든 클러스터를 삭제하면 범위의 버전 출시가 완료됩니다. 버전 출시 상태 확인의 안내에 따라 이를 확인합니다.

시퀀스 삭제

시퀀스를 삭제하려면 다음 명령어를 사용하여 두 번째 범위에 대한 업스트림 범위 연결을 삭제합니다(이 출시 시퀀스에 3개 범위가 포함된 경우 세 번째 범위).

gcloud alpha container fleet scopes update SCOPE_NAME --reset-upstream-scope

SCOPE_NAME을 삭제할 범위의 이름으로 바꿉니다.

삭제

예상치 못한 요금이 청구되지 않도록 Anthos API 무료 체험판에 등록하여 출시 시퀀싱 기능을 테스트한 경우 비공개 미리보기에서 이 기능 테스트를 완료한 후 API를 사용 중지해야 합니다. 이 기능의 허용 목록에서 Fleet 호스트 프로젝트가 삭제되기 전에 API를 사용 중지해야 합니다.

다음 단계