노드 재설정 및 클러스터 삭제

베어메탈용 Anthos 클러스터를 설치하는 동안에는 해당 클러스터를 호스팅하는 노드에 바이너리 및 systemd 서비스가 설치되고 이들 서비스는 노드의 포트에서 수신 대기하기 시작합니다.

하지만 클러스터 설치에 실패하면 이러한 모든 바이너리와 서비스를 삭제해야 합니다. 즉, 클러스터 설치를 다시 시도하기 위해서는 먼저 노드를 재설정하거나 완전히 삭제해야 합니다. 이런 방식으로 노드를 재설정되지 않으면 다음에 클러스터 설치하려 할 때 실패하게 됩니다.

이 페이지에서는 특정 노드에 대하여 이러한 제거 작업을 수행하고 클러스터를 삭제하는 방법을 설명합니다.

삭제 방법 선택

클러스터를 삭제하는 데 사용하는 방법은 다음에 따라 다릅니다.

  • 클러스터 유형
  • 특정 노드만 삭제하고 전체 클러스터는 삭제하지 않으려는 경우
  • 클러스터가 생성된 방법

베어메탈용 Anthos 클러스터는 다음 삭제 방법을 제공합니다.

  • Google Cloud 콘솔 또는 Google Cloud CLI:

    • 콘솔 또는 gcloud CLI를 사용하여 Anthos On-Prem API에서 관리되는 사용자 클러스터를 삭제합니다. 다음 중 하나가 참인 경우 Anthos On-Prem API로 사용자 클러스터를 관리합니다.

      • 클러스터가 Google Cloud 콘솔 또는 gcloud CLI를 사용하여 생성되었고, 이로 인해 클러스터를 관리하도록 Anthos On-Prem API를 자동으로 구성합니다.

      • 클러스터는 bmctl을 사용하여 생성되었지만 Anthos On-Prem API에서 관리되도록 구성되었습니다.

  • bmctl:

    • bmctl reset nodes 명령어를 사용하여 특정 노드 삭제
    • bmctl reset을 사용하여 Anthos On-Prem API에서 관리되지 않는 관리자, 하이브리드, 독립 실행형 클러스터와 사용자 클러스터를 삭제합니다.

    bmctl를 사용하여 노드를 재설정하거나 클러스터를 삭제하는 경우 이 명령어는 클러스터 구성 파일이 현재의 작업 디렉터리에 있다고 가정합니다. 기본적으로 경로는 다음과 같습니다.

    bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

    --workspace-dir 플래그를 사용하여 클러스터 만들기 중에 다른 디렉터리를 지정한 경우 클러스터를 재설정할 때도 이 플래그를 사용해서 작업 디렉터리를 지정해야 합니다.

  • kubectl:

    • kubectl delete cluster를 사용하여 Anthos On-Prem API 클러스터에서 관리되지 않는 사용자 클러스터만 삭제합니다. 다른 클러스터 유형에는 이 명령어를 실행하지 마세요.
    • 참고로 kubectl delete cluster 명령어를 사용하는 경우에는 클러스터를 삭제한 후 클러스터가 있는 네임스페이스도 삭제해야 합니다.

클러스터를 삭제한 후에는 필요한 구성을 변경한 후 다시 설치할 수 있습니다.

자체 관리형 클러스터 삭제

관리자, 하이브리드, 독립형 클러스터를 삭제하려면 다음 명령어를 실행합니다.

bmctl reset --cluster CLUSTER_NAME

명령어에서 CLUSTER_NAME을 재설정하려는 클러스터의 이름으로 바꿉니다.

