Kubernetes 1.21.3 “KubeProxyConfiguration”中“clusterCIDR”的推薦值
我正在嘗試
v1.21.3
使用 Calico CNI 將新節點加入現有集群。加入命令發出clusterCIDR
警告。如何修復此子網警告消息?
# kubeadm join master-vip:8443 --token xxx --discovery-token-ca-cert-hash sha256:xxxx [preflight] Running pre-flight checks [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' W0809 14:10:27.717696 75868 utils.go:69] The recommended value for "clusterCIDR" in "KubeProxyConfiguration" is: 10.201.0.0/16; the provided value is: 10.203.0.0/16 [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
更新:
我
10.201.0.0/16
在集群設置期間使用,後來我改為10.203.0.0/16
. 不確定它仍然在哪裡獲得10.201.0.0/16
子網價值。這是子淨值。
# sudo cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr - --cluster-cidr=10.203.0.0/16 kubectl cluster-info dump | grep cluster-cidr "--cluster-cidr=10.203.0.0/16", "--cluster-cidr=10.203.0.0/16", "--cluster-cidr=10.203.0.0/16",
將 pod CIDR 從 10.201.0.0/16 更新到 10.203.0.0/16 的步驟
- 使用此命令更新了 kubeadm-confg 配置圖
kubectl -n kube-system edit cm kubeadm-config
podSubnet: 10.203.0.0/16
- 更新 kuber-controller-manger 並重新啟動它。
sed -i 's/10.201.0.0/10.203.0.0/' /etc/kubernetes/manifests/kube-controller-manager.yaml
更新IP後。
所有配置都將子網顯示為
10.203.0.0
但在“10.201.0.0”子網中創建的 pod。# kubectl get cm kube-proxy -n kube-system -o yaml |grep -i clusterCIDR clusterCIDR: 10.203.0.0/16 # kubectl get no -o yaml |grep -i podcidr podCIDR: 10.203.0.0/24 podCIDRs: podCIDR: 10.203.1.0/24 podCIDRs: podCIDR: 10.203.2.0/24 podCIDRs: podCIDR: 10.203.3.0/24 podCIDRs: podCIDR: 10.203.5.0/24 podCIDRs: podCIDR: 10.203.4.0/24 podCIDRs: podCIDR: 10.203.6.0/24 podCIDRs:
我設法複製了您的問題。我得到了同樣的錯誤。需要更新一些其他配置文件。
要完全更改 pod 和節點 IP 池,您需要更新幾個配置文件中的值
podCIDR
:ClusterCIDR
- 更新 ConfigMap
kubeadm-confg
- 你已經做到了- 更新文件
/etc/kubernetes/manifests/kube-controller-manager.yaml
- 你已經這樣做了- 使用適當的值更新節點定義
podCIDR
並將它們重新添加到集群中- 更新命名空間
kube-proxy
中的ConfigMapkube-system
- 在 Calico CNI 中添加新的 IP 池並刪除舊的,重新創建部署
更新節點定義:
- 獲取節點名稱:
kubectl get no
-在我的情況下是controller
- 將定義保存到文件:
kubectl get no controller -o yaml > file.yaml
- 根據您的情況,使用您的新 IP 範圍編輯
file.yaml
-> 更新podCIDR
和值podCIDRs``10.203.0.0
- 刪除舊的並應用新的節點定義:
kubectl delete no controller && kubectl apply -f file.yaml
請注意,您需要為集群中的每個節點執行這些步驟。
更新命名空間
kube-proxy
中的ConfigMapkube-system
- 獲取目前配置
kube-proxy
:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
- 編輯
kube-proxy.yaml
->ClusterCIDR
用你的新 IP 範圍更新值,在你的情況下10.203.0.0
- 刪除舊的並應用新的
kube-proxy
ConfigMap:kubectl delete cm kube-proxy -n kube-system && kubectl apply -f kube-proxy.yaml
在 Calico 中添加新的 IP 池並刪除舊的:
- 下載 Calico 二進製文件並使其可執行:
sudo curl -o /usr/local/bin/calicoctl -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.0/calicoctl" sudo chmod +x /usr/local/bin/calicoctl
- 添加新的 IP 池:
calicoctl create -f -<<EOF apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: my-new-pool spec: cidr: 10.203.0.0/16 ipipMode: Always natOutgoing: true EOF
檢查是否有新的 IP 池:
calicoctl get ippool -o wide
3. 獲取配置以禁用舊 IP 池 ->calicoctl get ippool -o yaml > pool.yaml
4. 編輯配置:->disabled:true
在default-ipv4-ippool
中添加pool.yaml
:apiVersion: projectcalico.org/v3 items: - apiVersion: projectcalico.org/v3 kind: IPPool metadata: creationTimestamp: "2021-08-12T07:50:24Z" name: default-ipv4-ippool resourceVersion: "666" spec: blockSize: 26 cidr: 10.201.0.0/16 ipipMode: Always natOutgoing: true nodeSelector: all() vxlanMode: Never disabled: true
- 應用新配置:
calictoctl apply -f pool.yaml
命令的異常輸出
calicoctl get ippool -o wide
:NAME CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR default-ipv4-ippool 10.201.0.0/16 true Always Never true all() my-new-pool 10.203.0.0/16 true Always Never false all()
- 重新創建
10.201.0.0
網路中的 pod(在每個命名空間中,包括kube-system
命名空間):只需刪除它們,它們應該立即在新的 IP 池範圍中重新創建,例如:kubectl delete pod calico-kube-controllers-58497c65d5-rgdwl -n kube-system kubectl delete pods coredns-78fcd69978-xcz88 -n kube-system kubectl delete pod nginx-deployment-66b6c48dd5-5n6nw etc..
您還可以刪除和應用部署。
clusterCIDR
應用這些步驟後,添加新節點時沒有關於值的警告。在適當的 IP 池範圍內創建新的 pod。來源: