이 페이지에서는 노드 업그레이드 전략을 사용하여 클러스터의 노드를 변경하는 방법을 설명합니다. 선택한 전략에 따라 프로젝트에 Google Kubernetes Engine(GKE) Standard 노드 풀을 업데이트하기에 리소스가 충분한지 확인하는 것이 좋습니다.
노드 업그레이드에 필요한 리소스
선택한 노드 전략 및 구성에 따라 노드 업그레이드를 위해 GKE에서 일시적으로 추가 노드를 만들어야 할 수 있습니다. 이에 따라 GKE에 노드 풀 업그레이드를 위한 추가 리소스가 필요할 수 있습니다.
업그레이드에 사용되는 노드를 포함하여 GKE가 생성하는 모든 노드에는 특정 예약 어피니티가 있는 노드 풀의 경우 프로젝트의 리소스 할당량, 리소스 가용성, 예약 용량이 적용됩니다.
특별한 머신 유형 요구사항과 용량 제약 조건이 있는 경우 적절한 리소스가 있는지 확인하는 것이 좋습니다. 노드를 업그레이드하거나 예약 생성과 같은 다른 작업을 수행할 수 있도록 더 적은 리소스가 필요한 전략을 구성해야 할 수 있습니다. 자세한 내용은 리소스가 제한된 환경에서 업그레이드를 참조하세요.
다양한 업그레이드 전략에 필요한 리소스
다음 섹션에서는 사용 가능한 업그레이드 전략을 사용하는 데 필요한 추가 리소스를 설명합니다. 업그레이드 문제가 발생하면 업그레이드 작업을 확인하고 안내에 따라 업그레이드 오류를 해결하세요.
일시 급증 업그레이드 리소스
일시 급증 업그레이드는 기본 노드 업그레이드 전략입니다. 일시 급증 업그레이드는 이전 노드를 드레이닝하고 삭제하기 전에 maxSurge
가 0이상으로 설정된 경우 추가 VM을 생성하므로 프로젝트에 리소스가 충분하지 않으면 업그레이드가 실패할 수 있습니다.
사용 가능한 리소스가 maxSurge
에 지정된 노드 수보다 적은 경우 동시 업그레이드 수가 maxSurge
+ maxUnavailable
보다 적습니다. 추가 용량이 없는 경우 리소스가 제한된 환경에서 업그레이드하는 방법을 참고하세요.
다음 표에서는 여러 가지 업그레이드 동작을 보여주는 예시를 설명합니다.
업그레이드 설정 | 사용 가능한 리소스에서 허용되는 추가 노드 수 | 결과 |
---|---|---|
maxSurge: 5 maxUnavailable: 0 | 5 | 노드 5개를 동시에 업그레이드합니다. |
maxSurge: 5 maxUnavailable: 0 | 2 | 노드 2개만 동시에 업그레이드합니다. |
maxSurge: 5 maxUnavailable: 0 | 0 | 업그레이드 설정으로 인해 추가 노드를 가져와서 기존 노드를 다시 시작할 수 없으므로 업그레이드에 실패합니다. GKE는 작업이 성공할 때까지 자동 업그레이드를 계속 시도합니다. |
maxSurge: 5 maxUnavailable: 1 | 5 | 노드 6개를 동시에 업그레이드하되, 노드 풀에서 업그레이드로 인해 일시적으로 중지되는 노드를 1개로 보장합니다. |
maxSurge: 5 maxUnavailable: 1 | 2 | 노드 3개만 동시에 업그레이드하되, 노드 풀에서 업그레이드로 인해 중지되는 노드를 1개 이하로 보장합니다. |
maxSurge: 5 maxUnavailable: 1 | 0 | 순차적 업그레이드 방법으로 각 노드를 다시 만들어 한 번에 1개의 노드만 업그레이드합니다. |
블루/그린 업그레이드를 위한 리소스
블루-그린 업그레이드는 노드 풀의 노드 수를 일시적으로 두 배로 늘립니다. 즉, 노드 풀에 일시적으로 두 배의 리소스가 필요합니다. 사용 가능한 리소스가 부족하고 이 전략을 사용하도록 노드 풀을 구성한 경우에는 업그레이드 차단 해제 필요 시 대신 일시 급증 업그레이드를 구성합니다. 이 전략을 구성할 때는 노드 풀의 노드에 사용 가능한 리소스로 작동하는 일시 급증 업그레이드 매개변수를 구성해야 합니다. 자세한 내용은 이전 섹션인 일시 급증 업그레이드 리소스를 참고하세요.
리소스 관련 오류에 대한 업그레이드 작업 확인
업그레이드 작업 객체를 확인하면 업그레이드 작업에 대한 자세한 정보와 업그레이드 실패 여부 및 그 이유에 대한 정보를 확인할 수 있습니다. 업그레이드 작업 객체를 나열하려면 다음 명령어를 실행합니다.
gcloud container operations list \
--filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/CLUSTER_NAME"
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.COMPUTE_ZONE
: 클러스터의 Compute Engine 영역입니다.CLUSTER_NAME
: 클러스터 이름입니다.
리소스 할당량이 부족하여 최근 업그레이드가 실패한 경우의 출력은 다음과 비슷합니다.
gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
\ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
\ creation failed: Quota 'IN_USE_ADDRESSES' exceeded. Limit: 50.0 in region us-central1.\
...
사유가 예약 부족인 경우 출력은 다음과 비슷합니다.
gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
\ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
\ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
\ creation failed: Specified reservation 'foo' does not have available resources\
\ for the request."
용량 부족이 원인인 경우 리소스 가용성 오류 메시지가 표시됩니다.
업그레이드 오류 해결
리소스가 부족하여 업그레이드에 실패한 경우 다음 단계를 시도해 보세요.
- 리소스를 더 적게 소비하는 업그레이드 전략을 고려하세요. 블루-그린 업그레이드를 사용하는 경우 일시 급증 업그레이드를 고려해 보세요.
- 리소스를 사용하지만 더 이상 필요하지 않은 Compute Engine 리소스가 프로젝트에 있는지 확인합니다. 있다면 삭제하고 업그레이드를 다시 시도합니다.
- 처음 두 단계에서 업그레이드 차단을 해제할 수 없는 경우 할당량 상향 조정을 요청하거나 특정 예약의 크기 늘리기를 요청합니다.
- 특수 머신 유형 요구사항 및 용량 제약조건과 같이 리소스가 제한된 환경에서 작업하는 경우 업그레이드 차단 해제 단계는 다음 섹션을 참조하세요.
리소스가 제한된 환경에서 업그레이드
Google Cloud에서 노드 풀이 사용하는 특정 리소스(예: GPU 또는 TPU)에 대한 용량이 제한된 경우 적절한 리소스가 있는지 확인하기 위해 예약을 사용하는 것이 좋습니다. 적절한 리소스가 부족한 경우 기존 용량에 대한 예약이 없으면 더 많은 용량에 액세스할 수 있을 때까지 노드를 업그레이드하지 못할 수 있습니다.
추가 용량을 확보하지 못하면 블루-그린 업그레이드를 사용할 수 없습니다. 일시 급증 업그레이드의 경우 maxSurge
에 추가 노드가 필요합니다. maxUnavailable
사용 시 용량이 예약되어 있지 않으면 GKE에서 업그레이드할 때 노드의 용량을 일시적으로 해제하므로 용량이 제한된 경우 용량이 손실될 위험이 있습니다.
업그레이드가 필요한 노드 풀에 대한 예약이 있는지 여부에 따라 다음 안내를 따르세요.
예약 없이 제한된 용량으로 업그레이드
노드 풀의 노드에 대한 예약이 없는 경우 예약을 만드는 것이 좋습니다. 그렇게 할 수 없는 경우 maxSurge=1;maxUnavailable=0
의 기본 구성으로 일시 급증 업그레이드를 사용하는 것이 좋습니다. 이 구성을 사용하면 기존 용량이 손실되지 않습니다. 그러나 일시 급증 업그레이드는 용량을 사용할 수 있는 경우에만 일시 급증 노드를 만듭니다. 따라서 사용 가능한 용량이 없는 경우 업그레이드하는 데 시간이 더 오래 걸리고 각 노드를 업그레이드하기 위해 용량이 확보될 때까지 노드 풀이 부분적으로 업그레이드된 상태로 유지될 수 있습니다.
예약을 만들거나 기존 예약의 크기를 늘리는 것이 좋습니다.
예약을 통해 제한된 용량으로 업그레이드
노드 풀의 노드에 대해 예약이 있는 경우 용량이 제한된 환경에서 노드 풀을 업그레이드하여 속도와 안정성을 보장하기 위해 일시 급증 업그레이드 설정을 조정할 수 있습니다.
예약에 추가 용량이 있으면 maxSurge
를 사용하여 일시 급증 노드를 만들 수 있습니다. 한 번에 중단할 노드 수와 추가 용량에 따라 maxSurge
를 설정합니다. 예를 들어 한 번에 하나의 노드만 중단하거나 하나의 노드를 추가로 만들 수 있는 용량만 있는 경우 maxSurge=1;maxUnavailable=0
을 설정합니다.
추가 용량이 없는 경우 해당 용량이 예약되어 있으므로 maxSurge=0;maxUnavailable=1
과 같은 구성으로 maxUnavailable
을 사용할 수 있습니다. 이 구성은 한 번에 하나의 노드를 중단하고 업데이트할 노드를 다시 생성합니다.
다음 단계
- 노드 업그레이드 전략 알아보기
- 리소스 할당량 알아보기
- 예약 사용 알아보기