Рейтинг:1

Как исправить ошибки ContainerCreating при развертывании metallb?

флаг ke

Для тестирования я установил Ubuntu 21 на сервер vmware esxi. На этой машине запустили kubernetes с помощью контейнеров lxc после этого хранилище LXC развернут и работает.

adminuser@testing:~/Desktop$ список lxc
+----------+----------+-----+-------- ---------------------------------------+---------- -+-----------+
| ИМЯ | СОСТОЯНИЕ | ИПВ4 | ИПВ6 | ТИП | СНИМКИ |
+----------+----------+-----+-------- ---------------------------------------+---------- -+-----------+
| кммастер | БЕГ | 10.8.0.217 (эт0) | fd42:666f:471d:3d53:216:3eff:fe54:dce6 (eth0) | КОНТЕЙНЕР | 0 |
+----------+----------+-----+-------- ---------------------------------------+---------- -+-----------+
| рабочий1 | БЕГ | 10.8.0.91 (эт0) | fd42:666f:471d:3d53:216:3eff:fee4:480e (eth0) | КОНТЕЙНЕР | 0 |
+----------+----------+-----+-------- ---------------------------------------+---------- -+-----------+
| работник2 | БЕГ | 10.8.0.124 (эт0) | fd42:666f:471d:3d53:216:3eff:fede:3c9d (eth0) | КОНТЕЙНЕР | 0 |
+----------+----------+----------------

Затем начал развертывание metallb в этом кластере, используя шаги, упомянутые в этом соединять. И применил этот configmap для маршрутизации. GNU nano 4.8 k8s-metallb-configmap.yaml

апиВерсия: v1
вид: карта конфигурации
метаданные:
  пространство имен: metallb-система
  имя: конфиг
данные:
  конфиг: |
    пулы адресов:
    - имя: по умолчанию
      протокол: уровень 2
      адреса:
      - 10.8.0.240-10.8.0.250

Но металлические капсулы не работают.

kubectl получить pods -n metallb-система
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
controller-6b78bff7d9-cxf2z 0/1 ContainerCreating 0 38m
спикер-fpvjt 0/1 CreateContainerConfigError 0 38 мин
спикер-mbz7b 0/1 CreateContainerConfigError 0 38 м
спикер-zgz4d 0/1 CreateContainerConfigError 0 38 мин

Я проверил журналы.

kubectl описать pod controller-6b78bff7d9-cxf2z -n metallb-system
Имя: контроллер-6b78bff7d9-cxf2z
Пространство имен: metallb-system
Приоритет: 0
Узел: kworker1/10.8.0.91
Время начала: ср, 14 июля 2021 г., 20:52:10 +0530
Ярлыки: app=metallb
                компонент = контроллер
                под-шаблон-хэш = 6b78bff7d9
Аннотации: prometheus.io/порт: 7472
                prometheus.io/scrape: правда
Статус: ожидание
IP:             
IP-адреса: <нет>
Контролируется: ReplicaSet/controller-6b78bff7d9
Контейнеры:
  контроллер:
    Идентификатор контейнера:  
    Изображение: quay.io/metallb/controller:v0.10.2
    Идентификатор изображения:      
    Порт: 7472/TCP
    Хост-порт: 0/TCP
    Аргументы:
      --порт=7472
      --config=конфигурация
    Состояние: Ожидание
      Причина: создание контейнера
    Готово: Ложь
    Количество перезапусков: 0
    Среда:
      METALLB_ML_SECRET_NAME: список участников
      METALLB_DEPLOYMENT: контроллер
    Маунты:
      /var/run/secrets/kubernetes.io/serviceaccount из kube-api-access-j76kg (ro)
Условия:
  Тип Статус
  Инициализировано Истинно 
  Готов Ложь 
  ContainersReady False 
  PodScheduled True 
Объемы:
  куб-апи-доступ-j76kg:
    Тип: спроецированный (том, который содержит внедренные данные из нескольких источников)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <ноль>
    Нисходящий API: правда
Класс QoS: BestEffort
Селекторы узлов: kubernetes.io/os=linux
Допуски: node.kubernetes.io/not-ready:NoExecute op=Существует в течение 300 с.
                             node.kubernetes.io/unreachable:NoExecute op=Существует 300 с.
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный Запланировано 32 м default-scheduler Успешно назначено metallb-system/controller-6b78bff7d9-cxf2z для kworker1
  Предупреждение FailedCreatePodSandBox 32m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 31m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 31m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 31m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 31m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 30m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы "50431bbc89188799562c48847be90e243bbf49a2c5401eb2219a0c4745cfcfb6": открыть /run/flannel/subnet.env: нет такого файла или каталога
  Предупреждение FailedCreatePodSandBox 30m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 30m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 30m kubelet Не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы
  Предупреждение FailedCreatePodSandBox 2 м (x131 более 29 м) kubelet (объединено из похожих событий): не удалось создать песочницу pod: ошибка rpc: code = Unknown desc = не удалось настроить сеть для песочницы "f5e93b893275afe5309eddd9686c0ecfeb01e91141259164082cb99c1e2c1902": /vnel/subrunnflae2c1902": Данный файл или каталог отсутствует

