이 항목에서는 워크로드 클러스터를 종료하고 다시 시작하는 방법과 워크로드 클러스터를 삭제하는 방법을 설명합니다.
네트워크 유지 보수 또는 계획된 네트워크 다운타임 동안 계획된 중단을 반영하기 위해 워크로드 클러스터를 종료했다가 다시 시작해야 할 수 있습니다.
jq
가 로컬에 설치됩니다.다음 명령을 실행하여 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"
]
각 제어부 노드에 대해:
ssh
명령을 실행하여 노드에 로그인합니다.
다음 명령을 실행하여 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
etcd
백업 파일을 생성하고 확인합니다.
다음 명령을 실행합니다.
ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
형식 설명:
ETCD-EXE
는 etcdctl
실행 파일의 로컬 경로입니다.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
백업 파일이 생성되었는지 확인합니다.
ls -l LOCAL-BACKUP
파일에서 스냅샷을 생성하여 백업 컨텐츠를 확인합니다.
ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
부트스트랩 시스템에서 다음 명령 순서를 실행하여 클러스터 정보를 수집하고 파일에 저장합니다.
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
).
Worker 노드에서 모든 애플리케이션을 추출합니다.
다음 순서로 vCenter의 모든 가상 시스템을 중지합니다.
다음 순서로 vCenter에서 모든 가상 시스템을 다시 시작합니다.
다음 명령 순서를 실행하여 클러스터 정보를 수집하고 다른 파일에 저장합니다.
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
).
두 클러스터 정보 파일을 비교하여 동일한 클러스터 정보가 있는지 확인합니다. 예를 들면 다음과 같습니다.
sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
워크로드 클러스터를 삭제하려면 tanzu cluster delete
명령을 실행합니다. 클러스터 컨텐츠와 클라우드 인프라에 따라 클러스터 자체를 삭제하기 전에 클러스터 내 볼륨과 서비스를 삭제해야 할 수 있습니다.
중요워크로드 클러스터를 명시적으로 삭제해야 합니다. 관리 클러스터에서 네임스페이스를 삭제하여 삭제할 수 없습니다.
클러스터를 나열합니다.
Tanzu CLI의 현재 로그인 컨텍스트 내에서 모든 워크로드 클러스터를 나열하려면 tanzu cluster list -A
명령을 실행합니다.
tanzu cluster list -A
볼륨과 서비스를 삭제합니다.
삭제하려는 클러스터에 로드 밸런서 및 데이터베이스와 같은 서비스가 포함된 경우 클러스터 자체를 삭제하기 전에 수동으로 삭제해야 할 수 있습니다. 사전 삭제해야 하는 항목은 클라우드 인프라에 따라 다릅니다.
클러스터에서 서비스 유형 LoadBalancer(서비스)를 삭제하려면 다음을 수행합니다.
kubectl
을 클러스터의 컨텍스트로 설정합니다.
kubectl config set-context my-cluster@user
클러스터의 서비스 목록을 검색합니다.
kubectl get service
각 서비스 유형 LoadBalancer
를 삭제합니다.
kubectl delete service <my-svc>
클러스터에서 PV(영구 볼륨) 및 PVC(영구 볼륨 할당) 개체를 삭제하려면 다음을 수행합니다.
kubectl config set-context my-cluster@user
를 실행하여 kubectl
을 클러스터의 컨텍스트로 설정합니다.
kubectl get pvc
를 실행하여 클러스터의 PVC(영구 볼륨 할당)를 검색합니다.
각 PVC:
kubectl describe pvc <my-pvc>
를 실행하여 바인딩된 PV를 식별합니다. 명령 출력에 PV가 상태: 뒤에 볼륨으로 나열됩니다. 바인딩됨.
kubectl describe pv <my-pv>
를 실행하여 바인딩된 PV Reclaim Policy
가 Retain
또는 Delete
인지를 설명합니다.
kubectl delete pvc <my-pvc>
를 실행하여 PVC를 삭제합니다.
PV 회수 정책이 Retain
인 경우 kubectl delete pv <my-pvc>
를 실행한 후 클라우드 포털에 로그인하고 해당 클라우드 포털에서 PV 개체를 삭제합니다. 예를 들어 데이터스토어 창 > 모니터링(Monitor) > 클라우드 네이티브 스토리지(Cloud Native Storage) > 컨테이너 볼륨(Container Volumes)에서 vSphere CNS 볼륨을 삭제합니다. vSphere CNS에 대한 자세한 내용은 vSphere에서 Cloud 네이티브 스토리지로 시작을 참조하십시오.
kubectl delete
명령을 사용하여 이러한 리소스를 삭제합니다.기타 서비스: 클러스터 VPC의 모든 서브넷 및 AWS 지원 서비스(예: RDS 또는 VPC) 및 관련 리소스는 다음과 같습니다.
위와 같이 또는 aws
CLI를 사용하여 AWS UI에서 이러한 리소스를 삭제합니다.
영구 볼륨 및 영구 볼륨 할당: 아래의 영구 볼륨 할당 및 영구 볼륨 삭제에 설명된 대로 kubectl delete
명령을 사용하여 이러한 리소스를 삭제합니다.
클러스터를 삭제하면 TKG가 클러스터의 리소스 그룹에서 생성한 모든 항목이 삭제됩니다.
필요한 경우 Velero 설명서의 Cluster 마이그레이션 및 리소스 필터링에 설명된 대로 Velero를 사용하여 클러스터 외부로 워크로드를 마이그레이션합니다.
클러스터를 삭제합니다.
클러스터를 삭제하려면 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
파일을 편집하지 마십시오.