베어메탈용 GKE에서 실패한 노드 재설정

스토리지, 네트워크 또는 잘못된 OS 구성 등으로 인해 베어메탈용 GKE의 노드가 실패한 경우 클러스터 상태를 효율적으로 복원해야 합니다. 클러스터 상태를 복원한 후 노드 장애 문제를 해결할 수 있습니다.

이 문서에서는 노드를 재설정하고 필요한 경우 노드를 강제로 삭제하여 노드 실패 시나리오에서 복구하는 방법을 보여줍니다.

노드에 장애가 발생하지 않은 일반적인 상황에서 클러스터에 노드를 추가하거나 삭제하려면 클러스터 업데이트를 참조하세요.

개요

노드 장애가 발생하면 노드에 연결할 수 없으므로 노드에서 재설정 명령어를 실행할 수 없는 경우가 있습니다. 클러스터에서 노드를 강제로 삭제해야 할 수도 있습니다.

노드를 완전히 재설정하고 클러스터를 업데이트하면 다음 작업이 수행됩니다.

  1. 노드가 kubeadm reset과 유사하게 재설정되고 머신이 사전 설치된 상태로 돌아갑니다.
  2. 노드에 대한 관련 참조가 노드 풀과 클러스터 커스텀 리소스에서 삭제됩니다.

워커 노드

클러스터에서 노드를 삭제하려면 먼저 노드를 완전히 제거하세요.

  1. 노드를 완전히 재설정해 보세요. 노드가 재설정되면 노드가 클러스터에서 삭제됩니다.

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

    다음 값을 바꿉니다.

    • COMMA_SEPARATED_IP: 재설정할 노드의 IP 주소(예: 10.200.0.8,10.200.0.9)
    • CLUSTER_NAME: 장애가 발생한 노드가 포함된 대상 클러스터의 이름
    • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

    이제 노드를 진단하고 초기 실패를 유발한 잘못된 구성을 수정할 수 있습니다. 이 섹션의 나머지 단계를 건너뜁니다.

  2. 이전 노드 재설정 단계가 실패한 경우 클러스터에서 노드를 강제로 삭제할 수 있습니다. 이 강제 삭제는 재설정 명령어를 실행하는 이전 단계를 건너뛰고 노드 풀 및 클러스터 커스텀 리소스에서 노드에 대한 관련 참조를 삭제하는 단계만 수행합니다.

    bmctl reset nodes \
     --addresses COMMA_SEPARATED_IPS \
     --cluster CLUSTER_NAME \
     --kubeconfig ADMIN_KUBECONFIG \
     --force
    

    이제 노드를 진단하고 초기 실패를 유발한 잘못된 구성을 수정할 수 있습니다.

  3. 이전 단계의 노드 클러스터에서 노드를 강제 삭제한 경우 bmctl reset 명령어를 다시 실행하여 노드를 재설정합니다.

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

단일 제어 영역 노드 실패

이 프로세스는 워커 노드와 동일합니다. 제어 영역 노드의 경우 bmctletcd 멤버십도 정리합니다.

클러스터에서 노드를 삭제하려면 먼저 노드를 완전히 제거하세요.

  1. 노드를 완전히 재설정해 보세요. 노드가 재설정되면 노드가 클러스터에서 삭제됩니다.

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

    다음 값을 바꿉니다.

    • COMMA_SEPARATED_IP: 재설정할 노드의 IP 주소(예: 10.200.0.8,10.200.0.9)
    • CLUSTER_NAME: 장애가 발생한 노드가 포함된 대상 클러스터의 이름
    • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

    이제 노드를 진단하고 초기 실패를 유발한 잘못된 구성을 수정할 수 있습니다. 이 섹션의 나머지 단계를 건너뜁니다.

  2. 이전 노드 재설정 단계가 실패한 경우 클러스터에서 노드를 강제로 삭제할 수 있습니다. 이 강제 삭제는 재설정 명령어를 실행하는 이전 단계를 건너뛰고 노드 풀 및 클러스터 커스텀 리소스에서 노드에 대한 관련 참조를 삭제하는 단계만 수행합니다.

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG \
      --force
    

    이제 노드를 진단하고 초기 실패를 유발한 잘못된 구성을 수정할 수 있습니다.

  3. 이전 단계의 노드 클러스터에서 노드를 강제 삭제한 경우 bmctl reset 명령어를 다시 실행하여 노드를 재설정합니다.

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

HA 제어 영역에서 쿼럼 손실

HA 클러스터에 너무 많은 제어 영역 노드가 실패 상태가 되면 클러스터의 쿼럼이 손실되고 사용 불가능하게 됩니다.

  1. 쿼럼이 손실된 클러스터를 복구하려면 나머지 정상 노드에서 다음 명령어를 실행합니다.

    bmctl restore --control-plane-node CONTROL_PLANE_NODE \
      --cluster CLUSTER_NAME \
      [--kubeconfig KUBECONFIG_FILE]
    

    다음 값을 바꿉니다.

    • CONTROL_PLANE_NODE: 클러스터의 일부로 남아 있는 정상 노드의 IP 주소
    • CLUSTER_NAME: 장애가 발생한 노드가 포함된 대상 클러스터의 이름
    • KUBECONFIG_FILE: 사용자 클러스터를 복구하는 경우 사용자 클러스터 kubeconfig 파일의 경로
  2. 실패한 노드를 복구한 후 bmctl reset 명령어를 실행하여 노드를 재설정합니다.

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      [--kubeconfig KUBECONFIG_FILE]
    

    다음 값을 바꿉니다.

    • COMMA_SEPARATED_IP: 재설정할 노드의 IP 주소(예: 10.200.0.8,10.200.0.9)
    • CLUSTER_NAME: 장애가 발생한 노드가 포함된 대상 클러스터의 이름
    • KUBECONFIG_FILE: 관리자 클러스터 kubeconfig 파일의 경로

    실패한 노드가 부하 분산기 노드 풀에 속한 경우 노드가 복구되면 제어 영역 가상 IP 주소를 위해 경합할 수 있으며 새 클러스터가 불안정해질 수 있습니다. 노드를 복구한 후 장애가 발생한 노드에 대해 가능한 한 빨리 재설정 명령어를 실행합니다.

다음 단계

장애가 없을 때 클러스터에서 노드를 추가하거나 삭제하는 방법과 노드 상태를 확인하는 방법에 대한 자세한 내용은 클러스터 업데이트를 참조하세요.