클러스터 다시 시작 및 삭제

이 항목에서는 워크로드 클러스터를 종료하고 다시 시작하는 방법과 워크로드 클러스터를 삭제하는 방법을 설명합니다.

워크로드 클러스터 종료 및 다시 시작

네트워크 유지 보수 또는 계획된 네트워크 다운타임 동안 계획된 중단을 반영하기 위해 워크로드 클러스터를 종료했다가 다시 시작해야 할 수 있습니다.

사전 요구 사항

  • 모든 네트워크에서 모든 클러스터 노드의 DHCP 리스 및 예약은 계획된 중단보다 길어야 합니다.
    • 이렇게 하면 노드가 재부팅 후 동일한 주소를 유지하게 되며 이는 필수입니다.
  • jq 가 로컬에 설치됩니다.
  • NSX Manager를 백업합니다.

절차

  1. 다음 명령을 실행하여 etcd 데이터베이스에 대한 정보를 수집합니다.

    kubectl --kubeconfig /etc/kubernetes/admin.conf get pods `kubectl --kubeconfig /etc/kubernetes/admin.conf  get pods -A | grep etc | awk '{print $2}'` -n kube-system  -o=jsonpath='{.spec.containers[0].command}' | jq
    

    출력 예:

    [
      "etcd",
      "--advertise-client-urls=https://192.168.7.154:2379",
      "--cert-file=/etc/kubernetes/pki/etcd/server.crt",
      "--client-cert-auth=true",
      "--data-dir=/var/lib/etcd",
      "--initial-advertise-peer-urls=https://192.168.7.154:2380",
      "--initial-cluster=workload-vsphere-tkg2-control-plane-fk5hw=https://192.168.7.154:2380",
      "--key-file=/etc/kubernetes/pki/etcd/server.key",
      "--listen-client-urls=https://127.0.0.1:2379,https://192.168.7.154:2379",
      "--listen-metrics-urls=http://127.0.0.1:2381",
      "--listen-peer-urls=https://192.168.7.154:2380",
      "--name=workload-vsphere-tkg2-control-plane-fk5hw",
      "--peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt",
      "--peer-client-cert-auth=true",
      "--peer-key-file=/etc/kubernetes/pki/etcd/peer.key",
      "--peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt",
      "--snapshot-count=10000",
      "--trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt"
    ]
    
  2. 각 제어부 노드에 대해:

    1. ssh 명령을 실행하여 노드에 로그인합니다.

    2. 다음 명령을 실행하여 etcdctl 실행 파일을 찾습니다.

      find / -type f -name "*etcdctl*" -print
      

      출력 예:

       /run/containerd/io.containerd.runtime.v1.linux/k8s.io/823581f975804b65048f4babe2015a95cfa7ed6f767073796afe47b9d03299fb/rootfs/usr/local/bin/etcdctl`
       /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl
      
    3. etcd 백업 파일을 생성하고 확인합니다.

      1. 다음 명령을 실행합니다.

        ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
        

        형식 설명:

        • ETCD-EXEetcdctl 실행 파일의 로컬 경로입니다.
        • LOCAL-BACKUP은 백업할 로컬 파일입니다(예: /tmp/etcdBackup1.db).
        • ENDPOINTS, CA, CERT, KEY는 위에 기록된 --advertise-client-urls, --peer-trusted-ca-file, --cert-file, --key-file 값입니다.

        예:

        /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl snapshot save /tmp/etcdBackup1.db \
         --endpoints=https://192.168.7.154:2379 \
         --cacert=/etc/kubernetes/pki/etcd/ca.crt \
         --cert=/etc/kubernetes/pki/etcd/server.crt \
         --key=/etc/kubernetes/pki/etcd/server.key
        
        1. 백업 파일이 생성되었는지 확인합니다.

          ls -l  LOCAL-BACKUP
          
        2. 파일에서 스냅샷을 생성하여 백업 컨텐츠를 확인합니다.

          ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
          
  3. 부트스트랩 시스템에서 다음 명령 순서를 실행하여 클러스터 정보를 수집하고 파일에 저장합니다.

      tanzu cluster list -A > CLUSTER-INFO-1
      kubectl config get-contexts >> CLUSTER-INFO-1
      kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-1
      kubectl get nodes -o wide >> CLUSTER-INFO-1
      kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-1
      kubectl get nodes -o wide >> CLUSTER-INFO-1
      cat CLUSTER-INFO-1
    

    여기서 CLUSTER-INFO-1은 정보를 저장할 로컬 텍스트 파일입니다(예: /tmp/SaveClusterInfo1.txt).

  4. Worker 노드에서 모든 애플리케이션을 추출합니다.

  5. 다음 순서로 vCenter의 모든 가상 시스템을 중지합니다.

    1. 관리 클러스터 제어부 노드를 종료합니다.
    2. 관리 클러스터 Worker 노드를 종료합니다.
    3. 워크로드 클러스터 제어부 노드를 종료합니다.
    4. 워크로드 클러스터 Worker 노드를 종료합니다.
  6. 다음 순서로 vCenter에서 모든 가상 시스템을 다시 시작합니다.

    1. 워크로드 클러스터 제어부 노드를 시작합니다.
    2. 워크로드 클러스터 Worker 노드를 시작합니다.
    3. 관리 클러스터 제어부 노드를 시작합니다.
    4. 관리 클러스터 Worker 노드를 시작합니다.
  7. 다음 명령 순서를 실행하여 클러스터 정보를 수집하고 다른 파일에 저장합니다.

    tanzu cluster list -A --include-management-cluster -A > CLUSTER-INFO-2
    kubectl config get-contexts >> CLUSTER-INFO-2
    kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-2
    kubectl get nodes -o wide >> CLUSTER-INFO-2
    kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-2
    kubectl get nodes -o wide >> CLUSTER-INFO-2
    cat CLUSTER-INFO-2
    

    여기서 CLUSTER-INFO-2는 정보를 저장할 다른 로컬 텍스트 파일입니다(예: /tmp/SaveClusterInfo2.txt).

  8. 두 클러스터 정보 파일을 비교하여 동일한 클러스터 정보가 있는지 확인합니다. 예를 들면 다음과 같습니다.

    sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
    

워크로드 클러스터 삭제

워크로드 클러스터를 삭제하려면 tanzu cluster delete 명령을 실행합니다. 클러스터 컨텐츠와 클라우드 인프라에 따라 클러스터 자체를 삭제하기 전에 클러스터 내 볼륨과 서비스를 삭제해야 할 수 있습니다.

중요

워크로드 클러스터를 명시적으로 삭제해야 합니다. 관리 클러스터에서 네임스페이스를 삭제하여 삭제할 수 없습니다.

  1. 클러스터를 나열합니다.

    Tanzu CLI의 현재 로그인 컨텍스트 내에서 모든 워크로드 클러스터를 나열하려면 tanzu cluster list -A 명령을 실행합니다.

    tanzu cluster list -A
    
  2. 볼륨과 서비스를 삭제합니다.

    삭제하려는 클러스터에 로드 밸런서 및 데이터베이스와 같은 서비스가 포함된 경우 클러스터 자체를 삭제하기 전에 수동으로 삭제해야 할 수 있습니다. 사전 삭제해야 하는 항목은 클라우드 인프라에 따라 다릅니다.

    vSphere
    인프라가 vSphere인 경우 다음을 수행합니다.

    서비스 유형 LoadBalancer 삭제

    클러스터에서 서비스 유형 LoadBalancer(서비스)를 삭제하려면 다음을 수행합니다.

    1. kubectl을 클러스터의 컨텍스트로 설정합니다.

      kubectl config set-context my-cluster@user
      
    2. 클러스터의 서비스 목록을 검색합니다.

      kubectl get service
      
    3. 각 서비스 유형 LoadBalancer를 삭제합니다.

      kubectl delete service <my-svc>
      

    영구 볼륨 및 영구 볼륨 할당 삭제

    클러스터에서 PV(영구 볼륨) 및 PVC(영구 볼륨 할당) 개체를 삭제하려면 다음을 수행합니다.

    1. kubectl config set-context my-cluster@user를 실행하여 kubectl을 클러스터의 컨텍스트로 설정합니다.

    2. kubectl get pvc를 실행하여 클러스터의 PVC(영구 볼륨 할당)를 검색합니다.

    3. 각 PVC:

      1. kubectl describe pvc <my-pvc>를 실행하여 바인딩된 PV를 식별합니다. 명령 출력에 PV가 상태: 뒤에 볼륨으로 나열됩니다. 바인딩됨.

      2. kubectl describe pv <my-pv>를 실행하여 바인딩된 PV Reclaim PolicyRetain 또는 Delete인지를 설명합니다.

      3. kubectl delete pvc <my-pvc>를 실행하여 PVC를 삭제합니다.

      4. PV 회수 정책이 Retain인 경우 kubectl delete pv <my-pvc>를 실행한 후 클라우드 포털에 로그인하고 해당 클라우드 포털에서 PV 개체를 삭제합니다. 예를 들어 데이터스토어 창 > 모니터링(Monitor) > 클라우드 네이티브 스토리지(Cloud Native Storage) > 컨테이너 볼륨(Container Volumes)에서 vSphere CNS 볼륨을 삭제합니다. vSphere CNS에 대한 자세한 내용은 vSphere에서 Cloud 네이티브 스토리지로 시작을 참조하십시오.

    AWS(Amazon Web Services)
    인프라가 AWS인 경우 다음을 수행합니다.
    • Load Balancers: 클러스터의 VPC에 있는 애플리케이션 또는 네트워크 로드 밸런서(ALB 또는 NLB)이지만 클래식 로드 밸런서(ELB v1)는 지원하지 않습니다. AWS UI 또는 kubectl delete 명령을 사용하여 이러한 리소스를 삭제합니다.
    • 기타 서비스: 클러스터 VPC의 모든 서브넷 및 AWS 지원 서비스(예: RDS 또는 VPC) 및 관련 리소스는 다음과 같습니다.

      • VPC: VPC 대시보드(VPC Dashboard) > Virtual Private Cloud > 내 VPC(Your VPCs) 아래에서 삭제합니다.
      • RDS: RDS 대시보드(RDS Dashboard) > 데이터베이스(Databases)에서 삭제합니다.
      • 서브넷: VPC 대시보드(VPC Dashboard) > Virtual Private Cloud > 서브넷(Subnets) 아래에서 삭제합니다.
      • 라우팅 테이블: VPC 대시보드(VPC Dashboard) > Virtual Private Cloud > 라우팅 테이블(Route Tables) 아래에서 삭제합니다.
      • 인터넷 게이트웨이: VPC 대시보드(VPC Dashboard) > Virtual Private Cloud > 인터넷 게이트웨이(Internet Gateways) 아래에서 삭제합니다.
      • Elastic IP 주소: VPC 대시보드(VPC Dashboard) > Virtual Private Cloud > Elastic IP(Elastic IPs) 아래에서 삭제합니다.
      • NAT 게이트웨이: VPC 대시보드(VPC Dashboard) > Virtual Private Cloud > NAT 게이트웨이(NAT Gateways) 아래에서 삭제합니다.
      • 네트워크 ACL: VPC 대시보드(VPC Dashboard) > 보안(Security) > 네트워크 ACL(Network ACLs) 아래에서 삭제합니다.
      • 보안 그룹: VPC 대시보드(VPC Dashboard) > 보안(Security) > 보안 그룹(Security Groups) 아래에서 삭제합니다.

      위와 같이 또는 aws CLI를 사용하여 AWS UI에서 이러한 리소스를 삭제합니다.

    • 영구 볼륨 및 영구 볼륨 할당: 아래의 영구 볼륨 할당 및 영구 볼륨 삭제에 설명된 대로 kubectl delete 명령을 사용하여 이러한 리소스를 삭제합니다.

    Azure
    인프라가 Azure인 경우에는 작업이 필요하지 않습니다.

    클러스터를 삭제하면 TKG가 클러스터의 리소스 그룹에서 생성한 모든 항목이 삭제됩니다.

  3. 필요한 경우 Velero 설명서의 Cluster 마이그레이션리소스 필터링에 설명된 대로 Velero를 사용하여 클러스터 외부로 워크로드를 마이그레이션합니다.

  4. 클러스터를 삭제합니다.

    클러스터를 삭제하려면 tanzu cluster delete를 실행합니다.

    tanzu cluster delete my-cluster
    

    클러스터가 default 네임스페이스 이외의 네임스페이스에서 실행 중인 경우 해당 클러스터를 삭제하려면 --namespace 옵션을 지정해야 합니다.

    tanzu cluster delete my-cluster --namespace=my-namespace
    

    tanzu cluster delete를 실행할 때 yes/no 확인 단계를 건너뛰려면 --yes 옵션을 지정합니다.

    tanzu cluster delete my-cluster --namespace=my-namespace --yes
    

    AWS에서 클러스터를 삭제하려면 AWS_REGION 변수를 클러스터가 실행 중인 지역으로 설정해야 합니다. AWS 계정 자격 증명 구성에 설명된 대로 로컬 환경 또는 자격 증명 프로필에서 AWS_REGION을 설정할 수 있습니다. 다른 지역에서 클러스터를 삭제하려면 설정을 tanzu cluster delete 명령 앞에 추가합니다.

    AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
    
중요

Tanzu Kubernetes Grid 작업이 실행되는 동안 컨텍스트를 변경하거나 .kube-tkg/config 파일을 편집하지 마십시오.

check-circle-line exclamation-circle-line close-line
Scroll to top icon