動かざることバグの如し

近づきたいよ 君の理想に

Kubernetesクラスタを完全に初期化する方法

環境

Kubernetesの設定にミスった、istioがうまく動かなくなった。。。etc等で泣く泣く初期化するも、そもそも正常に初期化できておらず再インストール後もつまずくケースが多い。

実は 「kubeadm reset」だけだとうまく初期化できないケースもあるので完全に初期化する方法をメモ

Kubernetes完全初期化コマンド

コピペで出来るようにした

kubeadm reset --force
systemctl stop kubelet
rm -rf /etc/kubernetes/
rm -rf ~/.kube/
rm -rf /var/lib/kubelet/
rm -rf /var/lib/cni/
rm -rf /etc/cni/
rm -rf /var/lib/etcd/
iptables -F && iptables -X

サーバー再起動

以下エラーパターン

Unmounting mounted directories in "/var/lib/kubelet"で止まる

ここで延々止まってしまうパターン

# kubeadm reset --force
[preflight] Running pre-flight checks
W0727 23:16:11.210479    2357 removeetcdmember.go:84] [reset] No kubeadm config, using etcd pod spec to get data directory
[reset] No etcd config found. Assuming external etcd
[reset] Please, manually reset etcd to prevent further issues
[reset] Stopping the kubelet service
[reset] Unmounting mounted directories in "/var/lib/kubelet"
ip netns list | cut -d' ' -f 1 | xargs -n1 ip netns delete; crictl rmp -af

元記事は Reset cluster and remove node error at crictl can't remove all pods · Issue #7177 · kubernetes-sigs/kubespray

failed to stop running pod, cni plugin not initializedでエラー

kubeadm reset自体は実行できるが以下のようなログが出るときはおそらくpodが生き残ったままなので正常に初期化できていない

, error: exit status 1,  7f261f7372ce55dffaddaa71a8d347b04409e398519c9e6f572c05a1cebd6fd2: output: time="2022-07-27T23:03:37+09:00" level=fatal msg="stopping the pod sandbox \"7f261f7372ce55dffaddaa71a8d347b04409e398519c9e6f572c05a1cebd6fd2\": rpc error: code = Unknown desc = failed to destroy network for sandbox \"7f261f7372ce55dffaddaa71a8d347b04409e398519c9e6f572c05a1cebd6fd2\": cni plugin not initialized"

その場合はkubeadmでは同しようもないので「crictl」コマンドで掃除する

全pod削除 削除対象がいない場合はなぜかシンタックスエラー扱いになるが問題ない

crictl --runtime-endpoint unix:///run/containerd/containerd.sock rmp --all --force

全コンテナ削除

crictl --runtime-endpoint unix:///run/containerd/containerd.sock rm --all --force

全イメージ削除

crictl --runtime-endpoint unix:///run/containerd/containerd.sock rmi --prune

で再度Kubernetes完全初期化コマンドを実行してサーバー再起動