И контейнер для динамика.

kubectl описать pod Speaker-zgz4d -n metallb-system
Имя: спикер-zgz4d
Пространство имен: metallb-system
Приоритет: 0
Узел: кммастер/10.8.0.217
Время начала: ср, 14 июля 2021 г., 20:52:10 +0530
Ярлыки: app=metallb
              компонент = динамик
              хэш-ревизия контроллера = 7668c5cdf6
              pod-шаблон-генерация = 1
Аннотации: prometheus.io/порт: 7472
              prometheus.io/scrape: правда
Статус: ожидание
IP: 10.8.0.217
IP-адреса:
  IP: 10.8.0.217
Управляется: DaemonSet/динамик
Контейнеры:
  оратор:
    Идентификатор контейнера:  
    Изображение: quay.io/metallb/speaker:v0.10.2
    Идентификатор изображения:      
    Порты: 7472/TCP, 7946/TCP, 7946/UDP
    Хост-порты: 7472/TCP, 7946/TCP, 7946/UDP
    Аргументы:
      --порт=7472
      --config=конфигурация
    Состояние: Ожидание
      Причина: CreateContainerConfigError
    Готово: Ложь
    Количество перезапусков: 0
    Среда:
      METALLB_NODE_NAME: (v1:spec.nodeName)
      METALLB_HOST: (v1:status.hostIP)
      METALLB_ML_BIND_ADDR: (v1:status.podIP)
      METALLB_ML_LABELS: приложение = металлический фунт, компонент = динамик
      METALLB_ML_SECRET_KEY: <устанавливается в ключ 'secretkey' в секретном 'memberlist'> Необязательно: false
    Маунты:
      /var/run/secrets/kubernetes.io/serviceaccount из kube-api-access-l2gzm (ro)
Условия:
  Тип Статус
  Инициализировано Истинно 
  Готов Ложь 
  ContainersReady False 
  PodScheduled True 
Объемы:
  куб-апи-доступ-l2gzm:
    Тип: спроецированный (том, который содержит внедренные данные из нескольких источников)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <ноль>
    Нисходящий API: правда
Класс QoS: BestEffort
Селекторы узлов: kubernetes.io/os=linux
Допуски: node-role.kubernetes.io/master:NoSchedule op=Exists
                             node.kubernetes.io/disk-pressure:NoSchedule op=Существует
                             node.kubernetes.io/memory-pressure:NoSchedule op=Существует
                             node.kubernetes.io/network-unavailable:NoSchedule op=Существует
                             node.kubernetes.io/not-ready:NoExecute op=Существует
                             node.kubernetes.io/pid-pressure:NoSchedule op=Существует
                             node.kubernetes.io/unreachable:NoExecute op=Существует
                             node.kubernetes.io/unschedulable:NoSchedule op=Существует
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный Запланировано 41m default-scheduler Успешно назначено metallb-system/speaker-zgz4d на kmaster
  Предупреждение FailedMount 41m kubelet MountVolume.SetUp не удалось выполнить для тома «kube-api-access-l2gzm»: не удалось синхронизировать кеш configmap: истекло время ожидания условия
  Предупреждение Ошибка 39 м (x12 более 41 м) kubelet Ошибка: секретный «список участников» не найден
  Обычный Pulled 78s (x185 более 41м) kubelet Образ контейнера "quay.io/metallb/speaker:v0.10.2" уже присутствует на машине

состояние контейнера после установки значения с нуля на 0.

