あるタイミングから「dial tcp 10.96.0.1:443: i/o timeout」がずっと出力され続けるようになった。意味としては特定のpodからapiサーバへの通信がタイムアウトするよ的な意味。
環境
(⎈ |kubernetes-admin@kubernetes:default) [root@k8s-master manifest]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master Ready control-plane,master 7h25m v1.20.0 192.168.1.105 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.0 k8s-worker01 Ready <none> 7h24m v1.20.0 192.168.1.85 <none> CentOS Linux 7 (Core) 3.10.0-1160.6.1.el7.x86_64 docker://20.10.0
CentOS7.9でDockerが20.10のk8sは1.20.0と言う検証なので全て最新版を入れてる構成。バグ踏んだかな?とか思ってログでググってみると似たようなログが出てる人が多くいた。
それぞれ違うリポジトリに上がっているissueだが原因は同じみたいで「お前のクラスタのネットワークがなんかおかしいぞ」と行った感じ。解決方法としては私の場合は以下の手順でやったら上手く行った。
# systemctl stop kubelet # systemctl stop docker # iptables --flush # iptables -tnat --flush # systemctl start kubelet # systemctl start docker
workerで適用されているiptablesの設定がおかしくなっていたのか根本的な原因は不明のまま。(クラスタ再構築して同じような操作をするも再現しない。)
永遠にモヤモヤしたままになりそう。