Debian系统缩减Kubernetes集群的操作流程
在Debian系统上缩减Kubernetes集群主要涉及节点缩容(减少集群中的Worker节点数量),需通过kubeadm工具完成安全移除。以下是详细步骤:
for n in $(kubectl get nodes -o name | grep -v "master\|control-plane"); do echo "Node: $(echo $n | cut -d'/' -f2)"; kubectl describe node $n | grep -A 7 "Allocated resources"; done kubectl get cs显示所有组件为Healthy)。kubectl cordon <node-name> # 替换<node-name>为目标节点名称 drain命令安全驱逐节点上的所有Pod(包括系统Pod,需添加--ignore-daemonsets参数忽略DaemonSet管理的Pod)。kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data --force --ignore-daemonsets:忽略DaemonSet管理的Pod(如日志收集、监控组件),这些Pod会在节点移除后自动在其他节点重建。--delete-emptydir-data:删除使用emptyDir卷的Pod数据(若数据无需保留)。--force:强制驱逐未响应的Pod(谨慎使用)。登录目标节点(通过SSH),停止并禁用kubelet和kube-proxy服务,防止其自动重启。
sudo systemctl stop kubelet sudo systemctl disable kubelet sudo systemctl stop kube-proxy sudo systemctl disable kube-proxy 回到Master节点(或控制平面节点),使用kubeadm命令从集群中移除目标节点。
kubectl delete node <node-name> # 替换<node-name>为目标节点名称 若目标节点不再作为Kubernetes节点使用,可进一步清理Kubernetes相关组件和配置:
sudo kubeadm reset -f sudo rm -rf /etc/cni/net.d /etc/kubernetes /var/lib/kubelet /var/lib/kube-proxy /var/lib/etcd ip pool、Flannel的网络接口)。sudo reboot hostPath或PersistentVolume),需提前备份至其他存储。kubectl get pods -A确认所有Pod处于Running状态,且业务访问正常。通过以上步骤,可在Debian系统上安全缩减Kubernetes集群,确保业务连续性。