노드 풀 업데이트

클러스터를 만들었으면 노드 풀을 수정할 수 있습니다. 크기, 암호화 키, 보안 그룹과 같은 노드 풀의 특정 매개변수만 업데이트할 수 있습니다. 이 문서에서는 노드 풀에 이러한 업데이트 및 기타 일반적인 업데이트를 수행하는 방법을 설명합니다.

하지만 이 문서에서는 업데이트 명령어의 전체 목록을 제공하지 않습니다. 이 문서에 설명되지 않은 매개변수를 업데이트해야 하는 경우 gcloud container aws node-pools updateprojects.locations.awsNodePools.patch 문서를 참조하세요.

시작하기 전에

노드 풀을 업데이트하려면 gkemulticloud.googleapis.com/awsNodePools.update Identity and Access Management 권한이 있어야 합니다.

권한을 관리하는 방법은 사용자에게 IAM 역할 부여를 참조하세요.

노드 풀 업데이트

다음 섹션에서는 노드 풀을 다양한 방식으로 업데이트하는 방법을 설명합니다. 노드 풀은 클러스터 내에서 구성이 모두 동일한 노드 그룹입니다. 클러스터의 모든 노드는 노드 풀에 속해야 합니다.

같은 명령어로 노드 풀의 여러 매개변수를 모두 지정하여 동시에 업데이트할 수 있습니다. 그러나 이 문서에서는 명확성을 기하기 위해 한 번에 하나의 매개변수를 업데이트하는 방법을 보여줍니다.

노드 풀 버전 변경

GKE on AWS에서 노드 풀 버전을 변경하면 해당 노드 풀의 노드에서 실행되는 GKE 버전이 변경됩니다.

노드 풀 버전을 변경하려면 다음 명령어에서 node-version 플래그를 사용하여 새 버전을 지정하세요.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION

다음을 바꿉니다.

  • NODE_POOL_NAME: 업데이트할 노드 풀의 이름입니다.
  • CLUSTER_NAME: 노드 풀을 연결할 클러스터의 이름입니다.
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 지원되는 Google Cloud 리전입니다. 예를 들면 us-west1입니다.
  • NODE_POOL_VERSION: 새로운 지원되는 노드 풀 버전입니다.

노드 풀 인스턴스 유형 업데이트

노드 풀 인스턴스 유형은 노드 풀에 노드를 만드는 데 사용되는 AWS EC2 인스턴스 유형입니다. 예를 들어 m5.xlarge 인스턴스 유형에는 vCPU 4개, 16GB 메모리, 32GB SSD 스토리지가 있습니다.

노드 풀의 인스턴스 유형을 변경하려면 다음 명령어에서 instance-type 플래그를 사용하여 새 인스턴스 유형을 지정하세요.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --instance-type=INSTANCE_TYPE

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터 이름
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 Google Cloud 리전
  • INSTANCE_TYPE: 이 노드 풀에 대한 새로운 AWS 머신 인스턴스 유형. 예를 들면 m5.xlarge입니다.

노드 풀 인스턴스 유형을 업데이트해도 EC2 인스턴스의 기본 CPU 아키텍처가 변경되어서는 안 됩니다. 예를 들어 원래 노드 풀에서 x86 CPU가 있는 인스턴스를 사용하는 경우 업데이트된 인스턴스 유형이 다른 아키텍처 대신 x86 CPU를 계속 사용해야 합니다.

지원되는 인스턴스와 기본 아키텍처의 전체 목록은 지원되는 AWS 인스턴스 유형을 참조하세요.

노드 풀의 암호화 키 순환

노드 풀의 KMS 암호화 키를 업데이트하는 방법은 키 순환을 참조하세요.

노드 풀 보안 그룹 교체

노드 풀에 연결된 보안 그룹을 업데이트하려면 다음 명령어를 실행하세요.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

다음을 바꿉니다.

  • NODE_POOL_NAME: 업데이트할 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터 이름
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 Google Cloud 리전
  • SECURITY_GROUP_IDS: 노드 풀에 연결할 쉼표로 구분된 보안 그룹 목록

GKE 버전 1.25 이상을 실행하는 클러스터의 경우 노드를 다시 시작하지 않고 업데이트를 동적으로 수행할 수 있습니다. 이 방법은 GKE v1.25 이상을 사용하는 클러스터에 권장되는 방법입니다.

동적 업데이트를 수행하려면 API 서비스 에이전트 역할에 다음 AWS IAM 권한이 있어야 합니다.

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

클러스터를 만들 때 기본 API 서비스 에이전트 역할을 선택하면 이러한 권한이 API 서비스 에이전트 역할에 자동으로 할당됩니다.

이전 버전의 GKE를 실행하는 클러스터 또는 버전 1.25 이상을 실행하는 클러스터이지만 API 서비스 에이전트에 동적 업데이트를 수행할 권한이 없으면 순차적 업데이트를 사용하여 업데이트가 수행됩니다. 순차적 업데이트는 노드를 다시 시작하지만 동적 업데이트는 그렇지 않으므로 동적 업데이트보다 더 많은 중단이 유발됩니다. 순차적 업데이트에 대한 자세한 내용은 일시 급증 업데이트를 참조하세요.

노드 풀 보안 그룹 삭제

다음 명령어를 실행하여 노드 풀에 연결된 기본이 아닌 모든 보안 그룹을 삭제할 수 있습니다. 기본 보안 그룹에 대한 자세한 내용은 노드 풀 보안 그룹을 참조하세요.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

다음을 바꿉니다.

  • NODE_POOL_NAME: 업데이트할 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터 이름
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 Google Cloud 리전

노드 풀 크기 조절

노드 풀의 크기(즉, 노드 풀의 노드 수)를 변경하려면 다음 명령어의 min-nodesmax-nodes 플래그에 새 값을 할당합니다.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES

다음을 바꿉니다.

  • NODE_POOL_NAME: 업데이트할 노드 풀의 이름입니다.
  • CLUSTER_NAME: 노드 풀을 연결할 클러스터의 이름입니다.
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 지원되는 Google Cloud 리전입니다. 예를 들면 us-west1입니다.
  • MIN_NODES: 노드 풀에 포함할 수 있는 최소 노드 수입니다. 값은 0 이상일 수 있습니다.
  • MAX_NODES: 노드 풀에 포함할 수 있는 최대 노드 수입니다. 값은 최소 1이고, MIN_NODES 값 이상이어야 합니다.

노드 풀 크기 조절에 대한 추가 세부정보

노드 풀의 크기를 조절하기 전에 워크로드의 잠재적 영향을 평가하는 것이 중요합니다.

작업 크기 조절 및 결과

노드 풀의 크기를 조절할 때 새 구성과 노드의 현재 상태에 따라 서로 다른 작업이 트리거됩니다. 이러한 작업과 그 영향을 이해하는 것이 중요합니다.

  • 변동 없음: 현재 노드 수가 이미 새로 지정된 범위와 일치하면 AWS용 GKE에서 노드 수를 조정하지 않습니다.
  • 최소값 늘리기: 새로운 최소 노드 수가 기존 노드 수보다 높게 설정되면 AWS용 GKE는 새로 정의된 최소 크기에 도달할 때까지 노드를 점진적으로 추가합니다.
  • 최대값 줄이기: 최대 노드 수를 기존 노드 수보다 낮은 값으로 변경하면 AWS용 GKE가 다음 작업을 수행합니다.
    • 클러스터 자동 확장 처리를 사용 중지합니다.
    • 노드 풀의 자동 확장 그룹을 지정된 최소 크기로 설정합니다.
    • 삭제할 개별 노드를 선택합니다. 각 노드가 차단되고 해당 태스크는 드레이닝된 후 종료됩니다. 이 절차는 지정된 최대 크기에 도달할 때까지 계속됩니다.
    • 새로운 최대 크기에 맞게 노드 풀의 자동 확장 그룹을 수정합니다.
    • 최대 크기에 도달하면 클러스터 자동 확장 처리를 다시 사용 설정합니다.

클러스터 자동 확장 처리에 대한 자세한 내용은 클러스터 자동 확장 처리 정보를 참조하세요.

크기 조절 중 워크로드 보호

노드 풀의 크기를 조절하는 중에 워크로드의 지속적인 가용성을 보장하기 위해 AWS용 GKE는 다음 보호 장치를 제공합니다.

  • 노드 드레이닝 중에 AWS용 GKE는 최대 1시간 동안 PodDisruptionBudget 구성을 따릅니다. 이 기간이 지난 후 노드에 남아 있는 포드는 삭제됩니다.

  • 노드를 다시 시작하거나 삭제하도록 설정하면 AWS용 GKE는 노드를 단계적으로 종료하고 최대 2시간 동안 기다립니다. 이 기간이 지난 후에도 포드가 노드에 남아 있으면 기본 가상 머신 인스턴스가 삭제됩니다.

노드 풀의 상태 확인

업데이트가 완료되었는지 확인하려면 다음 명령어를 실행하여 노드 풀의 상태를 확인할 수 있습니다.

gcloud container aws node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터 이름
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 Google Cloud 리전

AWS용 GKE는 요청된 업데이트를 노드 풀에 적용한 후 상태 점검을 수행합니다. 업데이트 단계 중 하나라도 실패하면 노드 풀 상태가 DEGRADED로 표시됩니다.

업데이트 작업 취소

진행 중인 노드 풀 업데이트를 취소하려면 먼저 진행 중인 작업의 이름을 확인해야 합니다. 진행 중인 작업과 해당 이름을 나열하려면 다음 명령어를 실행하세요.

gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
    --location GOOGLE_CLOUD_LOCATION

GOOGLE_CLOUD_LOCATION을 클러스터를 관리하는 지원되는 Google Cloud 리전으로 바꿉니다. 예를 들면 us-west1입니다.

명령어 출력에서 취소하려는 업데이트의 OPERATION_NAME을 찾습니다. 작업 목록은 gcloud container aws operations list를 참조하세요.

OPERATION_NAME을 식별한 후 다음 명령어를 사용하여 작업을 취소할 수 있습니다.

gcloud container aws operations cancel OPERATION_NAME
    --location GOOGLE_CLOUD_LOCATION

다음을 바꿉니다.

  • OPERATION_NAME: 업데이트 작업의 이름입니다.
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 지원되는 Google Cloud 리전입니다. 예를 들면 us-west1입니다.

진행 중인 노드 풀 업데이트를 취소해도 이미 완료된 노드 업데이트는 되돌려지지 않습니다. 이 경우 부분적으로 업데이트된 노드 풀이 발생할 수 있습니다.