CIDRネットワークフランネルとKubernetesを変更することは可能ですか

CIDRネットワークフランネルとKubernetesを変更することは可能ですか

実行中の Kubernetes クラスターで CIDR ネットワーク フランネルを変更することは可能ですか? 可能であれば、起動されたポッドはどうなりますか?

ありがとう

答え1

私は変わることができたフランネルCIDR ネットワーク プールを次のように設定します。

新しくk8sクラスタをインストールしたと仮定します。kubeadmコマンド--pod-network-cidrに適切なフラグを採用したビルダー ツール:kubeadm init

podCIDR特定のk8sのパラメータをオーバーライドするノード新しい IP ソース範囲を持つリソース、パイプ出力の望ましい方法:

$ kubectl get no $hostname -o yaml >> file.yaml | sed -i "s~$old_ip~$new_ip~" file.yaml| kubectl delete no $hostname && kubectl create -f file.yaml

net-conf.json関連するFlannelのヘッダーの下の「ネットワーク」フィールドを置き換えます構成マップ新しいネットワーク IP 範囲:

$ kubectl edit cm kube-flannel-cfg -n kube-system

net-conf.json: | { "ネットワーク": "10.244.0.0/16", "バックエンド": { "タイプ": "vxlan" } }

古いネットワーク プールに残っている現在の CNI ネットワーク インターフェイスを消去します。

$ sudo ip link del cni0; sudo ip link del flannel.1

Flannel ポッドと CoreDNS ポッドをそれぞれ再生成します。

$ kubectl delete pod --selector=app=flannel -n kube-system
$ kubectl delete pod --selector=k8s-app=kube-dns -n kube-system

CoreDNS ポッドが新しいネットワーク プールから IP アドレスを取得するまで待機します。カスタム ポッドも手動で再作成しない限り、コンテナー内に古い IP アドレスが保持されることに注意してください。

答え2

Calico の場合、新しい IP プールを作成し、古いものを無効にします。https://projectcalico.docs.tigera.io/networking/migrate-pools

関連情報