删除集群节点
本节介绍如何删除 KubeSphere 集群节点。
节点删除过程中将用到开源工具 KubeKey。有关 KubeKey 的更多信息,请访问 GitHub KubeKey 仓库。
| 说明 |
|---|
本节介绍的节点删除方式仅适用于 Kubernetes 通过 KubeKey 安装的场景。如果您的 Kubernetes 不是通过 KubeKey 安装,请参阅 Kubernetes 官方文档删除节点。 |
| 警告 |
|---|
|
若 KubeSphere 为在线安装
若 KubeSphere 为在线安装,请按照以下步骤删除集群节点。
准备工作
您需要获取安装配置文件 config-sample.yaml 并将其传输到用于执行本节操作的集群节点。
| 警告 |
|---|
如果您无法获取安装配置文件 config-sample.yaml,您需要参阅在线安装 KubeSphere 重新创建 config-sample.yaml 文件。重新创建该文件时,请务必确保文件中的集群信息与集群的当前实际情况一致。否则,删除节点后集群可能会出现错误。 |
操作步骤
-
如果您访问 GitHub/Googleapis 受限,请登录任意集群节点,执行以下命令设置下载区域:
export KKZONE=cn -
执行以下命令下载 KubeKey 最新版本:
curl -sfL https://get-kk.kubesphere.io | sh -下载完成后当前目录下将生成 KubeKey 二进制文件 kk。
-
执行以下命令为 KubeKey 二进制文件 kk 添加执行权限:
sudo chmod +x kk -
执行以下命令查看需要删除的节点的名称:
kubectl get node -
执行以下命令将需要删除的节点上运行的容器组驱逐到其他节点(将 <nodename> 替换为需要删除的节点的名称):
kubectl drain <nodename> -
将安装配置文件 config-sample.yaml 传输到当前目录。
-
执行以下命令开始删除节点:
./kk delete node <nodename> -f config-sample.yaml -
执行以下命令查看当前集群节点:
kubectl get node如果没有显示已删除节点的信息,则表明节点删除成功。
若 KubeSphere 为离线安装
若 KubeSphere 使用 Web Installer 离线安装,请按照以下步骤删除集群节点。
| 说明 |
|---|
暂不支持在 Web Installer 页面删除节点。 |
准备工作
登录部署节点,进入离线包目录,获取节点信息和安装配置文件,用于后续执行 kk 命令。
cd offline
| 注意 |
|---|
后续步骤必须在离线包解压后的目录(如 |
一、获取节点信息: kkv4-inventory.yaml
-
获取节点信息文件。
cp kubekey/runtime/kubekey.kubesphere.io/v1/inventories/default/default.yaml kkv4-inventory.yaml节点信息示例如下:
apiVersion: kubekey.kubesphere.io/v1 kind: Inventory metadata: name: default namespace: default spec: groups: etcd: hosts: - scan-cqxbav3 vars: null image_registry: hosts: [] vars: null k8s_cluster: groups: - kube_control_plane - kube_worker hosts: null vars: null kube_control_plane: hosts: - scan-cqxbav3 vars: null kube_worker: hosts: - scan-cqxbav3 vars: null nfs: hosts: [] vars: null hosts: scan-cqxbav3: connector: host: 172.16.0.4 password: "" port: "22" user: root internal_ipv4: 172.16.0.4 kubernetes: custom_labels: {} vars: null status: {}
二、获取安装配置文件: kkv4-config.json
-
安装
jq。在 Ubuntu 操作系统上,执行以下安装命令:
sudo apt install jq如果部署节点使用其他操作系统,请将 apt 替换为操作系统对应的软件包管理工具。
-
获取安装集群时的配置文件
kkv4-config.json。cd schema/config.json | jq '{spec: .["kubernetes.json"]}' > kkv4-config.json配置信息示例:
{ "spec": { "kubernetes": { "cluster_name": "cluster-01", "kube_version": "v1.33.3", "control_plane_endpoint": { "host": "lb.kubesphere.local", "port": 6443, "type": "local" } }, "cri": { "container_manager": "containerd" }, "cni": { "type": "calico", "max_pods": 110, "service_cidr": "10.233.0.0/18", "pod_cidr": "10.233.64.0/18", "ipv4_mask_size": 24, "ipv6_mask_size": 64 }, "image_registry": { "auth": { "registry": "dockerhub.kubekey.local", "username": "admin", "password": "Harbor12345", "insecure": true } }, "storage_class": { "local": { "enabled": true, "default": true, "path": "/var/openebs/local" } } } }
操作步骤
-
登录
集群节点,执行以下命令查看需要删除的节点的名称:kubectl get node -
将需要删除的节点上运行的容器组驱逐到其他节点(将 <nodename> 替换为需要删除的节点的名称):
kubectl drain <nodename> -
在
部署节点,进入离线包解压后的目录(如 offline),使用kkv4-inventory.yaml和kkv4-config.json删除节点。cd offline./kk delete nodes <nodename> -i kkv4-inventory.yaml -c kkv4-config.json说明 暂不支持删除 etcd 节点。
如果显示如下信息,则表明节点删除成功。
回显示例:
[Playbook default/delete-nodes-qpmzs] finish. total: 74,success: 68,ignored: 6,failed: 0 -
在
集群节点上,执行以下命令查看当前集群的节点:kubectl get node如果没有显示已删除节点的信息,也表明节点删除成功。