클러스터 백업 및 복원

이 페이지에서는 GKE On-Prem 관리자 및 사용자 클러스터의 etcd 키-값 저장소의 백업을 직접 만들고 복원하는 방법을 설명합니다. 또한 이 페이지에서는 클러스터의 etcd 저장소를 자동으로 백업하는 데 사용할 수 있는 스크립트도 제공합니다.

etcd 데이터와 보안 비밀을 손상시킬 수 있는 예상 재해로부터 복구할 수 있도록 백업을 만들어야 합니다. 백업을 클러스터 외부에 있고 클러스터 작업에 종속되지 않는 위치에 저장해야 합니다. 안전을 위해 백업 사본도 만드는 것이 좋습니다.

모든 클러스터에서 실행되는 etcd 이벤트 pod는 사용자 클러스터를 복원하는 데 중요하지 않지만 비슷한 프로세스를 따라 백업할 수 있습니다. 또한 이 절차를 수행하면 etcd 저장소만 백업할 수 있습니다. PersistentVolume은 이 가이드의 일부로 백업되지 않으므로 추가 백업 및 복원 절차를 계획해야 합니다.

제한사항

  • 애플리케이션별 데이터 백업은 이 기능의 범위를 벗어납니다.
  • 보안 비밀은 수동으로 순환할 때까지 유효합니다.
  • 백업을 만든 후에 예약된 워크로드는 백업으로 복원되지 않습니다.
  • 현재는 실패한 클러스터 업그레이드에서 복원할 수 없습니다.
  • 이 절차는 삭제된 클러스터를 복원하기 위한 것이 아닙니다.

알려진 문제

sudo 명령어를 실행하면 다음 오류가 발생할 수 있습니다.

sudo: unable to resolve host gke-admin-master-[CLUSTER_ID]

이렇게 하면 /etc/hosts 파일에 다음 줄을 추가합니다.

127.0.0.1 gke-admin-master-[CLUSTER_ID]

사용자 클러스터 백업

사용자 클러스터 백업에는 사용자 클러스터 etcd의 스냅샷이 포함됩니다. 클러스터 etcd에는 클러스터 상태를 관리하는 데 필요한 모든 Kubernetes 객체와 커스텀 객체가 포함되어 있습니다. 이 스냅샷에는 클러스터의 구성요소와 워크로드를 다시 만드는 데 필요한 데이터가 포함되어 있습니다.

사용자 클러스터 백업

사용자 클러스터의 etcd는 관리자 클러스터의 kubeconfig를 사용하여 액세스할 수 있는 제어 영역 노드에 저장됩니다.

etcd 스냅샷을 만들려면 다음 단계를 실행합니다.

  1. kube-etcd 컨테이너에 셸을 사용합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] exec \
    -it -n [USER_CLUSTER_NAME] kube-etcd-0 -c \
    kube-etcd -- bin/sh

    각 항목의 의미는 다음과 같습니다.

    • [ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일입니다.
    • [USER_CLUSTER_NAME]은 사용자 클러스터 이름입니다. 특히 사용자 클러스터 이름으로 지정된 관리자 클러스터의 네임스페이스를 전달합니다.
  2. 셸에서 etcdctl을 사용하여 로컬 디렉터리에 snapshot.db라는 백업을 만듭니다.

    ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
    --cacert=/etcd.local.config/certificates/etcdCA.crt \
    --cert=/etcd.local.config/certificates/etcd.crt --key=/etcd.local.config/certificates/etcd.key \
    snapshot save snapshot.db
  3. 컨테이너를 종료합니다.

    exit
  4. kubectl cp를 사용하여 kube-etcd 컨테이너에서 백업을 복사합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] cp \
    [USER_CLUSTER_NAME]/kube-etcd-0:snapshot.db [DIRECTORY] -c kube-etcd

    여기서 [RELATIVE_DIRECTORY]는 백업을 저장할 경로입니다.

사용자 클러스터 백업 복원

  • 백업을 복원하기 전에 클러스터를 진단하여 기존 문제를 해결해야 합니다. 문제가 있는 클러스터에 백업을 복원하면 문제가 다시 발생하거나 악화될 수 있습니다. 클러스터 복원에 대한 추가 지원은 GKE On-Prem 지원팀에 문의하세요.

  • HA 사용자 클러스터를 만든 경우 etcd 클러스터 구성원당 한 번씩 이 단계를 실행해야 합니다. 각 etcd 구성원을 복원하는 경우 동일한 스냅샷을 사용할 수 있습니다. 모든 etcd pod가 비정상 종료되는 경우가 아니면 이 단계를 수행하지 마세요. 이는 데이터가 손상되었음을 나타냅니다.

