Kubernetes застрягли на ContainerCreating


99

Струм в моєму кластері Kubernetes застряг на "ContainerCreating" після запуску створення. Як я бачу журнали цієї операції, щоб діагностувати, чому вона застрягла? kubectl logsСхоже, не працює, оскільки контейнер повинен знаходитися в режимі очікування.


kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/… - це документація про можливі фази. На жаль, це не включає ContainerCreating...
Xiong Chiamiov

Відповіді:


125

kubectl describe podsбуде перераховано всі події, пов'язані з стручком, включаючи витягування зображень, запуск контейнерів. Це може допомогти.


5
що робити, якщо контейнер застряг у ContainerCreating без жодних подій? для мене події відображаються як "Без подій".
Боб

1
Деякі події, схоже, потребують певного часу. Наприклад, час очікування спроби встановити диск для мене займає близько 2 хвилин, перш ніж він відображатиметься як подія.
jwadsack

8
Це трапляється, коли ви використовуєте секрети, і вони не знайдені (наприклад, помилка друку в ямлі або ви забули створити її раніше). Для майже всіх інших можливих помилок він отримує стан CrashLoopback або Error, але при секретах він просто застряє в ContainerCreating, якщо ви опишете стручок, то в самому кінці ви побачите повідомлення про те, що секрет не знайдений, але він ледве говорить нічого про проблему.
danius

Так, зазвичай у вас немає подій, перш ніж він починає щось робити.
erikbwork

Сталося зі мною сьогодні вранці, і це було помилковим помилкою на хості. Так, липка клавіатура.
Джо Блок

4

У моєму випадку доступ докера до Інтернету був заблокований. Це було вирішено за допомогою проксі (з використанням коментаря sandylss ):

  1. minikube stop
  2. minikube delete
  3. export http_proxy=http://user:pass@ip:port
  4. export https_proxy=http://user:pass@ip:port
  5. export no_proxy=192.168.99.0/24
  6. minikube start --logtostderr --v=0 --bootstrapper=localkube --vm-driver hyperv 
      --hyperv-virtual-switch "Primary Virtual Switch" --docker-env HTTP_PROXY=$http_proxy \
      --docker-env HTTPS_PROXY=$https_proxy --docker-env NO_PROXY=$no_proxy
    
  7. export no_proxy=$no_proxy,$(minikube ip)
  8. export NO_PROXY=$no_proxy,$(minikube ip)

Потім, щоб перевірити, чи має докер доступ до Інтернету, запустіть:

$ docker pull tutum/hello-world

у кластері (підключіться до кластера за допомогою minikube ssh); зупинити процес, якщо він розпочне завантаження.

Моєю другою проблемою було повільне підключення до Інтернету. Оскільки необхідні зображення докера мають порядку 100 МБ, і докерні контейнери, і стручки Kubernetes залишалися \pauseі зберігаються ContainerCreatingпротягом 30 хвилин.

Щоб перевірити, чи Docker завантажує зображення, запустіть:

$ ls -l /var/lib/docker/tmp

в кластері, де відображаються тимчасові файли зображень, які завантажуються, порожні в іншому випадку.

Якщо ви розробляєте minikube та використовуєте VPN, докер може використовувати вашу VPN через fiddler . Тобто докер буде підключений до ip: порту fiddler, а fiddler підключений до VPN. В іншому випадку VPN не поділяється між вашим хостом і minikube VM.


Потрапив цей помилок сьогодні. Досі не впевнений, що це спричинило. Речі працювали чудово одну хвилину, а наступну цю проблему вирішили. Дякую за виправлення. Це працювало для мене.
Джим

0

Я одного разу потрапив на це через те, що мої декларації ресурсів були випадково дуже маленькими.

ресурси: ліміти: процесор: 1000м пам'ять: 1024М запитів: процесор: 1000м пам’ять: 1024М

проти

ресурси: ліміти: процесор: 1000м пам’ять: 1024м запити: процесор: 1000м пам’ять: 1024м

використовуючи велику користь, що m робить дуже велику різницю у використанні ресурсів. Я застряг на ContainerCreating, тому що мені не дали достатньо пам’яті своєму контейнеру.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.