Модуль в моем кластере 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):
minikube stop
minikube delete
export http_proxy=http://user:pass@ip:port
export https_proxy=http://user:pass@ip:port
export no_proxy=192.168.99.0/24
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
export no_proxy=$no_proxy,$(minikube ip)
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, потому что не выделил достаточно памяти моему контейнеру.