KubeKey 节点扩缩容、高可用与卸载

集群跑起来后要加/减节点、升级、做 master 高可用、移除 etcd 成员,或彻底卸载清理 KubeKey 部署的 k8s 时读这篇

02-部署安装 / 部署方式
kubekeykk add nodeskk delete nodekk upgrade扩缩容高可用HAmaster节点controlPlaneEndpointetcd member removeetcdctl卸载delete cluster彻底清理kubeletetcd

KubeKey 节点扩缩容、高可用与卸载

一、扩缩容节点

新机器需先执行《环境准备与安装 k8s》中的基础环境准备,然后修改 config-cluster.yaml 文件:

export KKZONE=cn
kk add nodes -f config-cluster.yaml                  # 增加机器
kk delete node <nodeName> -f config-cluster.yaml     # 释放机器

二、升级配置

kk upgrade -f config-cluster.yaml

三、高可用(master 节点增删)

正常添加节点

需要注意 address

***  主要 address    ***
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    # internalLoadbalancer: haproxy
    domain: lb.kubesphere.local
*** address: "172.21.106.247" ***

节点可正常连接时删除 master 节点

./kk delete node <nodeName> -f config-cluster.yaml

删除后从 config-cluster.yaml 中再删除该节点信息,加入新的 master 节点信息。

节点不可正常连接时删除 master 节点

kubectl drain nodename --ignore-daemonsets=true --grace-period=200
kubectl delete node nodename

# 从 etcd 集群列出成员
exist_host_ip1=172.17.0.3
exist_host_ip2=172.17.0.252
ETCDCTL_API=3 etcdctl \
--endpoints=https://$exist_host_ip1:2379 \
--cacert=/etc/ssl/etcd/ssl/ca.pem \
--cert=/etc/ssl/etcd/ssl/admin-$exist_host_ip1.pem \
--key=/etc/ssl/etcd/ssl/admin-$exist_host_ip1-key.pem \
member list

# 获取被删除节点在 etcd 中的名称,从 etcd 集群移除(替换最后面的节点 id)
ETCDCTL_API=3 etcdctl \
--endpoints=https://$exist_host_ip1:2379,https://$exist_host_ip2:2379 \
--cacert=/etc/ssl/etcd/ssl/ca.pem \
--cert=/etc/ssl/etcd/ssl/admin-$exist_host_ip1.pem \
--key=/etc/ssl/etcd/ssl/admin-$exist_host_ip1-key.pem \
member remove b66918af2a6cdd2c

删除旧的 master,再加入新 master 节点。

原文 kubectl drain 命令中拼写为 --ignore-saemonsets,已按 kubectl 实际参数名修正为 --ignore-daemonsets。见 install/kubernetes/rancher/kubekey/kubekey高可用.md:22

四、卸载 KubeSphere 和 Kubernetes

# 配置文件方式
kk delete cluster -f config-cluster.yaml

# 命令行直建方式(无配置文件)
./kk delete cluster

五、彻底清理

关闭 kubelet、etcd:

systemctl stop kubelet
systemctl stop etcd

删除 k8s 相关目录:

sudo rm -rvf ~/.kube
sudo rm -rvf /etc/kubernetes/
sudo rm -rvf /etc/systemd/system/kubelet.service.d
sudo rm -rvf /etc/systemd/system/kubelet.service
sudo rm -rvf /usr/bin/kube*
sudo rm -rvf /etc/cni
sudo rm -rvf /opt/cni
sudo rm -rvf /var/lib/etcd
sudo rm -rvf /var/etcd

清除 Docker 所有相关资源:

docker rm -f $(docker ps -aq)
docker rmi -f $(docker images -aq)
docker volume prune
docker network prune
最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki