Не удалось создать песочницу для модуля: ошибка rpc: код = Неизвестно desc = не удалось настроить контейнер для песочницы

Мы пытаемся создать POD, но статус Pod давно был у ContainerCreating.

Это результат, который мы получили после выполнения команды: kubectl describe pod

Name:           demo-6c59fb8f77-9x6sr
Namespace:      default
Priority:       0
Node:           k8-slave2/10.0.0.5
Start Time:     Wed, 23 Dec 2020 10:16:23 +0000
Labels:         app=demo
                pod-template-hash=6c59fb8f77
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/demo-6c59fb8f77
Containers:
  private-docker-registry:
    Container ID:
    Image:          private-docker-registry:5000/mahin/mof-docker-demo:v1
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-p94zw (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-p94zw:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-p94zw
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
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  Successfully assigned default/demo-6c59fb8f77-9x6sr to k8-slave2
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8eee497a2176c7f5782222f804cc63a4abac7f4a2fc7813016793857ae1b1dff" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "95e72bfc6f6c13de7f5c96eb76b012c2e6639ca03f4c2f270b23ed1a09b90413" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "566370012e4a1d32af2ef9035ff64d743cd81f36f25d2724e7b033e393b8247e" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "7d499e40f572cfc29ecfb44f8376493df56a44213b1c1e9333b65499a0c288cd" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "53241e64de1e4470712b4061e2c82f44916d654bc532f8f1d12e5d5d4e136914" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "fd168faab4546f988dc38fc56df2f71cf80c922e86d3f869be15a43f08328f99" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "e578afe329abb0cba64802dfa480e00f2bbbb8c80be537791c24a31c853eb62f" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "a3cb32dba55907ca907fc4f38f7ca05ef6db10a6af2dd1fa3c4db166e4ab9ffe" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m                  kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "7e4368ba8ec460b3c94de24ab0a04b6c799eb28df885cbbacfc3bb3ffa8c1e67" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Warning  FailedCreatePodSandBox  10m (x4 over 10m)    kubelet            (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "c4aaa8f8cd2dc1eff788baf04774c4ecc845568d00ed1b386df311ec224eb6f3" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
      Normal   SandboxChanged          56s (x551 over 10m)  kubelet            Pod sandbox changed, it will be killed and re-created.



azureuser@k8-master:~$ kubectl get pods --all-namespaces
NAMESPACE              NAME                                         READY   STATUS              RESTARTS   AGE
default                demo-6c59fb8f77-2jq6k                        0/1     ContainerCreating   0          5m23s
kube-system            coredns-f9fd979d6-q8s9b                      1/1     Running             2          27h
kube-system            coredns-f9fd979d6-qnm4j                      1/1     Running             2          27h
kube-system            etcd-k8-master                               1/1     Running             2          27h
kube-system            kube-apiserver-k8-master                     1/1     Running             3          27h
kube-system            kube-controller-manager-k8-master            1/1     Running             3          27h
kube-system            kube-flannel-ds-kqz4t                        0/1     CrashLoopBackOff    92         27h
kube-system            kube-flannel-ds-szqzn                        1/1     Running             3          27h
kube-system            kube-flannel-ds-v9q47                        0/1     CrashLoopBackOff    142        27h
kube-system            kube-proxy-4mb47                             1/1     Running             2          27h
kube-system            kube-proxy-54m9b                             1/1     Running             2          27h
kube-system            kube-proxy-wdxfz                             1/1     Running             1          27h
kube-system            kube-scheduler-k8-master                     1/1     Running             3          27h
kubernetes-dashboard   dashboard-metrics-scraper-7b59f7d4df-zmlvs   0/1     ContainerCreating   0          27h
kubernetes-dashboard   kubernetes-dashboard-665f4c5ff-cnsvn         0/1     ContainerCreating   0          6h3m

Чтобы исправить flannel crashloopbackoff, мы выполнили сброс Kubeadm, и через некоторое время эта проблема появилась снова.

В настоящее время мы работаем с одним главным и двумя рабочими узлами.

Подробная информация о моем кластере выглядит следующим образом: azureuser @ k8-master: ~ $ kubectl config view apiVersion: v1 cluster: - cluster: certificate-author-data: DATA + OMITTED server: https://52.150.11.168:6443 имя: kubernetes контексты: - context: cluster: kubernetes пользователь: kubernetes-admin имя: kubernetes-admin @ kubernetes current-context: kubernetes- admin @ kubernetes kind: Настройки конфигурации: {} пользователи: - name: kubernetes-admin пользователь: данные-сертификата-клиента: УДАЛЕНО данные-ключа-клиента: УДАЛЕНО

Версия докера:

azureuser@k8-master:~$ sudo docker version
[sudo] password for azureuser: 
Client:
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        369ce74a3c
 Built:             Wed Oct 14 19:00:27 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.6
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       369ce74a3c
  Built:            Wed Oct 14 16:52:50 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu1~18.04.2
  GitCommit:
 runc:
  Version:          spec: 1.0.1-dev
  GitCommit:
 docker-init:
  Version:          0.18.0
  GitCommit:

версия kubeadm:

azureuser@k8-master:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.4", GitCommit:"d360454c9bcd1634cf4cc52d1867af5491dc9c5f", GitTreeState:"clean", BuildDate:"2020-11-11T13:15:05Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}

Фланель вылетает всякий раз, когда я пытался запланировать создание пода.


