####################新加node#########################################################
master主机上重新生成token
[root@master ~]# kubeadm token generate
fen9ed.98vjvkhle103ufht #下面这条命令中会用到该结果
[root@master ~]# kubeadm token create fen9ed.98vjvkhle103ufht --print-join-command --ttl=0
重新生成加入集群命令
#####################集群master故障,删除master节点,重新加入############################
驱逐节点(master也可以驱逐,master上默认不跑业务pod)
kubectl drain <故障master节点名> --ignore-daemonsets --delete-emptydir-data
kubeadm重置,清理k8s所有数据
kubeadm reset -f
清理残留目录
rm -rf /etc/kubernetes/*
rm -rf /var/lib/etcd/*
rm -rf /var/lib/kubelet/*
rm -rf $HOME/.kube
1.清理CNI网络配置
rm -rf /etc/cni/net.d/*
rm -rf $HOME/.kube
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
ipvsadm --clear
获取etcd member列表,删除故障master 的number号
kubectl exec -it -n kube-system etcd-<###存活master节点名###> -- etcdctl member list
--cacert=/etc/kubernetes/pki/etcd/ca.crt
--cert=/etc/kubernetes/pki/etcd/server.crt
--key=/etc/kubernetes/pki/etcd/server.key
删除 etcd 里面残留故障 member(关键,不删会 etcd 副本异常)
kubectl exec -it -n kube-system etcd-<###存活master节点名###> -- etcdctl member remove <###旧member-ID###>
--cacert=/etc/kubernetes/pki/etcd/ca.crt
--cert=/etc/kubernetes/pki/etcd/server.crt
--key=/etc/kubernetes/pki/etcd/server.key
在其他正常master,删除故障节点
kubectl delete node <故障master节点名>
master主机上重新生成token
kubeadm token generate
上个命令获取的秘钥下个命令需要用到
kubeadm token create fen9ed.98vjvkhle103ufht --print-join-command --ttl=0
重新生成加入集群命令
kubeadm join ha.api.k8s.gm:16443
--token 86lqi2.2bqc8v4wpcfl03xf
--discovery-token-ca-cert-hash sha256:ceb8ac3a76c75bb58317c1a0f8dde4a1fbcf3356474689845389aeb2efcbac75
--control-plane
--certificate-key "##############秘钥#################"
重启服务
rm -rf /var/lib/kubelet/pods/*
rm -rf /var/lib/kubelet/mirror-pods/*
systemctl restart kubelet
API服务如果无法启动反复重复,可能是一个yaml文件问题
/etc/kubernetes/audit‑policy.yaml 现在是一个文件夹,不是文件!
kubectl logs -n kube-system kube-apiserver-k8s-master-6-4 -p
这个应该是个文件,删除这个目录,从其他机器copy一个文件过来即可