kubeadm を使用して kubernetes クラスター V1.10.0 を再初期化します。

言うまでもなく、とにかく、さまざまな理由でクラスターに障害が発生します。特に、マシンが多すぎて煩わしい高可用性モードではクラスターが失敗します。

失敗後、あらゆる種類の落とし穴があり、再インストールしたい場合は、オペレーティング システムを再インストールできません。

cat /etc/redhat-release 
CentOS Linux リリース 7.4.1708 (コア)
 uname -sr
Linux 4.4.127-1.el7.elrepo.x86_64

kubeadm バージョン: &version.Info{メジャー:"1"、マイナー:"10"、GitVersion:"v1.10.0"、GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead"、GitTreeState:"clean"、BuildDate:"2018-03-26T16:44 : 10Z"、GoVersion:"go1.9.3"、コンパイラー:"gc"、プラットフォーム:"linux/amd64"}


集まる

10.0.19.71 マスター etcd-1
10.0.19.72 マスター etcd-2
10.0.19.73 マスター etcd-3
10.0.19.74 docker リポジトリ
10.0.23.11 k8s-nodes-1
10.0.23.12 k8s-nodes-2
10.0 .23.13 k8s -nodes-3
10.0.23.14 k8s-nodes-4

master-etcd-X ノードで次のスクリプトを実行します
#!/bin/bash
#reset.sh
kubeadm replace
#関連サービスを停止します
systemctl stop docker kubelet etcd
#すべてのコンテナを削除します
docker rm -f $(sudo docker ps -qa) # /var/lib/kubelet/ ディレクトリを削除し、削除する前にアンインストールします。そうしないと、$(sudo tac /proc/mounts | sudo awk '{print の m に対して
不潔に削除されます)
$2} '|sudo grep /var/lib/kubelet);do
 sudo umount $m||
truened
rm -rf /var/lib/kubelet/
#/var/lib/rancher/ ディレクトリを削除し、削除する前にアンインストールしてください
for m in $(sudo tac /proc/mounts | sudo awk '{print $2}'|sudo grep /var/lib/rancher);do sudo umount $m||true completed rm -rf /var/lib
 /
rancher
/
# /run/kubernetes/ ディレクトリを削除します
rm -rf /run/kubernetes/
# すべてのデータ ボリュームを削除します
docker volume rm $(sudo docker volume ls -q) #すべてのコンテナとデータ ボリュームを再度表示して、 docker ps - a docker
がないことを確認しますボリューム ls yum 削除 -y docker* kubelet kubectl rm -rf /var/lib/docker rm -rf /var/lib/etcd rm -rf /var/lib/kubelet rm -rf /var/lib/calico rm -rf /data/etcd rm -rf /opt/cni rm -rf /var/etcd/calico-data rm -rf /usr/local/bin/Documentation rm -rf /root/.kube # ここに穴があります。転送ルールがクリアされていない場合、新しいネットワークはブロックされます














iptables -F
iptables -X
iptables -L
find / -type f -name docker*
find / -type f -name calico*
find / -type f -name etcd*
shutdown -r 今すぐ#!/bin/bash # init

を再インストールします。 sh yum install -y docker kubelet kubeadm kubectl systemctl daemon-reload mkdir -p /data/etcd # 生成された証明書はバックアップされているため、 mkdir -p /etc/kubernetes/pki/ etcd cp /etc/を生成する必要はありませんetcd/ssl/etcd.pem /etc/kubernetes/pki/etcd/client.pem cp /etc/etcd/ssl/etcd-key.pem /etc/kubernetes/pki/etcd/client-key.pem cp /etc/ etcd/ssl/etcd-root-ca.pem /etc/kubernetes/pki/etcd/ca.pem cp /etc/etcd/ssl/etcd.pem /etc/kubernetes/pki/etcd/server.pem 












cp /etc/etcd/ssl/etcd-key.pem /etc/kubernetes/pki/etcd/server-key.pem
cp /etc/etcd/ssl/etcd.pem /etc/kubernetes/pki/etcd/peer.pem  
cp /etc/etcd/ssl/etcd-key.pem /etc/kubernetes/pki/etcd/peer-key.pem
mv -f /etc/docker/daemon.json.rpm save /etc/docker/daemon.json
systemctl restart docker etcd  
sh /etc/kubernetes/downImage.sh
docker ps -a
docker volume ls
# この部分はマスターノード 72 と 73 でのみ実行されます
# scp [email protected]:/etc/kubernetes/pki/* /etc/ kubernetes /pki

rm -rf /etc/kubernetes/pki/api*
systemctl restart kubelet 
kubeadm init --config=/etc/kubernetes/config.yaml


おすすめ

転載: blog.csdn.net/lansye/article/details/79984077