Я пытаюсь присоединить новый узел к существующему 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",
шаг для обновления CIDR pod с 10.201.0.0/16 до 10.203.0.0/16
kubectl -n kube-system edit cm kubeadm-config
podSubnet: 10.203.0.0/16
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:
Мне удалось воспроизвести вашу проблему. У меня такая же ошибка. Необходимо обновить несколько других файлов конфигурации.
Чтобы полностью изменить пул 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
- в моем случае это контроллер
kubectl get no controller -o yaml > file.yaml
file.yaml
-> обновить podCIDR
и podCIDRs
значения с вашим новым диапазоном IP-адресов, в вашем случае 10.203 .0.0
kubectl удалить контроллер && kubectl применить -f файл.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 -<
Проверьте, есть ли новый пул 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
Предметы:
- версия API: projectcalico.org/v3
вид: IPPool
метаданные:
Отметка времени создания: "2021-08-12T07:50:24Z"
имя: по умолчанию ipv4-ippool
РесурсВерсия: "666"
спецификация:
Размер блока: 26
сидр: 10.201.0.0/16
ipipMode: всегда
natOutgoing: правда
селектор узлов: все()
vxlanMode: никогда
отключено: правда
Применить новую конфигурацию: 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 Всегда Никогда true all()
мой-новый-пул 10.203.0.0/16 true Всегда Никогда false all()
Повторно создайте модули, которые находятся в сети 10.201.0.0
(в каждом пространстве имен, включая пространство имен kube-system
): просто удалите их, и они должны мгновенно воссоздаться в новом Диапазон IP-пулов, например:
kubectl delete pod calico-kube-controllers-58497c65d5-rgdwl -n kube-system
kubectl удалить модули coredns-78fcd69978-xcz88 -n kube-system
kubectl удалить модуль nginx-deployment-66b6c48dd5-5n6nw
и т.д..
Вы также можете удалять и применять развертывания.
После выполнения этих шагов предупреждение о значении clusterCIDR
при добавлении нового узла не появляется. Новые модули создаются в правильном диапазоне пула IP-адресов.
Источник: