Рейтинг:2

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

флаг cn

Я пытаюсь присоединиться к новому узлу к существующему v1.21.3 кластер с Calico CNI. присоединиться к команде кластерCIDR предупреждение.

Как исправить это предупреждение о подсети?

# kubeadm join master-vip:8443 --token xxx --discovery-token-ca-cert-hash sha256:xxxx
[preflight] Запуск проверки перед полетом
[предварительная проверка] Чтение конфигурации из кластера...
[preflight] FYI: вы можете посмотреть этот файл конфигурации с помощью «kubectl -n kube-system get cm kubeadm-config -o yaml»
W0809 14:10:27.717696 75868 utils.go:69] Рекомендуемое значение для «clusterCIDR» в «KubeProxyConfiguration»: 10.201.0.0/16; предоставленное значение: 10.203.0.0/16
[kubelet-start] Запись конфигурации kubelet в файл «/var/lib/kubelet/config.yaml»
[kubelet-start] Запись файла среды kubelet с флагами в файл «/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 кластер-cidr
    --cluster-cidr=10.203.0.0/16

дамп информации о кластере kubectl | grep кластер-cidr
                            "--cluster-cidr=10.203.0.0/16",
                            "--cluster-cidr=10.203.0.0/16",
                            "--cluster-cidr=10.203.0.0/16",

шаг для обновления модуля CIDR с 10.201.0.0/16 до 10.203.0.0/16

  1. с помощью этой команды обновил карту конфигурации kubeadm-confg kubectl -n kube-system редактировать cm kubeadm-config

подсеть: 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
    кластерCIDR: 10.203.0.0/16
# kubectl get no -o yaml |grep -i podcidr
    подCIDR: 10.203.0.0/24
    podCIDR:
    подCIDR: 10.203.1.0/24
    podCIDR:
    подCIDR: 10.203.2.0/24
    podCIDR:
    подCIDR: 10.203.3.0/24
    podCIDR:
    подCIDR: 10.203.5.0/24
    podCIDR:
    подCIDR: 10.203.4.0/24
    podCIDR:
    подCIDR: 10.203.6.0/24
    podCIDR:
Mikołaj Głodziak avatar
флаг id
Не могли бы вы добавить к вопросу следующую информацию: IP-адрес основного контроллера и рабочего узла, которые вы пытаетесь подключить, вывод команды `sudo cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr` и `kubectl cluster-info dump | grep cluster-cidr` (оба с основного контроллера)? Вы как-то редактировали текущую конфигурацию на главном контроллере? Какую сеть вы использовали в команде `kubeadm` - `sudo kubeadm init --pod-network-cidr={network}`?
sfgroups avatar
флаг cn
@MikoÅajGÅodziak добавил встроенный ответ к сообщению.
Mikołaj Głodziak avatar
флаг id
Не могли бы вы описать (руководство, шаги), как вы изменили свою сеть `clusterCIDR` с `10.201.0.0/16` на `10.203.0.0/16`? Я пытаюсь воспроизвести вашу проблему.
Рейтинг:2
флаг cn

Мне удалось воспроизвести вашу проблему. У меня такая же ошибка. Необходимо обновить несколько других файлов конфигурации.

Чтобы полностью изменить пул IP-адресов модулей и узлов, вам необходимо обновить podCIDR и ClusterCIDR значения в нескольких файлах конфигурации:

  • обновить карту конфигурации kubeadm-config - ты уже сделал это

  • файл обновления /etc/kubernetes/manifests/kube-controller-manager.yaml - ты уже сделал это

  • обновить определение узла (узлов) с правильным podCIDR значение и повторно добавить их в кластер

  • обновить карту конфигурации kube-прокси в kube-система пространство имен

  • добавить новый пул IP в Calico CNI и удалить старый, воссоздать развертывания

Обновление определения узлов:

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

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

Обновить карту конфигурации kube-прокси в kube-система пространство имен

  1. Получить текущую конфигурацию kube-прокси: kubectl get cm kube-proxy -n kube-system -o yaml > kube-proxy.yaml
  2. Редактировать куб-proxy.yaml -> обновить ClusterCIDR значение с вашим новым диапазоном IP-адресов, в вашем случае 10.203.0.0
  3. Удалить старое и применить новое kube-прокси Карта конфигурации: kubectl удалить cm kube-proxy -n kube-system && kubectl применить -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 создать -f -<<EOF
    apiVersion: projectcalico.org/v3
    вид: IPPool
    метаданные:
      имя: мой-новый-бассейн
    спецификация:
      сидр: 10.203.0.0/16
      ipipMode: всегда
      natOutgoing: правда
    EOF
    

    Проверьте, есть ли новый пул IP: calicoctl получить ippool -o широкий

  3. Получите конфигурацию для отключения старого пула IP-адресов -> calicoctl получить ippool -o yaml > pool.yaml

  4. Отредактируйте конфигурацию: -> добавить отключено: правда за по умолчанию ipv4-ippool в пул.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: никогда
        отключено: правда
    
  5. Применить новую конфигурацию: calictoctl применить -f pool.yaml

    Исключенный вывод calicoctl получить ippool -o широкий команда:

    НАЗВАНИЕ 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()      
    
  6. Повторно создайте модули, которые находятся в 10.201.0.0 сети (в каждом пространстве имен, включая kube-система namespace): просто удалите их, и они должны мгновенно воссоздаться в новом диапазоне пула IP-адресов, например:

    kubectl удалить pod calico-kube-controllers-58497c65d5-rgdwl -n kube-system
    kubectl удалить модули coredns-78fcd69978-xcz88 -n kube-system
    kubectl удалить модуль nginx-deployment-66b6c48dd5-5n6nw
    и т.д..
    

    Вы также можете удалять и применять развертывания.

После применения этих шагов нет предупреждения о кластерCIDR значение при добавлении нового узла. Новые модули создаются в правильном диапазоне пула IP-адресов.

Источник:

sfgroups avatar
флаг cn
Обновлено до значения «10.203.0.0», но модуль по-прежнему создается с адресом «10.201.0.0». вот так `coredns-85d9df8444-8dpql 1/1 Running 0 10m 10.201.22.206`
sfgroups avatar
флаг cn
У Calico есть диапазон IP-адресов для модулей, нужно ли нам изменить его также, чтобы он соответствовал podcidr? `calicoctl получить ippool -o широкий НАЗВАНИЕ CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR default-ipv4-ippool 10.201.0.0/16 true Всегда Никогда false all()`
Mikolaj S. avatar
флаг cn
Хорошая мысль, моя ошибка. Я отредактировал свой ответ, как это исправить. Пожалуйста, проверьте его и дайте мне знать, если он работает.
sfgroups avatar
флаг cn
Я вижу шаги, это безумие, все еще pod создается в подсети «10.201.0.0». здесь calico pool `# calicoctl get ippool -o wide НАЗВАНИЕ CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR default-ipv4-ippool 10.201.0.0/16 true Всегда Никогда false all() my-new-pool 10.203.0.0/16 true Всегда Никогда true all() `
Mikolaj S. avatar
флаг cn
Из отправленного вами вывода видно, что вы отключили подсеть «10.203.0.0» вместо «10.201.0.0»;)
Mikolaj S. avatar
флаг cn
Я добавил исключенный вывод в свой ответ.
sfgroups avatar
флаг cn
Хороший улов, я проглядел вывод. Спасибо за помощь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.