本主题介绍了如何关闭和重新启动工作负载集群以及如何删除它们。
您可能需要关闭并重新启动工作负载集群,以适应网络维护或计划内网络停机的计划中断。
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
。
在工作节点上引流所有应用程序。
按以下顺序停止 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 在命令输出中列为卷 (Volume),在状态 (Status):已绑定 (Bound)后面。
运行 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 UI 中如上所述或使用 aws
CLI 删除这些资源。
持久卷和持久卷声明:如下面的删除持久卷声明和持久卷中所述,使用 kubectl delete
命令删除这些资源。
删除集群将删除 TKG 在集群的资源组中创建的所有内容。
删除集群。
要删除集群,请运行 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_REGION
,如配置 AWS 帐户凭据中所述。要删除不同地理区域中的集群,请在 tanzu cluster delete
命令前面添加该设置:
AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
重要在 Tanzu Kubernetes Grid 操作运行时,请勿更改上下文或编辑
.kube-tkg/config
文件。