0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetesでkubeadm initがCrashLoopBackOffのメッセージを出して失敗する。(企業イントラネット内環境等)

Posted at

CNIにtigera-operatorを使って複数のCNIを持つKubernetes環境を構築しようとした際に、
kubeadm init が、pods tigera-operatorがエラーで終了し、
namespace:calico-systemのpodsが立ち上がらない現象が発生し、
なかなか他の似たような記事が見当たらなく、数日はまったので誰かの役にたてればと思い、残します。。
時間がない人は、一番↓に結論書いてあります。

kubeadm initまでは、下記記事参考
https://docs.projectcalico.org/getting-started/kubernetes/quickstart。
また、このエラーは恐らくOSやバージョンには非依存です。
が、念のため筆者の環境をのせておきます。

$ uname -a
Linux core5-ub-dk02 5.4.0-52-generic #57~18.04.1-Ubuntu SMP Thu Oct 15 14:04:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

kube init後
podsが起動するのを待ってると...

$ kubectl get pods -A
NAMESPACE         NAME                                      READY   
--------
snip
--------
tigera-operator   tigera-operator-cdc4b6478-rlrlz            0/1       CrashLoopBackOff   2          1m

CrashLoopBackOff?とはなんぞ。
失敗して、何度か再起動を繰り返している様子。
podsのログをのぞいてみる。

$ kubectl logs tigera-operator-cdc4b6478-rlrlz -n tigera-operator

....snip....
Dial tcp 10.96 0.1 443: getsockopt: no route to host

ほう。。

これは、何のIPアドレスだっけと思い調べると、

$ kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   24h

えええ
ここは、うまいことNATやらルーティングやらでつながるようにしてくれてるでしょ普通ー。
と思ったので、NATが上手くいってないのかと思い、もう一度作り直した。
以下、色々リセットするためのコマンド。公式には、上から3つぐらいしか書かれていない

sudo  kubeadm reset
sudo rm $HOME/.kube/config
sudo rm -rf /etc/cni/net.d/*
sudo sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
sudo systemctl stop kubelet
sudo systemctl stop docker
sudo iptables --flush
sudo iptables -tnat --flush
sudo systemctl start kubelet
sudo systemctl start docker
sudo iptables -P FORWARD ACCEPT

しかし、その後構築し直すも同じく失敗。

んー、なんかホストのネットワーク関連っぽいな。
試しにインターネット直接繋がる環境でやってみると、すんなり完了。
色々さ分見ながら切り分けすと、

# ip a
# ip r

上記コマンドで差分をみてみると、なんと、
Kubernetesホスト上のルーティングテーブルに、デフォルトゲートウェイが設定されていなかったのが問題だった。。

弊社のイントラネット内だと、デフォルトゲートウェイの設定とかいらないので、(外にでたい場合はHTTP-Proxyを指定する)デフォゲ設定してなかったのだ。。

こんなので数日はまるとは。。。
Docker関連の外にでれない環境内での構築ははまりますなあ。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?