노드 자동 복구 구성

이 페이지에서는 GKE On-Prem 클러스터의 노드 자동 복구를 사용 설정하는 방법을 보여줍니다.

노드 자동 복구 기능은 클러스터에서 비정상 노드를 지속적으로 감지하고 복구합니다. 이 기능은 기본적으로 사용 중지되어 있습니다. 관리자 또는 사용자 클러스터를 만드는 동안 이 기능을 사용 설정할 수 있습니다. 기존 사용자 클러스터에서 이 기능을 사용 설정할 수도 있지만 기존 관리자 클러스터에서는 사용 설정할 수 없습니다.

비정상 상태

다음 조건은 노드가 비정상이라는 것을 나타냅니다.

  • 노드 조건 NotReady는 약 10분 동안 true입니다.

  • 생성 후 머신 상태는 약 10분 동안 Unavailable입니다.

  • VM 생성 후 머신 상태는 약 30분 동안 Available이 아닙니다.

  • 약 10분 동안 Available 상태의 머신에 해당하는 노드 객체(nodeRef가 nil)가 없습니다.

복구 전략

노드가 이전 목록의 조건을 하나 이상을 충족하면 GKE On-Prem이 노드에서 복구를 시작합니다.

복구 시 비정상 노드가 드레이닝되고 새 VM이 생성됩니다. 노드 드레이닝이 1시간 동안 실패하면 복구는 강제로 드레이닝하고 연결된 Kubernetes 관리형 디스크를 안전하게 분리합니다.

동일한 MachineDeployment에 여러 비정상 노드가 있으면 한 번에 이러한 노드 중 하나에만 복구가 수행됩니다.

v1 클러스터 구성 파일

노드 자동 복구를 사용 설정하려면 v1 구성 파일(v1 관리자 클러스터 구성 파일 또는 v1 사용자 클러스터 구성 파일)을 열어야 합니다. 노드 자동 복구는 v0 구성 파일에서 지원되지 않습니다.

새 클러스터의 노드 자동 복구 사용 설정

관리자 또는 사용자 클러스터 구성 파일에 대해 autoRepair.enabledtrue로 설정합니다.

autoRepair:
  enabled: true

관리자 또는 사용자 클러스터를 만드는 단계를 계속 진행합니다.

기존 사용자 클러스터의 노드 자동 복구 사용 설정:

사용자 클러스터 구성 파일에서 autoRepair.enabledtrue로 설정합니다.

autoRepair:
  enabled: true

클러스터를 업데이트합니다.

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

다음을 바꿉니다.

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

  • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

사용자 클러스터의 노드 자동 복구 사용 중지

사용자 클러스터 구성 파일에서 autoRepair.enabledfalse로 설정합니다.

autoRepair:
  enabled: false

클러스터를 업데이트합니다.

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

관리자 클러스터의 노드 자동 복구 사용 중지

관리자 클러스터의 노드 자동 복구를 사용 중지하려면 cluster-health-controller 배포를 삭제합니다.

kubectl --kubeconfig ADMIN_KUBECONFIG] delete deployment cluster-health-controller --namespace kube-system

노드 자동 복구 디버깅

관리자 클러스터에서 머신 및 노드 객체를 설명하여 노드 자동 복구 문제를 조사할 수 있습니다. 예를 들면 다음과 같습니다.

머신 객체를 나열합니다.

kubectl --kubeconfig kubeconfig get machines

결과:

default     gke-admin-master-wc
default     gke-admin-node-7458969ff8-5cg8d
default     gke-admin-node-7458969ff8-svqj7
default     xxxxxx-user-cluster-41-25j8d-567f9c848f-fwjqt

머신 객체 중 하나를 설명합니다.

kubectl --kubeconfig kubeconfig describe machine gke-admin-master-wcbrj

출력에서 cluster-health-controller의 이벤트를 확인합니다.

마찬가지로, 노드 객체를 나열하고 설명할 수 있습니다. 예를 들면 다음과 같습니다.

kubectl --kubeconfig kubeconfig get nodes
...
kubectl --kubeconfig kubeconfig describe node gke-admin-master-wcbrj

수동 노드 복구

자동 복구 로직이 적용되지 않는 노드 문제가 있거나 노드 자동 복구를 사용 설정하지 않은 경우 수동 복구를 수행할 수 있습니다. 그러면 노드가 삭제되고 다시 생성됩니다.

노드에 해당하는 머신 객체의 이름을 가져옵니다.

kubectl --kubeconfig KUBECONFIG get machines

KUBECONFIG를 관리자 또는 사용자 클러스터 kubeconfig 파일의 경로로 바꿉니다.

머신 객체에 repair 주석을 추가합니다.

kubectl annotate --kubeconfig KUBECONFIG machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true

MACHINE_NAME을 머신 객체의 이름으로 바꿉니다.

머신 객체를 삭제합니다.

kubectl delete --kubeconfig KUBECONFIG machine MACHINE_NAME