Не удается инициализировать под и создать контейнер из-за удалённого пространства имён flannel.

Вопрос или проблема

Я пытаюсь запустить Spark connect на Kubernetes. Пробелы имен в моем Kubernetes следующие:

root@master-node:~# kubectl get namespaces
NAME              STATUS   AGE
default           Active   17h
kube-node-lease   Active   17h
kube-public       Active   17h
kube-system       Active   17h

Я пытаюсь запустить spark connect на Kubernetes следующим образом:

./spark-3.5.1-bin-hadoop3/sbin/start-connect-server.sh --packages org.apache.spark:spark-connect_2.12:3.5.1,com.microsoft.azure:spark-mssql-connector_2.12:1.2.0 --conf spark.ui.port=4041 --driver-memory 8g --master k8s://https://172.22.0.80:6443  --conf spark.kubernetes.container.image=apache/spark-py --conf spark.kubernetes.namespace=default

Чтобы получить статус подов

root@master-node:~# kubectl get pods -n default
NAME                                           READY   STATUS              RESTARTS   AGE
spark-connect-server-1ab49692f56b85fe-exec-1   0/1     ContainerCreating   0          9m56s
spark-connect-server-1ab49692f56b85fe-exec-2   0/1     ContainerCreating   0          9m56s
root@master-node:~#

Я не уверен, почему он всегда создает два пода и всегда остается в состоянии ContainerCreating

Описание пода

root@master-node:~# kubectl describe pod spark-connect-server-1ab49692f56b85fe-exec-1
Name:             spark-connect-server-1ab49692f56b85fe-exec-1
Namespace:        default
Priority:         0
Service Account:  default
Node:             master-node/172.22.0.80
Start Time:       Mon, 04 Nov 2024 07:55:19 +0330
Labels:           spark-app-name=spark-connect-server
                  spark-app-selector=spark-9939557601604134993bed0957e51c4f

…..

Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason                  Age                    From               Message
  ----     ------                  ----                   ----               -------
  Normal   Scheduled               10m                    default-scheduler  Успешно назначен default/spark-connect-server-1ab49692f56b85fe-exec-1 на master-node
  Warning  FailedCreatePodSandBox  10m                    kubelet            Не удалось создать песочницу пода: rpc ошибка: код = Неизвестно, описание = не удалось
создать песочницу контейнера "4f3673b7b5451dfed45fa2ed5cd230bbaa64ddd997633f8933c052f20a1bfd36" для пода "spark-connect-server-1ab49692f56b85fe
-exec-1": networkPlugin cni не удалось настроить сеть пода "spark-connect-server-1ab49692f56b85fe-exec-1_default": тип плагина="flannel" не удался (добавить): loadFlannelSubnetEnv не удался: открыть /run/flannel/subnet.env: нет такого файла или директории
  Warning  FailedCreatePodSandBox  10m                    kubelet            
  Normal   SandboxChanged          5m56s (x241 over 10m)  kubelet            Песочница пода изменилась, она будет убита и пересоздана.
  Warning  FailedCreatePodSandBox  56s (x473 over 10m)    kubelet            (объединено из похожих событий): Не удалось создать песочницу пода: rpc ошибка
: код = Неизвестно, описание = не удалось настроить песочницу контейнера "4c6bf46f5379300fed39f569d46c3bfa7e7c845ec11321b2618b3c15adce60ed" для пода "spark
-connect-server-1ab49692f56b85fe-exec-1": networkPlugin cni не удалось настроить сеть пода "spark-connect-server-1ab49692f56b85fe-exec-1_default": тип плагина="flannel" не удался (добавить): loadFlannelSubnetEnv не удался: открыть /run/flannel/subnet.env: нет такого файла или директории

У меня возникает ошибка, связанная с пространством имен flannel. Я удалял эти ресурсы ранее, и я не уверен, почему возникает эта ошибка. Сброс и инициализация кластера не решают ошибку

Ответ или решение

Проблема, с которой вы сталкиваетесь, связана с конфигурацией сети в вашем кластере Kubernetes, а именно с недоступностью плагина сети Flannel. Ваша ошибка говорит о том, что в процессе создания пода, система не может найти файл конфигурации subnet.env, который необходим для правильной работы Flannel.

Причины проблемы

  1. Удаление пространства имен Flannel: Если пространство имен, связанное с Flannel, было удалено, это может привести к поломке сетевой настройки, так как Flannel не сможет правильно настроить сеть для создаваемых подов. Flannel использует subnet.env для получения информации о подсетях, которые он должен управлять.

  2. Отсутствие файла конфигурации: Сообщение об ошибке указывает на то, что файл /run/flannel/subnet.env отсутствует. Это критично для настройки сети Flannel, поскольку поды не могут быть правильно сопоставлены с сетевыми интерфейсами без этой информации.

  3. Состояние контейнера: Поды остаются в состоянии ContainerCreating, что говорит о том, что они не могут быть достаточно инициализированы из-за сетевых ошибок.

Решения

  1. Проверка состояния Flannel:

    • Убедитесь, что Flannel установлен и работает в вашем кластере. Используйте команду:

      kubectl get pods -n kube-system
    • Посмотрите, есть ли поды Flannel и в каком они состоянии. Если они находятся в состоянии ошибки, следует их перезапустить или переустановить.

  2. Переустановка Flannel:

    • Если Flannel не работает или его нет, попробуйте переустановить его. Вы можете использовать следующую команду для установки Flannel:

      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel.yml
    • После установки проверьте, создался ли файл /run/flannel/subnet.env.

  3. Проверка конфигурации CNI:

    • Убедитесь, что конфигурация CNI (Container Network Interface) правильно настроена. Проверьте все конфигурации в /etc/cni/net.d/.
  4. Проверка журналов:

    • Проверьте журналы kubelet на вашем узле для выявления проблем:

      journalctl -u kubelet
  5. Сброс кластера: Если ни одно из вышеперечисленных решений не сработало, возможно, стоит выполнить сброс вашего кластера. Однако это должно рассматриваться как крайняя мера, поскольку приведет к удалению всех ресурсов кластера.

Заключение

Проблема, с которой вы столкнулись, может быть решена путем восстановления работы Flannel и проверки его конфигурации в вашем кластере. Следуйте шагам, чтобы диагностировать и исправить ситуацию. Если проблема остается, возможно, потребуется более глубокий анализ логов и состояния ваших ресурсов Kubernetes.

Оцените материал
Добавить комментарий

Капча загружается...