kopsで構築したクラスタで calico が CrashLoopBackOff で起動しない問題
By kkoudev
結構ハマったので備忘録として記述しておきます。
kopsで構築した Kubernetes 1.11 系のクラスタを
1.12系にアップグレードする際に、 calico が起動しないで失敗する場合があります。
このときに考えられる原因としてはいくつかあるのですが、
kops のある程度古いバージョン (1.11系?) で構築したクラスタをアップグレードする際に発生しやすいです。
(しやすい、と濁しているのは確証があるわけではないのでおそらくという感じです)
1. calico の secrets が古い
自分がハマったのはこれでした。
calico-node の Pod のエラーに /certs/calico-client.pem: no such file or directory
というエラーが出ていれば
間違いなくこれです。
その場合は、calicoの新しいバージョンを拾ってきて適用します。
具体的には以下のようにします。
# v3.7 となっているところは利用している calico のバージョンに合わせてください。# kubectl describe で利用しているイメージからバージョンは確認できます
kubectl replace -f https://docs.projectcalico.org/v3.7/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml -n kube-system
2. etcdに古いノード情報が残っている
calicoが新しい場合に CrashLoopBackOff が発生する場合はこちらが原因の可能性があります。
具体的にはこちらの記事にあるとおりです。
https://varu3.hatenablog.com/entry/2018/06/07/190000
kopsでKuberentesのクラスタを構築している場合に同じような現象が起きた方は
上記の手順を確認してみると解決するかもしれません。