![Kubernets 1.21.3 Рекомендуемое значение для «clusterCIDR» в «KubeProxyConfiguration»](https://rvso.com/image/769311/Kubernets%201.21.3%20%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%BE%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%BB%D1%8F%20%C2%ABclusterCIDR%C2%BB%20%D0%B2%20%C2%ABKubeProxyConfiguration%C2%BB.png)
Я пытаюсь присоединить новый узел к существующему v1.21.3
кластеру с помощью Calico CNI. Команда join выдает 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
- с помощью этой команды обновил configmap 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'.
# 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:
решение1
Мне удалось воспроизвести вашу проблему. У меня та же ошибка. Необходимо обновить несколько других файлов конфигурации.
Чтобы полностью изменить пул IP-адресов модулей и узлов, вам необходимо обновить podCIDR
значения ClusterCIDR
в нескольких файлах конфигурации:
обновите ConfigMap
kubeadm-confg
— вы это уже сделалиобновите файл
/etc/kubernetes/manifests/kube-controller-manager.yaml
- вы это уже сделалиобновить определение узла(ов) с правильным
podCIDR
значением и повторно добавить их в кластеробновить ConfigMap
kube-proxy
вkube-system
пространстве имендобавьте новый пул IP-адресов в Calico CNI и удалите старый, заново создайте развертывания
Обновить определение узла(ов):
- Получить имя(я) узла(ов):
kubectl get no
- в моем случае этоcontroller
- Сохранить определение(я) в файл:
kubectl get no controller -o yaml > file.yaml
- Редактировать
file.yaml
-> обновитьpodCIDR
иpodCIDRs
значения с вашим новым диапазоном IP, в вашем случае10.203.0.0
- Удалить старое и применить новое определение узла:
kubectl delete no controller && kubectl apply -f file.yaml
Обратите внимание, что эти шаги необходимо выполнить для каждого узла в кластере.
Обновление ConfigMap kube-proxy
в kube-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
Добавьте новый пул IP-адресов в Calico и удалите старый:
Загрузите двоичный файл 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
Получите конфигурацию для отключения старого пула IP-адресов ->
calicoctl get ippool -o yaml > pool.yaml
Отредактируйте конфигурацию: ->
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
сети (в каждом пространстве имен, включая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.
Источник: