문제 해결: 클러스터 진단 및 재설정

클러스터를 진단하거나 확인하여 문제를 디버깅하고 클러스터 상태의 스냅샷을 캡처할 수 있습니다. 또한 설치 시 부분적으로 성공했지만 클러스터가 오류를 반환하거나 올바르게 작동하지 않는 경우 클러스터를 재설정할 수 있습니다.

bmctl check cluster를 사용한 클러스터 진단

bmctl check cluster 명령어로 생성된 클러스터의 상태를 캡처할 수 있습니다. 명령 플래그를 사용하면 명령어의 진단 범위를 선택할 수 있으므로 집중된 정보를 얻을 수 있습니다. 사용자 클러스터에서는 bmctl check cluster 명령어를 사용할 수 없습니다.

진단 정보는 문제를 발견하고 더 효과적으로 배포를 디버깅하는 데 도움이 될 수 있습니다. 이 명령어는 정의된 범위에 해당하는 모든 관련 클러스터 및 노드 구성 파일을 캡처한 후 단일 tar 보관 파일에 해당 정보를 패키징합니다.

bmctl check cluster --snapshot --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG

이 명령어는 지정된 클러스터에 있는 모든 시스템 구성요소와 머신의 관련 디버그 정보를 포함하는 tar 보관 파일을 출력합니다.

ADMIN_KUBECONFIG는 kubeconfig 파일에 경로를 지정하고 CLUSTER_NAME은 클러스터 이름을 지정합니다.

다음 명령어 플래그로 수집된 진단 정보의 범위를 변경할 수 있습니다.

  • --snapshot-scenario all 플래그는 지정된 클러스터의 모든 pod를 포함하도록 진단 스냅샷의 범위를 늘립니다.
bmctl check cluster --snapshot --snapshot-scenario all --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
  • --snapshot-dry-run 플래그는 --snapshot-config string 플래그와 함께 작동합니다. 커스텀 진단 범위를 정의하기 위해 수정할 수 있는 구성 파일을 출력하려면 --snapshot-dry-run 플래그를 사용하세요. 범위에 특정 pod, 네임스페이스 또는 노드 명령어가 포함될 수 있습니다.

--snapshot-dry-run 플래그로 생성된 출력 파일을 수정한 후에는 이 파일을 입력으로 사용하여 아래에 설명된 --snapshot-config string 플래그로 특정 범위를 진단할 수 있습니다. 이 플래그를 생략하면 기본 구성이 적용됩니다.

bmctl check cluster --snapshot --snapshot-dry-run --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
  • --snapshot-config 플래그는 bmctl 명령어에 지시하여 스냅샷 구성 파일에 지정된 범위 옵션을 사용하도록 합니다. 일반적으로 --snapshot-dry-run 플래그로 스냅샷 구성 파일을 만듭니다.
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG

관리자 클러스터의 중단된 설치/업그레이드에 대한 스냅샷 만들기

관리자/하이브리드/독립형 클러스터를 설치할 때 bmctl이 다음 출력에서 멈춘 경우

  • 클러스터 kubeconfig가 준비될 때까지 대기
  • 클러스터가 준비될 때까지 대기
  • 노드 풀이 준비될 때까지 대기

또는 관리자/하이브리드/독립형 클러스터를 업그레이드하는 경우

  • 업그레이드가 완료될 때까지 대기

다음 명령어를 실행하여 부트스트랩 클러스터를 사용하여 스냅샷을 만들 수 있습니다.

bmctl check cluster --snapshot --kubeconfig <var>WORKSPACE_DIR</var>/.kindkubeconfig --cluster <var>CLUSTER_NAME</var>

bmctl reset cluster로 클러스터 재설정

클러스터가 올바르게 설치되지 않으면 노드를 재설정하여 정상 상태로 되돌릴 수 있습니다. 그런 다음 구성을 변경한 후에 클러스터를 다시 설치할 수 있습니다. 사용자 클러스터에서는 bmctl reset cluster 명령어를 사용할 수 없습니다.

클러스터를 재설정하려면 다음 명령어를 실행합니다.

bmctl reset --cluster CLUSTER_NAME

재설정 명령어는 전체 클러스터에 적용됩니다. 클러스터 내 노드 하위 집합을 대상으로 하는 옵션은 없습니다.

명령어를 실행하면 이 샘플과 비슷한 출력이 표시됩니다.

bmctl reset -c cluster1
Creating bootstrap cluster... OK
Deleting GKE Hub member admin in project my-gcp-project...
Successfully deleted GKE Hub member admin in project my-gcp-project
Loading images... OK
Starting reset jobs...
Resetting: 1    Completed: 0    Failed: 0
...
Resetting: 0    Completed: 1    Failed: 0
Flushing logs... OK

클러스터 세부정보 재설정

재설정 작업 중에 bmctl은 먼저 GKE 허브 멤버십 등록 삭제를 시도한 다음 영향을 받은 노드를 삭제합니다.

초기화 중에는 anthos-system StorageClass의 스토리지 마운트 및 데이터도 삭제됩니다.

bmctl은 모든 노드에 대해 kubeadm reset을 실행하고, 클러스터 네트워킹에 사용되는 터널 인터페이스를 삭제하고, 다음 디렉터리를 삭제합니다.

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

부하 분산기 노드에서 bmctl도 다음 작업을 수행합니다.

  • keepalivedhaproxy 서비스 사용 중지
  • keepalivedhaproxy의 구성 파일 삭제

재설정 도구는 클러스터 구성 파일이 현재 작업 디렉터리의 다음 위치에 있을 것으로 예상합니다.

bmctl-workspace/cluster name/cluster name.yaml