ServiceController não deve ser executado sem um provedor de nuvem

1

Estou tentando executar o Kubernetes (Hyperkube) localmente usando o Docker na minha máquina:

Eu executo este comando para executar o contêiner do 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 executa todos os outros componentes do Kubernetes. Mas alguns componentes (servidor da API, gerenciador de controladores ...) são imediatamente excluídos.

registros do contêiner do gerenciador do controlador (finalizado)

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.

Eu tentei usar a opção --cloud-provider="" no comando acima de executar, mas ainda não está funcionando.

    
por Héctor 25.04.2016 / 15:52

2 respostas

2

Adicionar --cloud-provider a esse comando não resolverá a mensagem de erro "falha ao iniciar o controlador de serviço" que você estava vendo.

Tecnicamente, esse comando está iniciando o kubelet - que também tem o mesmo sinalizador - mas não é o componente que está reclamando.

Neste exemplo, ele fornece uma maneira fácil de iniciar um cluster k8s - um pouco às custas da configurabilidade. Os manifestos reais que iniciam o gerenciador-controlador (o componente que está reclamando) estão localizados em / etc / kubernetes / manifests no contêiner do Docker do hyperkube - e não são facilmente substituídos.

Agora, tudo o que foi dito, o erro que você está vendo (Falha ao iniciar o controlador de serviço) não deve ser realmente fatal, e seria apenas continuar além desse ponto (porque o provedor de serviços cloud + não é estritamente necessário). Muito provavelmente algo mais acontecendo aqui. Recomendaria ver se há algum log adicional além desse ponto e / ou verificar os logs do kubelet também.

    
por 09.06.2016 / 02:06
1

Sim, não vejo como passar essa bandeira. Note que você precisa passar o sinalizador para kube-controller-manager aqui: link . Passá-lo para kubelet não terá efeito.

Eu arquivei o link para corrigir isso. Sinta-se à vontade para se inscrever e adicionar mais informações sobre esse assunto.

    
por 09.06.2016 / 00:07

Tags