Kubernets 1.21.3 Рекомендуемое значение для «clusterCIDR» в «KubeProxyConfiguration»

Kubernets 1.21.3 Рекомендуемое значение для «clusterCIDR» в «KubeProxyConfiguration»

Я пытаюсь присоединить новый узел к существующему 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

  1. с помощью этой команды обновил configmap kubeadm-confg kubectl -n kube-system edit cm kubeadm-config

podSubnet: 10.203.0.0/16

  1. Обновил 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 и удалите старый, заново создайте развертывания

Обновить определение узла(ов):

  1. Получить имя(я) узла(ов): kubectl get no- в моем случае этоcontroller
  2. Сохранить определение(я) в файл:kubectl get no controller -o yaml > file.yaml
  3. Редактировать file.yaml-> обновить podCIDRи podCIDRsзначения с вашим новым диапазоном IP, в вашем случае10.203.0.0
  4. Удалить старое и применить новое определение узла:kubectl delete no controller && kubectl apply -f file.yaml

Обратите внимание, что эти шаги необходимо выполнить для каждого узла в кластере.

Обновление ConfigMap kube-proxyв kube-systemпространстве имен

  1. Получить текущую конфигурацию kube-proxy:kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
  2. Изменить kube-proxy.yaml-> обновить ClusterCIDRзначение с вашим новым диапазоном IP-адресов, в вашем случае10.203.0.0
  3. Удалите старый и примените новый kube-proxyConfigMap:kubectl delete cm kube-proxy -n kube-system && kubectl apply -f kube-proxy.yaml

Добавьте новый пул IP-адресов в Calico и удалите старый:

  1. Загрузите двоичный файл 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
    
  2. Добавить новый пул 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
    
  5. Применить новую конфигурацию: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()      
    
  6. Повторно создайте модули, которые находятся в 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.

Источник:

Связанный контент