Рейтинг:0

Как исправить «Не удалось применить ресурс узла: [конфликт обновления: узел (...)]» при попытке применить конфигурацию узла Calico?

флаг cn

Я играю с Kubernetes и получил две машины VirtualBox — основную и рабочую. Каждый из них имеет два сетевых интерфейса - один для Интернета, а другой для связи между ВМ и хост-машиной.И у меня возникли проблемы с настройкой Calico, потому что он автоматически определяет неправильный сетевой интерфейс. Я сделал несколько настроек, чтобы исправить это, но одна проблема остается - воркер берет неправильный IP. И нашел как это исправить - но не работает. Подробности ниже.

Текущая рабочая конфигурация (10.0.3.15 это "неправильный" IP):

[12:35]user@ubuntu-vbox-k8s-master[~]$ ./calicoctl получить узел ubuntu-vbox-k8s-worker -o yaml
apiVersion: projectcalico.org/v3
вид: узел
метаданные:
  аннотации:
    projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64", "kubernetes.io/hostname":"ubuntu-vbox-k8s-worker","kubernetes.io/os":"linux"}'
  Отметка времени создания: "2021-09-26T10:59:00Z"
  этикетки:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: Linux
    kubernetes.io/arch: amd64
    kubernetes.io/имя хоста: ubuntu-vbox-k8s-worker
    kubernetes.io/ОС: линукс
  имя: ubuntu-vbox-k8s-рабочий
  РесурсВерсия: "9219"
  UID: 6f5efd41-e06c-4f9d-9b3a-248af88a385e
спецификация:
  адреса:
  - адрес: 10.0.3.15/24
    тип: CalicoNodeIP
  - адрес: 10.0.3.15
    тип: Внутренний IP
  бгп:
    ipv4Адрес: 10.0.3.15/24
    ipv4IPIPTunnelAddr: 192.168.77.64
  orchСсылки:
  - имя_узла: ubuntu-vbox-k8s-worker
    оркестратор: k8s
положение дел: {}

Я пытаюсь применить фиксированный:

[12:37]user@ubuntu-vbox-k8s-master[~]$ кот calico-worker.yaml 
apiVersion: projectcalico.org/v3
вид: узел
метаданные:
  аннотации:
    projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64", "kubernetes.io/hostname":"ubuntu-vbox-k8s-worker","kubernetes.io/os":"linux"}'
  Отметка времени создания: "2021-09-26T10:59:00Z"
  этикетки:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: Linux
    kubernetes.io/arch: amd64
    kubernetes.io/имя хоста: ubuntu-vbox-k8s-worker
    kubernetes.io/ОС: линукс
  имя: ubuntu-vbox-k8s-рабочий
  версия ресурса: "5303"
  UID: 6f5efd41-e06c-4f9d-9b3a-248af88a385e
спецификация:
  адреса:
  - адрес: 192.168.56.109
    тип: Внутренний IP
  orchСсылки:
  - имя_узла: ubuntu-vbox-k8s-worker
    оркестратор: k8s
положение дел: {}

и получил ошибку:

[12:38]user@ubuntu-vbox-k8s-master[~]$ ./calicoctl apply -f calico-worker.yaml 
Не удалось применить ресурс «Узел»: [конфликт обновления: узел (ubuntu-vbox-k8s-worker)]

Это странно, потому что мне удалось точно так же исправить мастер-ноду Calico без конфликта с конфигом:

apiVersion: projectcalico.org/v3
вид: узел
метаданные:
  аннотации:
    projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64", "kubernetes.io/hostname":"ubuntu-vbox-k8s-master","kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":"","node- role.kubernetes.io/master":"","node.kubernetes.io/exclude-from-external-load-balancers":""}'
  Отметка времени создания: "2021-09-26T10:56:24Z"
  этикетки:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: Linux
    kubernetes.io/arch: amd64
    kubernetes.io/имя хоста: ubuntu-vbox-k8s-master
    kubernetes.io/ОС: линукс
    node-role.kubernetes.io/control-plane: ""
    узел-роль.kubernetes.io/мастер: ""
    node.kubernetes.io/exclude-from-external-load-balancers: ""
  имя: ubuntu-vbox-k8s-мастер
  версия ресурса: "9052"
  UID: 9e6d55c6-f449-4ded-ab47-ea9d889d6b43
спецификация:
  адреса:
  - адрес: 192.168.56.108
    тип: Внутренний IP
  бгп:
    ipv4IPIPTunnelAddr: 192.168.77.0
  orchСсылки:
  - имя_узла: ubuntu-vbox-k8s-мастер
    оркестратор: k8s
положение дел:
  podCIDR:
  - 192.168.77.0/24
Mikołaj Głodziak avatar
флаг id
Я так понимаю, вы хотите изменить yaml и снова применить calicoctl? Вы пытались запустить команду `calicoctl replace`? [Ссылка] (https://docs.projectcalico.org/reference/calicoctl/replace)?
Wytrzymały Wiktor avatar
флаг it
Привет @DmitriyVinokurov. Любые обновления?
флаг cn
@MikoÅajGÅodziak, извините за поздний ответ, был в отпуске, теперь и применить и заменить работает, но ничего не меняется :(
флаг cn
@WytrzymaÅyWiktor, см. выше
флаг cn
Решено, добавлен ответ
Рейтинг:0
флаг cn

Решено с помощью канала Calico Slack по команде kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=enp0s3 от https://docs.projectcalico.org/networking/ip-autodetection

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

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