zaki work log

作業ログやら生活ログやらなんやら

[Kubernetes v1.18 / Calico メモ] デプロイ時にpodのCIDR設定を気にする必要がなくなってます

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を指定してね」とドキュメントに記載されています。

v1-17.docs.kubernetes.io

そしてデプロイに使用する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の「現在の」ドキュメントにはこの辺りの記載がサクッと消えています

github.com

どうなっているかと言うと、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月にたまたま見つけて間が開きまくってるけど、せっかくなのでメモ。


remove flannel

ちなみにflannelはkubedamのCNIのリストから消えてました。

github.com