kube-apiserver-kmaster 1/1 Бег 0 27м
kube-controller-manager-kmaster 1/1 Бег 0 27м
kube-flannel-ds-7f5b7 0/1 CrashLoopBackOff 1 76s
kube-flannel-ds-bs9h5 0/1 Ошибка 1 72s
kube-flannel-ds-t9rpf 0/1 Ошибка 1 71s
kube-proxy-ht5fk 0/1 CrashLoopBackOff 3 76 с
kube-proxy-ldhhc 0/1 CrashLoopBackOff 3 75 с
kube-proxy-mwrkc 0/1 CrashLoopBackOff 3 76 с
kube-scheduler-kmaster 1/1 Работает 0 2
p10l avatar
флаг us
У вас установлен сетевой аддон? Если да, то какой? Ошибка «open /run/flannel/subnet.env: нет такого файла или каталога» указывает на то, что вы должны установить [flannel] (https://github.com/flannel-io/flannel)
uday avatar
флаг ke
Я следовал этому https://github.com/justmeandopensource/kubernetes/tree/master/lxd-provisioning. Он содержит команду фланель. вы также можете попробовать и проверить, проблема возникает на машине esxi ubuntu, контейнерах lxd
p10l avatar
флаг us
Точно, я как-то пропустил это. Что выводит `kubectl get nodes` после выполнения в главном узле? (`lxc exec kmaster bash`)
p10l avatar
флаг us
Кроме того, если бы вы могли включить вывод `kubectl get pods -n kube-system`. Возможно, фланелевые капсулы ломаются.
uday avatar
флаг ke
lxc exec kmaster bash -- открывает оболочку bash kmaster. Это работает
Рейтинг:0
флаг br

Я решил это, вручную создав правильный секретный ключ с именем Список членов вместо список участников metallb следующим образом:

kubectl создать секретный общий -n список участников metallb-system --from-literal=secretkey="$(openssl rand -base64 128)"
Рейтинг:0
флаг us

У меня нет доступа к набору инструментов VMWare, но я попытался максимально точно воспроизвести вашу настройку.

В моем случае куб-прокси-* и кубе-фланель-дс-* стручки были в CrashLoopBackOff положение дел. Неудача с

1 main.go:251] Не удалось создать SubnetManager: ошибка при получении спецификации модуля для «kube-system/kube-flannel-ds-7tg89»: получить «https://10.96.0.1:443/api/v1/namespaces/kube -system/pods/kube-flannel-ds-7tg89": наберите tcp 10.96.0.1:443: тайм-аут ввода/вывода
1 server.go:489] открыть /proc/sys/net/netfilter/nf_conntrack_max: разрешение запрещено

Это предотвратило запуск металлических капсул.


Чтобы это работало, я отредактировал kube-прокси configMap

# kubectl edit configmap/kube-proxy -n kube-system

и изменился

максперкоре: ноль

к

максимальное ядро: 0

Затем удалил все kube-прокси и кубе-фланель-дс pod'ы, которые были немедленно воссозданы DaemonSet.

# kubectl получить pods -n kube-system
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
coredns-558bd4d5db-h5qsh 1/1 Бег 0 49м
coredns-558bd4d5db-m86w5 1/1 Бег 0 49м
etcd-kmaster 1/1 Бег 0 49м
kube-apiserver-kmaster 1/1 Бег 0 49м
kube-controller-manager-kmaster 1/1 Бег 0 49м
kube-flannel-ds-87pnx 1/1 Бег 0 11м
kube-flannel-ds-jmjtc 1/1 Бег 0 11м
kube-flannel-ds-rxbdm 1/1 Бег 0 11м
kube-proxy-dcvjs 1/1 Работает 0 12м
kube-proxy-h628j 1/1 Работает 0 12м
kube-proxy-w8jxn 1/1 Работает 0 12м
kube-scheduler-kmaster 1/1 Бег 0 49м

Затем удалил все модули metallb, которые также были воссозданы DeamonSet.

root@kmaster:~# kubectl get pods -n metallb-system
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
controller-6b78bff7d9-btwlr 1/1 Бег 0 12м
динамик-kr8lv 1/1 Бег 0 12м
спикер-sqk4d 1/1 Бег 0 12м
динамик-wm5r8 1/1 Бег 0 12м

Кажется, теперь все работает.


Я также создал /run/flannel/subnet.env файл вручную, с содержимым:

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=истина

но может и не надо

uday avatar
флаг ke
Я сделал, как вы предложили, но фланелевые контейнеры все равно рушатся. Если esxi недоступен, я думаю, вы также можете попробовать на рабочей станции vmware.
uday avatar
флаг ke
kube-flannel-ds-7f5b7 0/1 CrashLoopBackOff 1 76s kube-flannel-ds-bs9h5 0/1 Ошибка 1 72s kube-flannel-ds-t9rpf 0/1 Ошибка 1 71s kube-proxy-ht5fk 0/1 CrashLoopBackOff 3 76 с kube-proxy-ldhhc 0/1 CrashLoopBackOff 3 75 с kube-proxy-mwrkc 0/1 CrashLoopBackOff 3 76 с kube-scheduler-kmaster 1/1 Работает 0 2
p10l avatar
флаг us
Хм, пожалуйста, включите вывод `kubectl logs` этих модулей в свой исходный пост.

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

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