이 페이지는 Google Kubernetes Engine(GKE)에서 동시 작업으로 인해 발생하는 오류를 해결하는 데 도움이 됩니다.
이 페이지는 Cluster is running incompatible operation
오류와 같은 배포 실패의 원인을 파악하려는 애플리케이션 개발자를 대상으로 합니다. 또한 클러스터 또는 노드 풀 수준에서 이러한 동시 작업 오류를 진단하고 해결하려는 플랫폼 관리자 및 운영자를 위한 것입니다.Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE 사용자 역할 및 태스크를 참조하세요.
동시 작업 오류 이해하기
GKE에서 클러스터 작업은 클러스터의 컨트롤 플레인 또는 노드 풀의 상태를 수정하는 작업입니다. 이러한 작업은 GKE에서 관리하며 사용자가 시작하거나 유지보수 목적으로 GKE에서 시작할 수 있습니다. 일반적인 클러스터 작업은 다음과 같습니다.
- 클러스터 생성 또는 삭제
- 클러스터의 컨트롤 플레인 버전 업그레이드
- 노드 풀 생성, 업데이트, 크기 조절 또는 삭제
- 기능 사용 설정 또는 중지와 같은 클러스터 수준 설정 수정
- GKE에서 자동으로 수행하는 컨트롤 플레인 복구 작업
클러스터에서 작업을 실행할 때 다음과 유사한 오류 메시지가 표시될 수 있습니다.
Cluster is running incompatible operation OPERATION_NAME
Cluster is currently being created, deleted, updated or repaired and cannot be updated
Operation OPERATION_NAME is currently ACTIONING cluster CLUSTER_NAME. Please wait and try again once it is done
이러한 오류에는 다음 값이 포함될 수 있습니다.
OPERATION_NAME
: 클러스터에서 이미 실행 중인 작업의 고유 ID입니다. 이 이름을 사용하여 새 작업의 시작을 차단하는 기존 작업의 상태를 추적합니다.ACTIONING
: 클러스터에서 실행되는 작업입니다. 예를 들면Creating
또는Updating
입니다.CLUSTER_NAME
: 작업의 타겟 클러스터 이름입니다.
이러한 오류는 GKE가 충돌을 방지하기 위해 동시에 실행할 수 있는 작업 수를 제한하기 때문에 발생합니다. 일반적으로 GKE는 클러스터 수준에서 하나의 작업 또는 노드 풀당 하나의 작업만 동시에 실행하도록 허용합니다. GKE는 컨트롤 플레인 업그레이드와 같은 자체 자동 작업을 실행하며, 이러한 작업은 이 한도에 포함되고 새 태스크를 시작하는 것을 일시적으로 차단할 수 있습니다.
동시 작업 오류 해결
다른 작업이 진행 중임을 나타내는 오류가 표시되면 진행 중인 태스크를 식별하고 완료될 때까지 기다립니다.
차단 작업의 이름을 모르는 경우 클러스터의 진행 중인 작업과 대기 중인 작업을 모두 나열합니다.
gcloud container operations list \ --location=LOCATION \ --filter '(targetLink~/clusters/CLUSTER_NAME$ OR targetLink~/clusters/CLUSTER_NAME/) AND status!=DONE' \ --format json
다음을 바꿉니다.
LOCATION
: 클러스터가 리전 클러스터인지 영역 클러스터인지에 따라 클러스터의 Compute Engine 리전 또는 영역(예:us-central1
또는us-central1-a
)입니다.CLUSTER_NAME
: 실패한 작업이 있는 클러스터의 이름입니다.출력은 다음과 비슷합니다.
{ "name": "operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff", "operationType": "UPDATE_CLUSTER", "selfLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff", "startTime": "2001-01-01T00:00:00.000000000Z", "status": "RUNNING", "targetLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME", "zone": "LOCATION" }
출력에서 각 작업의
name
필드를 검토합니다. 이 값은 새 작업의 시작을 차단하는 작업의 이름입니다. 다음 단계에서 이 값이 필요합니다.출력의 다른 필드에 관한 자세한 내용은
projects.locations.operations
API 문서를 참조하세요.
작업이 완료될 때까지 기다립니다.
gcloud container operations wait OPERATION_NAME \ --location=LOCATION
OPERATION_NAME
을 오류 메시지 또는 이전 단계의 차단 작업 이름으로 바꿉니다.이 명령어는 작업을 적극적으로 모니터링하고 작업이 완료되면 종료됩니다.
차단 작업의 상태가
DONE
이면 오류를 일으킨 작업을 다시 시도합니다.
다음 단계
문서에서 문제 해결 방법을 찾을 수 없으면 지원 받기를 참조하여 다음 주제에 대한 조언을 포함한 추가 도움을 요청하세요.
- Cloud Customer Care에 문의하여 지원 케이스를 엽니다.
- StackOverflow에서 질문하고
google-kubernetes-engine
태그를 사용하여 유사한 문제를 검색해 커뮤니티의 지원을 받습니다.#kubernetes-engine
Slack 채널에 가입하여 더 많은 커뮤니티 지원을 받을 수도 있습니다. - 공개 Issue Tracker를 사용하여 버그나 기능 요청을 엽니다.