Pasar al contenido principal
Mario Galán

Navegación principal

  • Inicio
  • Contact
  • ES
  • EN
Menú de cuenta de usuario
  • Iniciar sesión

Creando un cluster Kubernetes con k0s y Ceph - 3 - k0sctl

En este tercer capítulo de la serie vamos a ver la configuración y despliegue inicial del cluster.

Aunque es técnicamente posible hacer una instalación manual en cada nodo, los desarrolladores de k0s nos proporcionan k0sctl que es una herramienta para crear, configurar y manejar clusters de forma muy sencilla y unificada.

Este documento está fuertemente basado en la documentación oficial a la que añadiré algunas anotaciones.

En el momento de escribir este post la versión de k0s es la v1.33.3+k0s.0. No se esperan grandes cambios en el uso de k0sctl o k0s así que estas instrucciones deberían estar vigentes por bastante tiempo.

Instalación local de k0sctl

k0sctl es un binario que debemos instalar en nuestro sistema. Dependiendo de nuestro sistema operativo las instrucciones sobre cómo hacerlo variarán notablemente. Podemos ampliar más información en la sección de instalación en Github.

En mi caso particular la máquina desde desde donde se va a controlar el cluster es una Ubuntu 22.04 así que simplemente descargaré la última versión estable disponible en releases y lo colocaré en un directorio en el $PATH del usuario con el permiso de ejecución activado.

En mi arquitectura el nombre del binario descargado es k0sctl-linux-amd64 así que lo renombraré simplemente a k0sctl para mayor comodidad.

Finalmente comprobaremos que todo funciona correctamente con el parámetro version.

Configuración del cluster

k0sctl utiliza un paradigma declarativo, es decir, nosotros definimos en un fichero de configuración el estado al que queremos llegar y es la herramienta la que realiza los ajustes necesarios para lograrlo.

Al ser este un cluster de producción es más que recomendable que la configuración esté dentro de un repositorio git para tener trazabilidad de los cambios.

La configuración de k0sctl se guarda en un fichero yaml que por defecto se llamará k0sctl.yaml. Si el fichero tiene otro nombre diferente al de por defecto tendremos que explicitarlo en todas las llamadas así que lo dejamos por defecto para simplificar.

Podremos generar uno de ejemplo con el siguiente comando:

k0sctl init > k0sctl.yaml

El fichero generado tendremos que editarlo para adaptarlo a nuestra configuración particular. En general tiene bastantes más opciones listadas de las que son verdaderamente necesarias y lo hace un poco confuso.

La configuración del cluster que estamos desplegando es la siguiente:

apiVersion: k0sctl.k0sproject.io/v1beta1
kind: Cluster
metadata:
  name: k0s-cluster
spec: 
  hosts:
  - role: controller
    ssh:
      address: 10.240.217.17
  - role: controller
    ssh:
      address: 10.240.217.20
  - role: controller
    ssh:
      address: 10.240.217.51
  - role: worker
    ssh:
      address: 10.240.217.60
  - role: worker    
    ssh:
      address: 10.240.217.85
  - role: worker    
    ssh:
      address: 10.240.217.97
  k0s:
    version: v1.33.3+k0s.0
    config:
      apiVersion: k0s.k0sproject.io/v1beta1
      kind: Cluster
      metadata:
        name: k0s
      # spec:
      #   api:
      #     externalAddress: x.x.x.x
      #     sans:
      #     - x.x.x.x

Hay que hacer una aclaración con las directivas que están comentadas al final del fichero. Estas opciones configurar la alta disponibilidad en el control plane.

Están comentadas porque para activar HA en nuestro cluster necesitamos un balanceador externo que no está disponible. Más adelante cuando lo esté sólo tendremos que descomentarlas y hacer un k0sctl apply para que se active la nueva configuración.

  k0s:
    config:
      spec:
        api:
          externalAddress: <load balancer public ip address>
          sans:
          - <load balancer public ip address>

Despliegue del cluster

Para hacer una primera comprobación haremos:

$ k0sctl apply --dry-run

Si la conexión a los nodos es correcta y no se produce ningún error de otro tipo podremos crear finalmente el cluster eliminando la opción --dry-run.

$ k0sctl apply

k0sctl comenzará la instalación que tardará unos minutos. Entre otros muchos mensajes veremos cómo se descarga el software en todas las máquinas.

Si se produjese algún error por timeout podremos lanzar nuevamente el comando hasta que finalmente se despliegue y configure el cluster.

Cuando termine el proceso veremos un mensaje similar a este:

Conexión al cluster con kubectl

Para conectarnos al cluster necesitaremos el cliente estandar de Kubernetes que es kubectl.

Si no lo tenemos instalado en la máquina de control lo haremos con:

$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

Y colocaremos el binario con el permiso de ejecución en algún directorio del $PATH.

Para añadir la configuración del cluster a nuestra configuración haremos:

$ k0sctl kubeconfig > ~/.kube/config

Es posible que tengamos que crear el directorio ~/.kube si no existiese.

Mostraremos información del cluster con kubectl cluster-info.

Y finalmente podremos listar los nodos con kubectl get nodes.

Y finalmente tenemos una primera versión del cluster desplegada. En próximos capítulos veremos todas las configuraciones que son necesarias para que nos sea de verdadera utilidad.

Etiquetas

  • kubernetes
  • k0s
  • Proxmox

Comentarios

Acerca de formatos de texto

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
Canal RSS
Funciona con Drupal