ServiceController no debe ejecutarse sin un proveedor de cloud

Estoy intentando funcionar Kubernetes (Hyperkube) localmente usando Docker en mi máquina:

Ejecuto este command para ejecutar el contenedor 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 

que ejecuta todos los otros componentes Kubernetes. Pero algunos componentes (api server, controller manager …) inmediatelly se salen.

loggings del gestor de controlleres de contenedores (salidos)

 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. 

He intentado usar la --cloud-provider="" en el command above run, pero todavía no funciona.

Si agrega –cloud-provider a ese command, no resolverá el post de error "no se pudo iniciar el controller de service" que estaba viendo.

Técnicamente ese command está iniciando el kubelet – que también tiene la misma bandera – pero no es el componente que está quejándose.

En este ejemplo, proporciona una manera fácil de iniciar un clúster de k8s – algo a expensas de la configurabilidad. Los manifiestos reales que inician el controller-administrador (el componente que se está quejando) se encuentran en / etc / kubernetes / manifests en el contenedor de acoplador hyperkube – y no se anulan fácilmente.

Ahora todo lo dicho, el error que está viendo (Falló al iniciar el controller de service) no debería ser realmente fatal, y sólo seguiría pasando este punto (porque cloud-provider + controller de service no son estrictamente necesarios). Muy probable que algo más suceda aquí. Recomendaría ver si hay loggings adicionales más allá de ese punto, y / o revisar los loggings kubelet también.

Sí, no puedo ver una manera de pasar esa bandera. Tenga en count que debe pasar la bandera a kube-controller-manager aquí: https://github.com/kubernetes/kubernetes/blob/6c195a4923421f756bf13b2a3b2147c4b242aeed/cluster/images/hyperkube/static-pods/master.json#L16 . Pasarla a kubelet no tendrá ningún efecto.

He presentado https://github.com/kubernetes/kubernetes/issues/27085 para get este arreglado. No dude en suscribirse y añadir más información sobre este tema.