
実行中の 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