Назад | Перейти на главную страницу

Kubernetes застрял на ContainerCreating

Модуль в моем кластере Kubernetes застревает на «ContainerCreating» после запуска создания. Как просмотреть журналы этой операции, чтобы определить причину зависания? kubectl logs похоже, не работает, поскольку контейнер должен находиться в незавершенном состоянии.

kubectl describe pods перечислит все события, связанные с модулем, включая извлечение изображений, запуск контейнеров. Это может помочь.

kubectl get events --all-namespaces  --sort-by='.metadata.creationTimestamp'

Более подробная информация может быть предоставлена ​​в мероприятиях.

В моем случае у меня было событие, связанное с модулем:

default       13s         Warning   FailedMount               Pod          Unable to mount volumes for pod "restore-db-123-1-5f24s_default(9b7df264-2976-11ea-bb8f-42010a9a002c)": timeout expired waiting for volumes to attach or mount for pod "default"/"restore-db-123-1-5f24s". list of unmounted volumes=[nfsv]. list of unattached volumes=[nfsv default-token-hxrng]

В моем случае доступ докера к Интернету был заблокирован. Решилось с помощью прокси (используя комментарий 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 минут.

Чтобы проверить, загружает ли докер изображения, запустите:

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

в кластере, который показывает загружаемые временные файлы изображений, в противном случае - пустые.

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

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

ресурсы: ограничения: процессор: 1000 м память: 1024 млн запросов: процессор: 1000 м память: 1024 м

против

ресурсы: ограничения: процессор: 1000 м память: 1024 м запросы: процессор: 1000 м память: 1024 м

использование буквы m с заглавной буквы очень сильно влияет на использование ресурсов. Я застрял на ContainerCreating, потому что не выделил достаточно памяти моему контейнеру.