업그레이드 문제 해결


이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터 업그레이드 문제를 해결하는 방법을 보여줍니다.

추가 지원이 필요하면 Cloud Customer Care에 연락합니다.

제어 영역 업그레이드 후 kube-apiserver 비정상

클러스터 GKE 버전의 수동 제어 영역 업그레이드를 시작하면 다음 문제가 발생합니다. 일부 사용자 배포 허용 웹훅은 시스템 구성요소가 올바르게 작동하는 데 필요한 허용 RBAC 역할을 만들지 못하도록 차단할 수 있습니다. 제어 영역 업그레이드 중에 Google Cloud는 Kubernetes API 서버(kube-apiserver) 구성요소를 다시 만듭니다. 웹훅이 API 서버 구성요소에 대한 RBAC 역할을 차단하면 API 서버가 시작되지 않고 클러스터 업그레이드가 완료되지 않습니다.

gcloud CLI의 오류 메시지는 다음과 비슷합니다.

FAILED: All cluster resources were brought up, but: component "KubeApiserverReady" from endpoint "readyz of kube apiserver is not successful" is unhealthy.

실패한 웹훅을 식별하려면 다음 정보를 사용하여 RBAC 호출에 대한 GKE 감사 로그를 확인합니다.

protoPayload.resourceName="RBAC_RULE"
protoPayload.authenticationInfo.principalEmail="system:apiserver"

RBAC_RULE은 RBAC 역할의 전체 이름입니다(예: rbac.authorization.k8s.io/v1/clusterroles/system:controller:horizontal-pod-autoscaler).

실패한 웹훅의 이름은 다음 형식으로 로그에 표시됩니다.

admission webhook WEBHOOK_NAME denied the request

이 문제를 해결하려면 다음을 시도해 보세요.

  • system: 프리픽스가 있는 ClusterRoles를 만들고 업데이트할 수 있도록 제약조건을 조정합니다.
  • 시스템 RBAC 역할 생성 및 업데이트에 대한 요청을 가로채지 않도록 웹훅을 조정합니다.
  • 웹훅을 사용 중지합니다.

이런 문제가 생기는 이유는 무엇인가요?

Kubernetes는 최신 마이너 버전의 기본 정책으로 기본 시스템 RBAC 역할을 자동 조정합니다. 시스템 역할에 대한 기본 정책은 새 Kubernetes 버전에서 변경되는 경우가 있습니다.

이 조정을 수행하기 위해 GKE는 클러스터에서 ClusterRoles 및 ClusterRoleBindings를 만들거나 업데이트합니다. 기본 RBAC 정책이 사용하는 권한 범위로 인해 생성 또는 업데이트 요청을 가로채고 거부하는 웹훅이 있는 경우 API 서버가 새 마이너 버전에서 작동하지 않습니다.

Standard 클러스터 업그레이드 후 워크로드 제거됨

다음 조건이 모두 해당하는 경우 클러스터 업그레이드 후 워크로드가 제거될 위험이 있습니다.

  • 클러스터 제어 영역이 새 GKE 버전을 실행할 때 시스템 워크로드에 더 많은 공간이 필요함
  • 기존 노드에 새 시스템 워크로드와 기존 워크로드를 실행하기에 충분한 리소스가 없음
  • 클러스터에 클러스터 자동 확장 처리가 사용 중지됨

이 문제를 해결하려면 다음을 단계를 시도해 보세요.

다음 단계

추가 지원이 필요하면 Cloud Customer Care에 연락합니다.