etcd Pod를 비정상적으로 종료

다음 안내에서는 사용자 클러스터의 etcd 데이터가 손상되고 etcd pod가 비정상 종료되는 경우에 백업을 복원하는 방법을 설명합니다. 사용자 클러스터의 API 서버가 실행 중이며 새 pod를 예약할 수 있다는 가정 하에서 etcd pod를 기존 pod 볼륨에 배포하고 손상된 데이터를 백업으로 덮어써 복구할 수 있습니다.

  1. 다음 자리표시자 값을 채운 후 아래의 etcd pod 사양을 restore-etcd.yaml 파일에 복사합니다.

    • [MEMBER_NUMBER]는 복원 중인 번호가 지정된 pod입니다.
    • [NODE_NAME][MEMBER_NUMBER[ Pod가 실행 중인 노드입니다.
    • [ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일입니다.
    • [USER_CLUSTER_NAME]은 사용자 클러스터 이름입니다.
    • [DEFAULT_TOKEN]은 인증에 사용됩니다. 다음 명령어를 실행하여 이 값을 찾을 수 있습니다.

      kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
      -n [USER_CLUSTER_NAME] get pods kube-etcd-0 \
      -o yaml | grep default-token

    restore-etcd.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        Component: restore-etcd-[MEMBER_NUMBER]
      name: restore-etcd-0
      namespace: [USER_CLUSTER_NAME]
    spec:
      restartPolicy: Never
      containers:
      - command: ["/bin/sh"]
        args: ["-ec", "while :; do echo '.'; sleep 5 ; done"]
        image: gcr.io/gke-on-prem-release/etcd:v3.2.24-1-gke.0
        imagePullPolicy: IfNotPresent
        name: restore-etcd
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/lib/etcd
          name: data
        - mountPath: /etcd.local.config/certificates
          name: etcd-certs
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: [DEFAULT_TOKEN]
          readOnly: true
      dnsPolicy: ClusterFirst
      hostname: restore-etcd-0
      imagePullSecrets:
      - name: private-registry-creds
      nodeSelector:
        kubernetes.googleapis.com/cluster-name: [USER_CLUSTER_NAME]
        kubernetes.io/hostname: [NODE_NAME]
      priority: 0
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: default
      serviceAccountName: default
      subdomain: restore-etcd
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoExecute
        key: node.kubernetes.io/not-ready
        operator: Exists
        tolerationSeconds: 300
      - effect: NoExecute
        key: node.kubernetes.io/unreachable
        operator: Exists
        tolerationSeconds: 300
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: data-kube-etcd-[MEMBER_NUMBER]
      - name: etcd-certs
        secret:
          defaultMode: 420
          secretName: kube-etcd-certs
      - name: [DEFAULT_TOKEN]
        secret:
          defaultMode: 420
          secretName: [DEFAULT_TOKEN]
          
  2. pod를 배포합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
    -n [USER_CLUSTER_NAME] create -f restore-etcd.yaml
  3. etcd의 백업 파일 snapshot.db를 새 pod에 복사합니다. snapshot.db는 백업을 만든 상대 디렉터리에 있습니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
    cp [RELATIVE_DIRECTORY]/snapshot.db \
    [USER_CLUSTER_NAME]/restore-etcd-0:snapshot.db
  4. 셸을 restore-etcd pod에 사용합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
    -it -n [USER_CLUSTER_NAME] exec restore-etcd-0 -- bin/sh
  5. 다음 명령어를 실행하여 백업이 포함된 새 기본 etcd 폴더를 만듭니다.

    ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
    --cacert=/etcd.local.config/certificates/etcdCA.crt \
    --cert=/etcd.local.config/certificates/etcd.crt --key=/etcd.local.config/certificates/etcd.key \
    snapshot restore snapshot.db
  6. 손상된 etcd 데이터를 백업으로 덮어씁니다.

    rm -r var/lib/etcd/*; cp -r default.etcd/* var/lib/etcd/
  7. 컨테이너를 종료합니다.

    exit
  8. 비정상 종료되는 etcd pod를 삭제합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
    -n [USER_CLUSTER_NAME] delete pod kube-etcd-0
  9. etcd pod가 더 이상 비정상 종료되지 않는지 확인합니다.

  10. restore-etcd.yaml을 삭제하고 restore-etcd pod를 삭제합니다.

    rm restore-etcd.yaml;
    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
    -n [USER_CLUSTER_NAME] delete pod restore-etcd-0

관리자 클러스터 백업

관리자 클러스터 백업에는 다음이 포함됩니다.

  • 관리자 클러스터 etcd의 스냅샷
  • 관리자 클러스터와 사용자 클러스터에 인증하는 데 필요한 관리자 제어 영역의 보안 비밀

관리자 클러스터 백업을 만들기 전에 다음 단계를 완료합니다.

  1. 관리자 클러스터 제어 영역에 SSH를 통해 연결하는 데 사용되는 관리자 클러스터의 외부 IP 주소를 찾습니다.

    kubectl --kubeconfig [ADMIN_KUBECONFIG] get nodes -n kube-system -o wide | grep master

    여기서 [ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일입니다.

  2. 관리자 클러스터의 비공개 키에서 vsphere_tmp라는 SSH 키를 만듭니다.

    관리자 클러스터 보안 비밀에서 비공개 키를 찾을 수 있습니다.

    kubectl --kubeconfig [ADMIN_KUBECONFIG] get secrets sshkeys -n kube-system -o yaml

    명령어 결과의 vsphere_tmp 필드에서 비공개 키를 찾을 수 있습니다.

    비공개 키를 vsphere_tmp에 복사합니다.

    echo "[PRIVATE_KEY]" | base64 -d > vsphere_tmp; chmod 600 vsphere_tmp
  3. 비공개 키를 사용하여 관리자 제어 영역에 셸을 사용할 수 있는지 확인합니다.

    ssh -i vsphere_tmp ubuntu@[EXTERNAL_IP]
    
  4. 컨테이너를 종료합니다.

    exit

관리자 클러스터 백업

관리자 클러스터 etcd와 제어 영역 보안 비밀을 백업할 수 있습니다.

etcd

관리자 클러스터 etcd를 백업하려면 다음 안내를 따르세요.

  1. etcd pod 이름을 가져옵니다.

    kubectl --kubeconfig [ADMIN_KUBECONFIG] get pods \
    -n kube-system | grep etcd-gke-admin-master
  2. pod의 kube-etcd 컨테이너에 셸을 사용합니다.

    kubectl --kubeconfig [ADMIN_KUBECONFIG]  exec -it \
    -n kube-system [ADMIN_ETCD_POD] -- bin/sh

    여기서 [ADMIN_ETCD_POD]는 etcd pod 이름입니다.

  3. 셸에서 etcdctl을 사용하여 로컬 디렉터리에 snapshot.db라는 백업을 만듭니다.

    ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \
    --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
    --key=/etc/kubernetes/pki/etcd/healthcheck-client.key snapshot save snapshot.db
  4. 컨테이너를 종료합니다.

    exit
  5. kubectl cp를 사용하여 kube-etcd 컨테이너에서 백업을 복사합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] cp \
    kube-system/[ADMIN_ETCD_POD]:snapshot.db [RELATIVE_DIRECTORY]
    

    여기서 [RELATIVE_DIRECTORY]는 백업을 저장할 경로입니다.

보안 비밀

관리자 제어 영역의 보안 비밀을 백업하려면 다음 안내를 따르세요.

  1. 관리자 제어 영역 노드에 셸을 사용합니다.

    ssh -i vsphere_tmp ubuntu@[EXTERNAL_IP]
    

    여기서 [EXTERNAL_IP]는 이전에 수집한 관리자 제어 영역의 외부 IP 주소입니다.

  2. 로컬 백업 디렉터리를 만듭니다. 이는 선택사항이지만 만드는 것이 좋습니다. 노드에서 복사하려면 백업 보안 비밀의 권한을 변경해야 합니다.

    mkdir backup
  3. 보안 비밀을 로컬 백업 디렉터리에 로컬로 복사합니다.

    sudo cp -r /etc/kubernetes/pki/* backup/
  4. 백업 보안 비밀의 권한을 변경합니다.

    sudo chmod -R +rw backup/
  5. 컨테이너를 종료합니다.

    exit
  6. scp를 실행하여 관리자 제어 영역 노드에서 백업 폴더를 복사합니다.

    sudo scp -r -i vsphere_tmp  ubuntu@[EXTERNAL_IP]:backup/ [RELATIVE_DIRECTORY]
    

    여기서 [RELATIVE_DIRECTORY]는 백업을 저장할 경로입니다.

관리자 클러스터 복원

다음 절차에서는 백업된 관리자 클러스터와 etcd 스냅샷이 생성되었을 때 관리했던 모든 사용자 제어 영역을 다시 만듭니다.

  1. scp를 실행하여 snapshot.db를 관리자 제어 영역에 복사합니다.

    sudo scp -i vsphere_tmp snapshot.db ubuntu@[EXTERNAL_IP]:

    여기서 [EXTERNAL_IP]는 이전에 수집한 관리자 제어 영역의 외부 IP 주소입니다.

  2. 관리자 제어 영역에 셸을 사용합니다.

    sudo ssh -i vsphere_tmp ubuntu@[EXTERNAL_IP]
    
  3. snapshot.db//mnt에 복사합니다.

    sudo cp snapshot.db /mnt/
  4. backup과 같은 임시 디렉터리를 만듭니다.

    mkdir backup
  5. 관리자 제어 영역을 종료합니다.

    exit
  6. 인증서를 backup/에 복사합니다.

    sudo scp -r -i vsphere_tmp [BACKUP_CERT_FILE] ubuntu@[EXTERNAL_IP]:backup/
  7. 관리자 제어 영역 노드에 셸을 사용합니다.

    ssh -i vsphere_tmp ubuntu@[EXTERNAL_IP]
    

    여기서 [EXTERNAL_IP]는 이전에 수집한 관리자 제어 영역의 외부 IP 주소입니다.

  8. kubeadm reset을 실행합니다. 실행하면 관리자 클러스터에서 실행 중인 모든 항목이 중지되고, 모든 etcd 데이터가 삭제되고, /etc/kubernetes/pki/의 보안 비밀이 삭제됩니다.

    sudo kubeadm reset --ignore-preflight-errors=all
  9. 백업 보안 비밀을 /etc/kubernetes/pki/에 복사합니다.

    sudo cp -r backup/* /etc/kubernetes/pki/
  10. Docker로 etcdctl restore를 실행합니다.

    sudo docker run --rm \
    -v '/mnt:/backup' \
    -v '/var/lib/etcd:/var/lib/etcd' --env ETCDCTL_API=3 'k8s.gcr.io/etcd-amd64:3.1.12' /bin/sh -c "etcdctl snapshot restore '/backup/snapshot.db'; mv /default.etcd/member/ /var/lib/etcd/"
  11. kubeadm init를 실행합니다. 실행하면 모든 백업 보안 비밀이 재사용되고 etcd가 복원된 스냅샷을 통해 다시 시작됩니다.

    sudo kubeadm init --config /etc/kubernetes/kubeadm_config.yaml --ignore-preflight-errors=DirAvailable--var-lib-etcd
  12. 관리자 제어 영역을 종료합니다.

    exit
  13. 관리 노드에서 새로 생성된 kubeconfig 파일을 복사합니다.

    sudo scp -i vsphere_tmp ubuntu@[EXTERNAL_IP]:[HOME]/.kube/config kubeconfig

    각 항목의 의미는 다음과 같습니다.

    • [EXTERNAL_IP]는 관리자 제어 영역의 외부 IP 주소입니다.
    • [HOME]은 관리 노드의 홈 디렉터리입니다.

    이제 이 새 kubeconfig 파일을 사용하여 복원된 클러스터에 액세스할 수 있습니다.

백업 스크립트

여기에 제공된 스크립트를 사용하여 클러스터를 자동으로 백업할 수 있습니다. 스크립트를 실행하기 전에 스크립트 시작 부분에 있는 변수 5개의 값을 입력합니다.

  • BACKUP_DIR을 관리자 및 사용자 클러스터 백업을 저장할 경로로 설정합니다.
  • ADMIN_CLUSTER_KUBECONFIG를 관리자 클러스터의 kubeconfig 파일 경로로 설정합니다.
  • USER_CLUSTER_NAMESPACE를 사용자 클러스터 이름으로 설정합니다. 사용자 클러스터 이름은 관리자 클러스터의 네임스페이스입니다.
  • EXTERNAL_IP관리자 제어 영역 서비스에 사용하도록 예약한 VIP로 설정합니다.
  • 관리 워크스테이션을 설정할 때 SSH_PRIVATE_KEY내가 만든 SSH 키 경로로 설정합니다.
  • 비공개 네트워크를 사용하는 경우 JUMP_IP를 네트워크의 점프 서버 IP 주소로 설정합니다.
#!/usr/bin/env bash

# Automates manual steps for taking backups of user and admin clusters.
# Fill in the variables below before running the script.

BACKUP_DIR=""                       # path to store user and admin cluster backups
ADMIN_CLUSTER_KUBECONFIG=""         # path to admin cluster kubeconfig
USER_CLUSTER_NAMESPACE=""           # user cluster namespace
EXTERNAL_IP=""                      # admin control plane node external ip - follow steps in documentation
SSH_PRIVATE_KEY=""                  # path to vsphere_tmp ssh private key - follow steps in documentation
JUMP_IP=""                          # network jump server IP - leave empty string if not using private network.

mkdir -p $BACKUP_DIR
mkdir $BACKUP_DIR/pki

# USER CLUSTER BACKUP

# Snapshot user cluster etcd
kubectl --kubeconfig=${ADMIN_CLUSTER_KUBECONFIG}  exec -it -n ${USER_CLUSTER_NAMESPACE} kube-etcd-0 -c kube-etcd -- /bin/sh -ec "export ETCDCTL_API=3; etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etcd.local.config/certificates/etcdCA.crt --cert=/etcd.local.config/certificates/etcd.crt --key=/etcd.local.config/certificates/etcd.key snapshot save ${USER_CLUSTER_NAMESPACE}_snapshot.db"
kubectl --kubeconfig=${ADMIN_CLUSTER_KUBECONFIG} cp ${USER_CLUSTER_NAMESPACE}/kube-etcd-0:${USER_CLUSTER_NAMESPACE}_snapshot.db $BACKUP_DIR/

# ADMIN CLUSTER BACKUP

# Set up ssh options
SSH_OPTS=(-oStrictHostKeyChecking=no -i ${SSH_PRIVATE_KEY})
if [ "${JUMP_IP}" != "" ]; then
    SSH_OPTS+=(-oProxyCommand="ssh -oStrictHostKeyChecking=no -i ${SSH_PRIVATE_KEY} -W %h:%p ubuntu@${JUMP_IP}")
fi

# Copy admin certs
ssh "${SSH_OPTS[@]}" ubuntu@${EXTERNAL_IP} 'sudo chmod -R +rw /etc/kubernetes/pki/*'
scp "${SSH_OPTS[@]}" ubuntu@${EXTERNAL_IP}:/etc/kubernetes/pki/* ${BACKUP_DIR}/pki/

# Snapshot admin cluster etcd
admin_etcd=$(kubectl --kubeconfig=${ADMIN_CLUSTER_KUBECONFIG} get pods -n kube-system -o=name | grep etcd | cut -c 5-)
kubectl --kubeconfig=${ADMIN_CLUSTER_KUBECONFIG}  exec -it -n kube-system ${admin_etcd} -- /bin/sh -ec "export ETCDCTL_API=3; etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key snapshot save admin_snapshot.db"

문제 해결

자세한 내용은 문제 해결을 참조하세요.

gkectl을 사용하여 클러스터 문제 진단

gkectl diagnose 명령어를 사용하여 클러스터 문제를 식별하고 클러스터 정보를 Google과 공유하세요. 클러스터 문제 진단을 참조하세요.

기본 로깅 동작

gkectlgkeadm의 경우 기본 로깅 설정만 사용해도 됩니다.

  • 기본적으로 로그 항목은 다음과 같이 저장됩니다.

    • gkectl의 기본 로그 파일은 /home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log이며 파일은 gkectl을 실행하는 로컬 디렉터리의 logs/gkectl-$(date).log 파일과 심볼릭 링크됩니다.
    • gkeadm의 경우 기본 로그 파일은 gkeadm을 실행하는 로컬 디렉터리의 logs/gkeadm-$(date).log입니다.
  • 모든 로그 항목은 터미널에서 출력되지 않더라도 로그 파일에 저장됩니다(--alsologtostderrfalse인 경우).
  • -v5 세부정보 수준(기본값)에는 지원팀에 필요한 모든 로그 항목이 포함됩니다.
  • 로그 파일에는 실행된 명령어와 실패 메시지도 포함되어 있습니다.

도움이 필요한 경우 로그 파일을 지원팀에 보내는 것이 좋습니다.

로그 파일에 기본값이 아닌 위치 지정

gkectl 로그 파일에 기본값이 아닌 위치를 지정하려면 --log_file 플래그를 사용합니다. 지정한 로그 파일은 로컬 디렉터리와 심볼릭 링크되지 않습니다.

gkeadm 로그 파일에 기본값이 아닌 위치를 지정하려면 --log_file 플래그를 사용합니다.

관리자 클러스터에서 Cluster API 로그 찾기

관리자 제어 영역이 시작된 후에 VM을 시작하지 못하는 경우 다음 안내에 따라 관리자 클러스터에서 Cluster API 컨트롤러의 로그를 검사하여 디버깅할 수 있습니다.

  1. kube-system 네임스페이스에서 Cluster API 컨트롤러 pod의 이름을 찾습니다. 여기서 [ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일 경로입니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
  2. pod의 로그를 엽니다. 여기서 [POD_NAME]은 pod 이름입니다. 원하는 경우 grep 또는 비슷한 도구를 사용하여 오류를 검색합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager

다음 단계