person Giridharan M    schedule 23.12.2020    source источник
comment
Привет, Вам нужно проверить журналы стручков фланели? почему это крушение   -  person Suresh Vishnoi    schedule 23.12.2020
comment
Пожалуйста, вставьте сообщение об ошибке в виде текста, а не изображения. Не могли бы вы поделиться более подробной информацией, например, о версии Kubernetes, вашем окружении? Вы пробовали другой CNI, кроме фланнера, например ситцевую ткань? Можете ли вы предоставить некоторые шаги для воспроизведения этой проблемы? Вы меняли количество узлов в своем кластере? Не могли бы вы также описать некоторые стручки других затронутых стручков? Достаточно ли у вас ресурсов (ОЗУ, ЦП)? Какие-нибудь порчи, изменения брандмауэра?   -  person PjoterS    schedule 23.12.2020
comment
Нет, мы не использовали никаких других CNI, кроме Flannel. И внесли изменения в сообщение, о котором вы упомянули. И да, ресурсов у нас достаточно.   -  person Giridharan M    schedule 23.12.2020
comment
Вы проверяли, есть ли у вас файл в указанном каталоге? /run/flannel/subnet.env? Если нет, вы можете создать его вручную, как указано в этой статье, или повторно развернуть flannel. Не могли бы вы также поделиться журналами затронутых модулей flannel kubectl logs <flannelPod> -n kube-system? Вы использовали фланель до того, как стали использовать kubeadm init?   -  person PjoterS    schedule 23.12.2020
comment
Да, я установил фланель после выполнения kubeadm init.   -  person Giridharan M    schedule 24.12.2020
comment
@GiridharanM, можете ли вы предоставить подробности, о которых я спрашивал в своем предыдущем комментарии?   -  person PjoterS    schedule 28.12.2020
comment
Пожалуйста, предоставьте kubectl describe и kubectl logs для фланелевых капсул. Также замените вывод kubectl get pods --all-namespaces на kubectl get po -o wide -A. Вы не можете создать эти модули, потому что ваш модуль CNI работает только на одном узле.   -  person PjoterS    schedule 29.12.2020


Ответы (1)


Фон

Я думаю, что ваша проблема связана с вашим статусом 2 Flannel CNI pods CrashLoopBackOff.

Ваша ошибка

Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8eee497a2176c7f5782222f804cc63a4abac7f4a2fc7813016793857ae1b1dff" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory

указывает, что пакет не может быть создан из-за отсутствия /run/flannel/subnet.env файла. В документе Flannel Github вы можете найти:

Flannel запускает небольшой бинарный агент под названием flanneld на каждом хосте и отвечает за выделение аренды подсети для каждого хоста из большего предварительно сконфигурированного адресного пространства.

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

NAMESPACE              NAME                                         READY   STATUS              RESTARTS   AGE
...
kube-system            kube-flannel-ds-kqz4t                        0/1     CrashLoopBackOff    92         27h
kube-system            kube-flannel-ds-szqzn                        1/1     Running             3          27h
kube-system            kube-flannel-ds-v9q47                        0/1     CrashLoopBackOff    142        27h

Если упомянутый модуль был запланирован на узле, где фланелевый модуль не работает, он не будет создан из-за CNI network issues. Помимо вашего модуля demo, такая же проблема со статусом ContainerCreating есть и у kubernetes-dashboard модулей.

Заключение

Ваш demo pod не может быть запланирован, так как Kubernetes сталкивается с некоторыми сетевыми проблемами, связанными с файлом конфигурации flannel (...network: open /run/flannel/subnet.env: no such file or directory).

Количество перезапусков ваших фланелевых капсул очень велико, как для 27 hours. Вы должны определить причину и исправить это. Это может быть нехватка ресурсов, сетевые проблемы с вашей инфраструктурой или многие другие причины. Как только все flannel pod'ы будут работать правильно, вы не должны столкнуться с этой ошибкой.

Решение

Вы должны сделать так, чтобы фланелевые стручки корректно работали на каждом узле.

Дополнительные сведения об устранении неполадок

Для подробного исследования предоставьте

$ kubectl describe kube-flannel-ds-kqz4t -n kube-system
$ kubectl describe kube-flannel-ds-v9q47 -n kube-system

Подробная информация о журналах также будет полезна

$ kubectl logs kube-flannel-ds-kqz4t -n kube-system
$ kubectl logs kube-flannel-ds-v9q47 -n kube-system

Замените kubectl get pods --all-namespaces на kubectl get pods -o wide -A и выведите kubectl get nodes -o wide.

Если вы предоставите эту информацию, должно быть возможно определить основную причину проблем flannel pods, и я отредактирую этот ответ, указав точное решение.

person PjoterS    schedule 29.12.2020
comment
@Giridharan M Вы смогли исправить свою проблему? - person PjoterS; 05.01.2021
comment
привет @PjoterS, у меня такая же проблема, не возражаете, если вы окажете помощь? мой вывод для k get po -o wide -A показывает coredns 'Completed' и flannel-ds 'CrashLoopBackOff'; вторая команда показывает, что все узлы готовы - person Spencer Trinh; 01.03.2021
comment
@Spencer Trinh, было бы лучше, если бы вы создали новый вопрос в стеке с некоторыми деталями (например, описанием фланцевого модуля, деталями env и шагами по воспроизведению проблемы). - person PjoterS; 01.03.2021
comment
Я нашел решение на github.com/kubernetes/kubernetes/issues/70202, однако при каждой перезагрузке мне нужно заново создавать этот файл. Это нормальное поведение? - person Spencer Trinh; 07.03.2021