Implementar plano de control sin registro de nodo maestro usando kubeadm

Implementar plano de control sin registro de nodo maestro usando kubeadm

Me gustaría configurar el clúster de Kubernetes y ocultar los componentes del plano de control para todos los clientes (una especie de clúster administrado). Kubeadmutiliza Kubelet y pods estáticos para ejecutar estos componentes, lo que conduce al registro de recursos de nodos y pods en el servidor API para que cualquier usuario ClusterRolepueda enumerar y administrar los nodos y pods maestros.

Puedo iniciar el plano de control, detener el agente de Kubelet y eliminar los recursos del nodo maestro, pero parece que de esta manera no puedo usarlo kubeadmpara actualizar los componentes y Kubelet para recuperar los pods si ocurre algún fallo.

¿Puedo ejecutar el plano de control desde el clúster de Kubernetes usando kubeadmo debería usar mis propios instrumentos en ese caso?

Respuesta1

¿Puedo ejecutar el plano de control fuera del clúster de Kubernetes usando kubeadm?

Respuesta corta: No, no es posible.

¿Debo usar mis propios instrumentos en ese caso?

Sí, esa será la solución a esta situación. Si encuentra su propia solución, no dude en escribirla como respuesta.

Como solución alternativa, puede intentar crear un plano de control separado (como enKubernetes por las malas) y luegokubeadm join. Sin embargo, también debes tener en cuenta que este tipo de configuración será complicada de realizar. Mira también enesta página de blog.

Vea también temas similares:

Puede ejecutar el plano de control de Kubernetes fuera de Kubernetes siempre que los nodos trabajadores tengan acceso de red al plano de control. Este enfoque se utiliza en la mayoría de las soluciones administradas de Kubernetes.

Mira también esta página sobreAutorregistro de Nodos.

EDITAR: He encontrado otro posible.solución alterna.

EDITAR2: Estotutorialdebería ayudarte también.

Respuesta2

Finalmente, reescribí la kubeadmopción agregada para implementar componentes del plano de control como servicios Unix y ejecutarlos desde el clúster de Kubernetes.

Si estás interesado, echa un vistazo arelaciones públicasy adoptarlo según sus necesidades. Cómo utilizar:

# 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

Si está utilizando la API de clúster, debe escribir su propio controlador de plano de control y CRD para admitir su propia implementación.

información relacionada