Klusterkit

KlusterKit: un kit de herramientas de código abierto para simplificar las implementaciones de Kubernetes y trabajar en entornos locales físicamente aislados.



Hoy, nos complace anunciar que Platform9 está abriendo el código fuente de Klusterkit, un kit de tres herramientas, bajo la licencia Apache v2.0 en GitHub.


Nuestros clientes implementan software en centros de datos privados, que a menudo no están conectados a Internet (por razones de seguridad u otras razones). Estas grandes empresas quieren aprovechar Kubernetes y modernizar sus aplicaciones y, al mismo tiempo, implementarlas en diferentes centros de datos, que a menudo no tienen conexión con el mundo exterior. Y aquí Klusterkit viene al rescate, lo que simplifica la entrega y la administración de clústeres K8 en entornos físicamente aislados.


Klusterkit incluye tres herramientas independientes que se pueden usar juntas o por separado para administrar el ciclo de vida del clúster de producción de Kubernetes:


  1. etcdadm , CLI para la gestión simplificada de clústeres, etc.
  2. nodeadm , una CLI de administración de nodos que complementa kubeadm e implementa las dependencias que necesita kubeadm.
  3. cctl , una herramienta de gestión del ciclo de vida del clúster que acepta la API de clúster de la comunidad de Kubernetes y utiliza nodeadm y etcdadm para suministrar y mantener fácilmente clústeres de Kubernetes de alta disponibilidad en entornos locales e incluso físicamente aislados.

Juntas, estas tres herramientas realizan las siguientes tareas:


  • Envíe y administre fácilmente el clúster etcd de alta disponibilidad y el panel de control de Kubernetes en entornos locales físicamente aislados a través de la API Cluster.
  • Restaure el panel de control del clúster después de una falla utilizando la copia de seguridad etcd.
  • Empaque todos los artefactos necesarios para entregar Kubernetes en entornos físicamente aislados.

Características de Klusterkit


  • Soporte de asistente múltiple (clúster HA K8s).
  • Suministro y gestión de clústeres seguros, etc.
  • Trabajar en entornos físicamente aislados.
  • Admite actualización secuencial y reversión.
  • Flannel (vxlan) como CNI para el backend; planea apoyar a otros CNI.
  • Copia de seguridad y restauración de clústeres etcd después de perder un quórum.
  • Protege el panel de control de quedarse sin memoria y tiempo de CPU.

Arquitectura de soluciones Klusterkit



Por tolerancia a errores y simplicidad, Klusterkit usa un solo archivo cctl-state.yaml para almacenar metadatos de clúster de Kubernetes. A través de cctl CLI, puede administrar el ciclo de vida de un clúster de Kubernetes en cualquier máquina que tenga este archivo de estado. Puede ser la computadora portátil de un operador o cualquier otra computadora que forme parte de un clúster de Kubernetes.


Cctl implementa y llama desde la interfaz ascendente cluster-api como una biblioteca de operaciones CRUD en clústeres. Utiliza ssh-provider , un proveedor de código abierto de cluster-API de plataforma abierta, que a su vez llama a etcdadm y nodeadm para realizar operaciones en el clúster.


Cómo usar Klusterkit y sus componentes:


1 - Cualquiera de las tres herramientas se puede ensamblar fácilmente con el comando go get:


go get -u github.com/platform9/cctl go get -u github.com/platform9/nodeadm go get -u github.com/kubernetes-sigs/etcdadm 

2 - Luego, estos archivos ejecutables pueden empaquetarse y copiarse en las máquinas de destino donde debe ejecutarse el clúster de Kubernetes altamente accesible. Coloque los archivos nodeadm y etcdadm en los directorios de versión:


 cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm// cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm// 

3 - Si es necesario, orquestar el clúster de Kubernetes localmente, en un entorno físicamente aislado, las dependencias necesarias se pueden descargar fácilmente de antemano en la computadora con acceso a Internet mediante el comando de descarga nodeadm y etcdadm. Luego, los elementos descargados (es decir, kubelet y el archivo de la unidad de kubelet para systemd, archivo ejecutable CNI, archivo kubeadm, todas las imágenes de contenedor, incluidos Kubernetes, imagen keepalived y archivo systemd, imagen de contenedor, etcd y los archivos de configuración correspondientes) se pueden copiar fácilmente a hosts físicamente aislados junto con cctl, nodeadm y etcdadm. (Ver la wiki para más detalles).


4 - Cuando todo está en su lugar, puede crear el primer clúster de Kubernetes con un par de comandos:


- Primero cree las credenciales para el clúster.


 $GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa 

- Luego crea un objeto de clúster. –Ayuda enumera las opciones compatibles.


 $GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24 

- Finalmente, cree la primera máquina en el clúster.


 $GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master 

Lea más documentación en GitHub .

Source: https://habr.com/ru/post/449214/


All Articles