Я пытаюсь запустить Kubernetes (Hyperkube) локально с помощью Docker на своей машине:
Я запускаю эту команду, чтобы запустить контейнер kubelet:
docker run \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:rw \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/var/run:/var/run:rw \
--net=host \
--pid=host \
--privileged=true \
--name=kubelet \
-d \
gcr.io/google_containers/hyperkube-amd64:${K8S_VERSION} \
/hyperkube kubelet \
--containerized \
--hostname-override="127.0.0.1" \
--address="0.0.0.0" \
--api-servers=http://localhost:8080 \
--config=/etc/kubernetes/manifests \
--cluster-dns=10.0.0.10 \
--cluster-domain=cluster.local \
--allow-privileged=true --v=2
который запускает все остальные компоненты Kubernetes. Но некоторые компоненты (сервер api, диспетчер контроллеров ...) сразу закрываются.
логи контейнера диспетчера контроллеров (завершены)
I0425 13:47:27.265926 1 plugins.go:71] No cloud provider specified.
I0425 13:47:27.266077 1 replication_controller.go:208] Starting RC Manager
I0425 13:47:27.266208 1 nodecontroller.go:143] Sending events to api server.
E0425 13:47:27.273153 1 nodecontroller.go:229] Error monitoring node status: Get http://127.0.0.1:8080/api/v1/nodes: dial tcp 127.0.0.1:8080: connection refused
E0425 13:55:55.950012 1 controllermanager.go:216] Failed to start service controller: ServiceController should not be run without a cloudprovider.
Я пытался использовать --cloud-provider=""
в приведенной выше команде запуска, но она все еще не работает.
Добавление --cloud-provider к этой команде не устранит сообщение об ошибке «не удалось запустить контроллер службы», которое вы видели.
Технически эта команда запускает кубелет - у которого тоже есть такой же флаг - но не компонент, на который жалуются.
В этом примере он предоставляет простой способ запустить кластер k8s - несколько за счет возможности настройки. Фактические манифесты, запускающие диспетчер-диспетчер (компонент, который жалуется), находятся в / etc / kubernetes / manifestests. в контейнере докеров гиперкуба - и их нелегко переопределить.
Теперь, когда все это сказано, ошибка, которую вы видите (Не удалось запустить контроллер службы), на самом деле не должна быть фатальной, и она просто продолжится после этой точки (потому что облачный провайдер + контроллер службы не являются строго обязательными). Скорее всего, здесь происходит что-то еще. Рекомендую посмотреть, есть ли какие-либо дополнительные журналы после этой точки, и / или проверить журналы kubelet.
Да, я не вижу способа передать этот флаг. Обратите внимание, что вам нужно передать флаг kube-controller-manager здесь: https://github.com/kubernetes/kubernetes/blob/6c195a4923421f756bf13b2a3b2147c4b242aeed/cluster/images/hyperkube/static-pods/master.json#L16. Передача его кубелету не даст никакого эффекта.
Я подал https://github.com/kubernetes/kubernetes/issues/27085 чтобы это исправить. Не стесняйтесь подписаться на рассылку и добавить дополнительную информацию по этой проблеме.