bmctl cluster reset 명령어의 결과는 이 샘플과 비슷하게 표시됩니다.

Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log
[2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK
[2022-10-25 18:48:18+0000] Loading images... OK
[2022-10-25 18:48:18+0000] Waiting for reset jobs to finish...
[2022-10-25 18:48:28+0000] Operation reset in progress: 1       Completed: 0    Failed: 0
...
[2022-10-25 18:50:08+0000] Operation reset in progress: 0       Completed: 1    Failed: 0
[2022-10-25 18:50:08+0000] Flushing logs... OK
[2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345...
[2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345
[2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK

클러스터 삭제가 완료되면 새 클러스터를 만들 수 있습니다. 자세한 내용은 클러스터 만들기 개요를 참조하세요.

사용자 클러스터 삭제

bmctl

bmctl을 사용하여 bmctl 또는 kubectl로 생성된 사용자 클러스터를 삭제할 수 있습니다.

다음 명령어를 실행하여 bmctl로 사용자 클러스터를 삭제합니다.

bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

명령어에서 다음 항목을 사용자 환경에 해당하는 정보로 바꿉니다.

  • USER_CLUSTER_NAME: 삭제할 사용자 클러스터의 이름입니다.

  • ADMIN_KUBECONFIG_PATH: 연결된 관리자 클러스터의 kubeconfig 파일 경로입니다. bmctl--kubeconfig--admin-kubeconfig 플래그의 별칭으로 사용하도록 지원합니다.

bmctl cluster reset 명령어의 결과는 이 샘플과 비슷하게 표시됩니다.

Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log
[2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK
[2022-10-25 18:48:18+0000] Loading images... OK
[2022-10-25 18:48:18+0000] Waiting for reset jobs to finish...
[2022-10-25 18:48:28+0000] Operation reset in progress: 1       Completed: 0    Failed: 0
...
[2022-10-25 18:50:08+0000] Operation reset in progress: 0       Completed: 1    Failed: 0
[2022-10-25 18:50:08+0000] Flushing logs... OK
[2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345...
[2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345
[2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK

kubectl

kubectl을 사용하여 bmctl 또는 kubectl로 만든 사용자 클러스터를 삭제할 수 있습니다. kubectl을 사용하여 사용자 클러스터를 삭제하려면 먼저 클러스터 객체를 삭제한 후 해당 네임스페이스를 삭제해야 합니다. 이렇게 하지 않으면 머신 재설정 작업을 만들 수 없고 삭제 프로세스가 무기한 막힐 수 있습니다.

kubectl로 사용자 클러스터를 삭제하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하여 클러스터 객체를 삭제합니다.

    kubectl delete cluster USER_CLUSTER_NAME -n CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH
    

    명령어에서 다음 항목을 사용자 환경에 해당하는 정보로 바꿉니다.

    • USER_CLUSTER_NAME: 삭제할 사용자 클러스터의 이름입니다.

    • USER_CLUSTER_NAMESPACE: 클러스터의 네임스페이스입니다. 기본적으로 베어메탈용 Anthos 클러스터에 대한 클러스터 네임스페이스는 cluster-가 앞에 표시된 클러스터 이름입니다. 예를 들어 클러스터 이름을 test로 지정한 경우 네임스페이스 이름은 cluster-test가 됩니다.

    • ADMIN_KUBECONFIG_PATH: 연결된 관리자 클러스터의 kubeconfig 파일 경로입니다.

  2. 클러스터가 성공적으로 삭제되었으면 다음 명령어를 실행하여 네임스페이스를 삭제합니다.

    kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
    

콘솔

Anthos On-Prem API로 사용자 클러스터를 관리하는 경우 다음 단계를 수행하여 클러스터를 삭제합니다.

  1. 콘솔에서 Anthos 클러스터 페이지로 이동합니다.

    Anthos 클러스터 페이지로 이동

  2. 사용자 클러스터가 있는 Google Cloud 프로젝트를 선택합니다.

  3. 클러스터 목록에서 삭제할 클러스터를 클릭합니다.

  4. 세부정보 패널에서 유형Anthos(베어메탈 사용자)인 경우 다음 단계를 수행하여 클러스터를 삭제합니다.

    1. 세부정보 패널에서 세부정보 보기를 클릭합니다.

    2. 창 상단에서 삭제를 클릭합니다.

    3. 확인 메시지가 표시되면 삭제를 다시 클릭합니다.

    유형external이면 클러스터가 명령줄 도구를 사용하여 생성되었으며 Anthos On-Prem API에서 관리되지 않음을 나타냅니다. 이 경우 bmctl 또는 kubectl을 사용하여 클러스터를 삭제합니다.

gcloud CLI

Anthos On-Prem API로 사용자 클러스터를 관리하는 경우 다음 단계를 수행하여 gcloud CLI가 설치된 컴퓨터에서 클러스터를 삭제합니다.

  1. Google 계정으로 로그인합니다.

    gcloud auth login
    
  2. 구성요소를 업데이트합니다.

    gcloud components update
    
  3. delete 명령어에 올바른 클러스터 이름을 지정하는 데 도움이 되는 클러스터 목록을 가져옵니다.

    gcloud beta container bare-metal clusters list \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    다음을 바꿉니다.

    • FLEET_HOST_PROJECT_ID: 클러스터가 생성된 프로젝트의 ID입니다.

    • LOCATION: 사용자 클러스터와 연결된 Google Cloud 위치

    출력은 다음과 비슷합니다.

    NAME                      LOCATION    VERSION         ADMIN_CLUSTER            STATE
    example-user-cluster-1a   us-west1    1.13.10          example-admin-cluster-1  RUNNING
    
  4. 다음 명령어를 실행하여 클러스터를 삭제합니다.

    gcloud beta container bare-metal clusters delete USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION \
      --force \
      --allow-missing
    

    다음을 바꿉니다.

    • USER_CLUSTER_NAME: 삭제할 사용자 클러스터의 이름입니다.

    • FLEET_HOST_PROJECT_ID: 클러스터가 생성된 프로젝트의 ID입니다.

    • LOCATION: 사용자 클러스터와 연결된 Google Cloud 위치

    --force 플래그를 사용하면 노드 풀이 있는 클러스터를 삭제할 수 있습니다. --force 플래그가 없으면 먼저 노드 풀을 삭제한 후 클러스터를 삭제해야 합니다.

    --allow-missing 플래그는 표준 Google API 플래그입니다. 이 플래그를 포함할 때 클러스터를 찾을 수 없으면 명령어가 성공을 반환합니다.

    명령어가 failed connecting to the cluster's control plane 텍스트가 포함된 오류를 반환하는 경우 관리자 클러스터, Connect Agent 또는 온프레미스 환경에 연결 문제가 있다는 것입니다.

    • 네트워크 문제로 인해 연결 문제가 일시적이라고 생각되면 기다렸다가 명령어를 다시 시도하세요.

    • 명령어 재시도가 계속 실패하면 Connect 에이전트 로그 수집을 참조하여 Connect Agent 문제를 해결하세요.

    • 관리자 클러스터가 삭제되었거나 관리자 또는 사용자 클러스터의 노드 머신이 종료되거나 오프라인 상태가 된 경우 --ignore-errors 플래그를 포함하고 명령어를 다시 시도합니다.

다른 플래그에 대한 자세한 내용은 gcloud CLI 참조를 확인하세요.

특정 클러스터 노드 재설정

예를 들어 관리자 클러스터가 삭제되었지만 관리자 클러스터에서 관리하는 사용자 클러스터가 남아 있는 경우 클러스터의 특정 노드를 재설정할 수 있습니다. 이 경우 관리자 클러스터가 삭제되었으므로 전체 사용자 클러스터를 삭제할 수 없습니다. 따라서 사용자 클러스터 노드를 개별적으로 재설정해야 합니다.

노드를 재설정하려면 Google Container Registry(GCR)에 대한 읽기 액세스 권한이 있는 서비스 계정이 필요합니다. bmctl 명령어는 이 서비스 계정의 JSON 키 파일을 인수로 간주합니다. 클러스터의 개별 노드를 재설정하려면 다음 명령어를 실행하세요.

bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
    --ssh-private-key-path SSH_KEY_PATH \
    --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \
    --login-user root

명령어에서 다음 항목을 사용자 환경에 해당하는 정보로 바꿉니다.

  • NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS: 삭제할 노드의 IP 주소를 쉼표로 구분한 목록

  • SSH_KEY_PATH: SSH 비공개 키의 경로. 이 키는 재설정 중에 노드와의 SSH 연결을 설정하는 데 사용됩니다.

  • SERVICE_ACCOUNT_KEY_PATH: 서비스 계정 키가 포함된 JSON 파일의 경로. 이 키는 Google Container Registry에서 이미지를 가져올 수 있는 bmctl 권한을 부여합니다. 콘솔 또는 gcloud CLI를 사용하여 서비스 계정 키를 만들 수 있습니다. 자세한 내용은 서비스 계정 키 만들기 및 관리를 참조하세요. 서비스 계정 키 파일을 만드는 또 다른 방법은 --create-service-accounts 플래그가 지정된 create config 명령어를 실행하는 것입니다. 해당 명령어에 대한 자세한 내용은 bmctl을 사용하여 클러스터 구성 만들기 및 관리를 참조하세요.

클러스터 삭제 세부정보

삭제하는 동안 클러스터의 Fleet 멤버십 등록, 스토리지 마운트, anthos-system StorageClass의 데이터가 삭제됩니다.

모든 노드에서 클러스터 네트워킹에 사용되는 터널 인터페이스가 삭제되고 다음 디렉터리가 삭제됩니다.

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

부하 분산기 노드:

  • keepalivedhaproxy 서비스가 삭제됩니다.
  • keepalivedhaproxy의 구성 파일이 삭제됩니다.