Ошибка при создании подов в Kubernetes

Я установил Kubernetes на сервер Ubuntu, следуя инструкциям здесь. Я пытаюсь создать модули, используя kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --hostport=8000 --port=8080, как указано в примере. Однако, когда я делаю kubectl get pod, я получаю статус контейнера как pending. Далее сделал kubectl describe pod для отладки и вижу сообщение:

FailedScheduling pod (hello-minikube-3383150820-1r4f7) failed to fit in any node fit failure on node (minikubevm): PodFitsHostPorts.

Далее я пытаюсь удалить этот модуль с помощью kubectl delete pod hello-minikube-3383150820-1r4f7, но когда я продолжаю делать kubectl get pod, я вижу другой модуль с префиксом «hello-minikube-3383150820-», который я не создал. Кто-нибудь знает, как решить эту проблему? Заранее спасибо.


person rmb    schedule 11.07.2016    source источник


Ответы (1)


Предикат PodFitsHostPorts не работает, потому что на ваших узлах есть что-то еще, использующее порт 8000. Возможно, вы сможете узнать, что это такое, запустив kubectl describe svc.

kubectl run создает объект deployment (вы можете увидеть его с помощью kubectl describe deployments), который гарантирует, что вы всегда поддерживаете заданное количество реплик модуля (в данном случае 1). Когда вы удаляете модуль, контроллер развертывания автоматически создает для вас другой модуль. Если вы хотите удалить развертывание и создаваемые им модули, вы можете запустить kubectl delete deployments hello-minikube.

person CJ Cullen    schedule 11.07.2016
comment
Я понимаю. Спасибо. Теперь я могу удалить свои стручки. Однако, что касается состояния модулей, все модули находятся в состоянии «Создание контейнера». Похоже, что их соответствующие изображения не извлекаются из репозитория gcr.io. Я пытался вытащить их с помощью докера, но все равно получаю тот же статус. Вы знаете, как это исправить? Это как-то связано с сетевой конфигурацией виртуальной машины Docker, созданной minikube? - person rmb; 11.07.2016
comment
docker pull не работает с аналогичной ошибкой? Если это также не удается, возможно, виртуальные машины узла неправильно настроены для доступа к внешнему Интернету. - person CJ Cullen; 11.07.2016
comment
Сначала это не удалось, но после того, как я ввел информацию о прокси, как указано в stackoverflow.com/questions/23111631/ ошибка устранена. Однако, когда я запускаю kubectl image=imagename, статус «Создание контейнера». - person rmb; 11.07.2016
comment
Используете ли вы встроенный в minikube демон docker? (eval $(minikube docker-env)). Если это так, я думаю, что если вы можете докер вытащить образ туда, виртуальная машина докера, созданная миникубом, также сможет получить образ, но я не так хорошо знаком с внутренностями миникуба. - person CJ Cullen; 11.07.2016
comment
Некоторая информация о прокси-сервере отсутствовала, и после настройки прокси-сервера проблема была решена. - person rmb; 12.07.2016
comment
Потрясающий! Рад, что ты это понял. - person CJ Cullen; 12.07.2016
comment
Эй, добавив к этому, eval $(minikube docker-env) сообщает E0712 23:24:22.333128 112863 notify.go:54] Get https://storage.googleapis.com/minikube/releases.json: dial tcp 172.217.3.208:443: i/o timeout. Похоже, что докер внутри виртуальной машины не может подключиться к Интернету. - person nikk; 13.07.2016
comment
Да, и это вы можете исправить, если я добавлю ваши прокси в /var/lib/boot2docker/profile внутри minikube vm, а затем перезапустите /etc/init.d/docker. - person rmb; 15.07.2016
comment
Я не могу найти файл профиля в каталоге /var/lib/boot2docker - person user2439278; 24.01.2018