이 페이지에서는 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 버전을 실행할 때 시스템 워크로드에 더 많은 공간이 필요함
- 기존 노드에 새 시스템 워크로드와 기존 워크로드를 실행하기에 충분한 리소스가 없음
- 클러스터에 클러스터 자동 확장 처리가 사용 중지됨
이 문제를 해결하려면 다음을 단계를 시도해 보세요.