KlusterKit

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

KlusterKit

Hoy nos complace anunciar que Platform9 es Klusterkit de código abierto, un conjunto 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 muchas veces no están conectados con el mundo exterior. Ahí es donde entra en juego Klusterkit, que facilita el aprovisionamiento y la gestión de clústeres K8 en entornos físicamente aislados.

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

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

Juntas, estas tres herramientas realizan las siguientes tareas:

  • Aprovisione y administre fácilmente un clúster etcd de alta disponibilidad y un panel de Kubernetes en entornos locales físicamente aislados a través de la API del clúster.
  • Restauración del panel de control del clúster después de una falla usando la copia de seguridad etcd.
  • Empaquetar todos los artefactos necesarios para entregar Kubernetes en entornos físicamente aislados.

Características del Klusterkit

  • Soporte multimaestro (clúster HA K8).
  • Entrega y gestión de clústeres etcd seguros.
  • Trabajar en entornos físicamente aislados.
  • Admite actualizaciones y reversiones continuas.
  • Franela (vxlan) como CNI para el backend; Hay planes para apoyar a otros CNI.
  • Copia de seguridad y restauración de clústeres etcd después de la pérdida de quórum.
  • Protege el panel de control de quedarse sin memoria y tiempo de CPU.

Arquitectura de la solución Klusterkit

KlusterKit

Para lograr tolerancia a fallas y simplicidad, Klusterkit utiliza un único archivo cctl-state.yaml para almacenar los metadatos del clúster de Kubernetes. A través de la CLI cctl 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 del clúster de Kubernetes.

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

Cómo utilizar Klusterkit y sus componentes:

1 – Cualquiera de las tres herramientas se puede recopilar 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: Estos ejecutables luego se pueden empaquetar y copiar en las máquinas de destino donde debería ejecutarse el clúster de Kubernetes de alta disponibilidad. Coloque los archivos nodeadm y etcdadm en los directorios de versiones:

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

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

3 – Si necesita organizar un clúster de Kubernetes localmente, en un entorno físicamente aislado, las dependencias necesarias se pueden descargar fácilmente con anticipación en una computadora con acceso a Internet usando el comando de descarga nodeadm y etcdadm. Luego, los elementos descargados (es decir, kubelet y archivo de unidad kubelet para systemd, archivos ejecutables CNI, archivo kubeadm, todas las imágenes del contenedor, incluido Kubernetes, imagen keepalived y archivo systemd, imagen del contenedor etcd y archivos de configuración correspondientes) se pueden copiar fácilmente a hosts físicamente aislados junto con con cctl, nodeadm y etcdadm. (Ver detalles en wiki).

4 – Una vez que todo esté en su lugar, puedes 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. –help muestra una lista de opciones admitidas.

$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.

Fuente: habr.com

Añadir un comentario