kubeadm使ったKubernetesクラスタのCNIにCalicoを使う際のカスタムアドレスの指定が簡単(というか不要)になっていたのでメモ
CalicoのデフォルトCIDR
kubeadm v1.17 / Calico v3.11
kubeadm v1.17までのドキュメント(記憶の限りv1.18でも最初は記載されてた気が…)だと「Calicoはデフォルトで192.168.0.0/16
を使用するので--pod-network-cidr=192.168.0.0/16
を指定してね」とドキュメントに記載されています。
そしてデプロイに使用するCalicoのマニフェスト(v3.11)にも192.168.0.0/16
が設定値として記載されています。
https://docs.projectcalico.org/v3.11/manifests/calico.yaml
# The default IPv4 pool to create on startup if none exists. Pod IPs will be # chosen from this range. Changing this value after installation will have # no effect. This should fall within `--cluster-cidr`. - name: CALICO_IPV4POOL_CIDR value: "192.168.0.0/16"
なのでそれ以外のCIDRを使いたい場合は、マニフェストの修正が必要でした。
kubeadm v1.18 / Calico v3.14
そしてkubeadm v1.18の「現在の」ドキュメントにはこの辺りの記載がサクッと消えています。
どうなっているかと言うと、Calicoのマニフェスト(v3.14)ではIPアドレスの記載がコメントアウトされています。
https://docs.projectcalico.org/v3.14/manifests/calico.yaml
# The default IPv4 pool to create on startup if none exists. Pod IPs will be # chosen from this range. Changing this value after installation will have # no effect. This should fall within `--cluster-cidr`. # - name: CALICO_IPV4POOL_CIDR # value: "192.168.0.0/16"
これによってCalicoをデプロイするときにCIDRを明示的に指定しなくても、クラスタの設定(kubeadm init --pod-network-cidr=203.0.113.0/24
みたいに設定した値)を勝手に見てくれるようになっています。
なのでpodのネットワーキングにCalicoを使う場合、今まではCalicoに合わせてpodのCIDRを設定するか、podのCIDRに合わせてCalicoのマニフェストの修正が必要でしたが、現在(ファイルを見る限りCalicoのv3.13以降)はどちらも不要になったので、kubeadm init
のときのCIDR指定はCalicoを気にせず自由にできるようになっています。
まとめ:ドキュメントは公式の最新版(あるいは触ろうとしてるモノと一致したバージョン)をちゃんと見ましょう。(有志によるまとめを参照する場合もバージョンや記事の作成日は確認しましょう)
5月にたまたま見つけて間が開きまくってるけど、せっかくなのでメモ。
calicoをデプロイするマニフェスト、v3.13からCIDRの部分はコメントアウトされてた。
— z a k i (@zaki_hmkc) 2020年5月20日
つまり…?
(デフォルト以外の設定の場合、ノードの設定を見て良きに計らう?or コメントアウトの解除処理も必要になる?)https://t.co/v0h71DZZpd pic.twitter.com/KmCFg1tNcI
remove flannel
ちなみにflannelはkubedamのCNIのリストから消えてました。
flannel、v1.18でリストから消えてたんですね… » kubeadm: remove flannel and add note about CNI issues · kubernetes/website@f736475 https://t.co/9a1998UTKx
— z a k i (@zaki_hmkc) 2020年5月18日