Implantar plano de controle sem registro de nó mestre usando kubeadm

Implantar plano de controle sem registro de nó mestre usando kubeadm

Gostaria de configurar o cluster Kubernetes e ocultar os componentes do plano de controle para todos os clientes (algum tipo de cluster gerenciado). Kubeadmusa Kubelet e pods estáticos para executar esses componentes que levam ao registro de recursos de nós e pods no servidor API para que qualquer usuário ClusterRolepossa listar e gerenciar os nós mestres e pods.

Posso inicializar o plano de controle, parar o agente Kubelet e excluir os recursos do nó mestre, mas parece que dessa forma não posso usar kubeadmpara atualizar os componentes e o Kubelet para recuperar pods se ocorrer alguma falha.

Posso executar o plano de controle fora do cluster Kubernetes kubeadmou devo usar meus próprios instrumentos nesse caso?

Responder1

Posso executar o plano de controle fora do cluster Kubernetes usando kubeadm

Resposta curta: Não, não é possível.

devo usar meus próprios instrumentos nesse caso

Sim, essa será a solução para esta situação. Se você encontrar sua própria solução, sinta-se à vontade para escrevê-la como resposta.

Como solução alternativa, você pode tentar criar um plano de controle separado (como emKubernetes da maneira mais difícil) e entãokubeadm join. Porém, você também deve estar ciente de que esse tipo de configuração será complicado de realizar. Veja tambémesta página do blog.

Veja também tópicos semelhantes:

É possível executar o plano de controle do Kubernetes fora do Kubernetes, desde que os nós do trabalhador tenham acesso de rede ao plano de controle. Essa abordagem é usada na maioria das soluções gerenciadas do Kubernetes.

Veja também esta página sobreAutorregistro de nós.

EDIT: encontrei outro possívelGambiarra.

EDITAR2: Estetutorialdeve ajudar você também.

Responder2

Eventualmente, reescrevi e kubeadmadicionei a opção de implantar componentes do plano de controle como serviços unix e executá-los no cluster Kubernetes.

Se você estiver interessado, dê uma olhada emRPe adote-o para suas necessidades. Como usar:

# build the updated kubeadm
make WHAT=cmd/kubeadm KUBE_BUILD_PLATFORMS=linux/amd64

# install the control plane components
wget -q --show-progress --https-only --timestamping \
  "https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kube-apiserver" \
  "https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kube-controller-manager" \
  "https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kube-scheduler" \
  "https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kubectl"

chmod +x kube-apiserver kube-controller-manager kube-scheduler kubectl
sudo mv kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/local/bin/

wget -q --show-progress --https-only --timestamping \
  "https://github.com/etcd-io/etcd/releases/download/v3.4.15/etcd-v3.4.15-linux-amd64.tar.gz"

tar -xvf etcd-v3.4.15-linux-amd64.tar.gz
sudo mv etcd-v3.4.15-linux-amd64/etcd* /usr/local/bin/

# run kubeadm with enabled service hosting option
kubeadm init --service-hosting

Se você estiver usando a API Cluster, deverá escrever seu próprio controlador de plano de controle e CRDs para dar suporte à sua própria implantação.

informação relacionada