Instalar k0sctl en ubuntu


Instalar k0sctl en ubuntu usando un entorno virtual con vagrant y virtual box, se crearán dos nodos controller y worker, usaremos kubectl

oscar Escrito por oscar 29 September 2022 524 0

Ejercicio a realizar

Se pretende crear un ambiente de pruebas en donde realizaremos la creacion de varias maquinas virtuales y en esta crear un entrono para k0s y poder realizar varios ejercicios.

Infraestructura de pruebas

Descripción de infraestructura

La infraestructura con la que vamos a trabajaron tres maquinas virtuales las cuales tienes la siguiente caracteristica:

Arquitectura de las maquinas

PC (host) tiene instalado el sistema operativo Windows 

  1. k0s admin: sera la maquina encargada de administrar y controlar el k0s.
  2. k0s controller: Controlador del cluster
  3. k0s worker: maquina de trabajo

Crear maquinas virtuales

Para este ejercicio, y como se menciona en la desaparicion de la arquitectura, se creara tres maquina virtuales con virtual box y vagrant, la principal caracteristica de estas maquinas es que usaran Ubuntu server 2204.

Instalar ubuntu 2004 en virtualbox

Instalar y configurar vagrant con virtualbox

El archivo que vamos a utilizar en estas maquinas es el siguiente:

Vagrant.configure("2") do |config|
  config.vm.define "k0s-admin" do |node|
    node.vm.hostname = "admin"
    node.vm.box = "ubuntu/focal64"
    node.vm.network "private_network", ip: "192.168.33.10"
    node.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
    end
  end
  
  config.vm.define "k0s-controller" do |node|
    node.vm.hostname = "controller"
    node.vm.box = "ubuntu/focal64"
    node.vm.network "private_network", ip: "192.168.33.20"
    node.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
    end
  end

  config.vm.define "k0s-worker" do |node|
    node.vm.hostname = "worker"
    node.vm.box = "ubuntu/focal64"
    node.vm.network "private_network", ip: "192.168.33.21"
    node.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
    end
  end
end

Configurar llaves SSH

Al trabajar con vagrant desde Windows, creará automáticamente las keys privadas y publicas, las cuales copiarlas y pegarlas en un lugar que podamos acceder desde la maquina k0s admin quien la usara para poder acceder a las maquinas k0s master y worker.

La ubicación en windows de estas keys esta en el directorio "k0s-vagrant\.vagrant\machines\k0s-master\virtualbox", al usar vagrant estas llaves se copian automáticamente dentro de los directorios de cada una de las maqunas virtuales.

Vamos a crear las carpetas para copuar las llaves en un lugar donde podamos acceder de forma rapida:

mkdir .ssh/ssh-controller
mkdir .ssh/ssh-worker

Luego copiamos las llaves a las carpetas creadas anteriormente:

cp /vagrant/.vagrant/machines/k0s-worker/virtualbox/private_key .ssh/ssh-worker/
cp /vagrant/.vagrant/machines/k0s-controller/virtualbox/private_key .ssh/ssh-controller/

Damos permisos de lectura u escritura el propietario del archivo, en este caso vagrant, y se los quitamos a los grupos y otros usuarios.

chmod 600 .ssh/ssh-controller/private_key
chmod 600 .ssh/ssh-worker/private_key

Instalar k0sCtl

Descargar el binario manualmente

Realizamos la instalación manualmente GitHub - k0sproject/k0sctl: A bootstrapping and management tool for k0s clusters., vamos a realizar la descarga del archivo k0sctl en el repositorio Release v0.15.4 · k0sproject/k0sctl · GitHub, primero debemos identificar que sistema operativo tenemos y la arquitectura del procesador

uname -m

El resultado retornara la arquitectura del procesador, esto lo vamos a tener en cuenta para descargar el archivo k0s correcto.

  • Si es "amd64" o "x86_64" el archivo debe ser: amd64
  • Si es "arm64" o "aarch64" el archivo debe ser: arm64
  • Si es "armv7l" o "armv8l" o "arm" el archivo debe ser: arm

Con el resultado anterior debemos descarar el siguiente archivo

descargar k0sctl linux x64

https://github.com/k0sproject/k0sctl/releases/download/v0.15.4/k0sctl-linux-x64

Abrimos la consola y descargamos el archivo, ademas de ejecutar las siguientes instrucciones

wget https://github.com/k0sproject/k0sctl/releases/download/v0.15.4/k0sctl-linux-x64

Luego vamos a mover y renombrar el binario k0sctl-linux-x64 a /usr/local/bin/ 

sudo mv k0sctl-linux-x64 /usr/local/bin/k0sctl

Damos permisos de lectura y escritura a los usuarios y grupos sobre el archivo binario

sudo chmod 777 /usr/local/bin/k0sctl

Nota: Podemos ejecutar todas las instrucciones al tiempo como se observa en la siguiente imagen:

Leyenda

Una ves realizado los los pasos anterios probamos si k0sctl funciona correctamente:

vagrant@admin:~$ k0sctl version
version: v0.15.4
commit: dd78048

Instalar kubectl

Instalar herramientas | Kubernetes, kubectl es una herramienta de línea de comandos para interactuar con clústeres de Kubernetes, una plataforma que automatiza la administración de aplicaciones en contenedores. Permite desplegar, escalar y actualizar aplicaciones, así como acceder a registros y recursos del clúster. Es esencial para desarrolladores y administradores que trabajan con Kubernetes.

Procedemos a descargar el binario de kubectl en su versión ma estable que se contiene de https://dl.k8s.io/release/stable.txt.

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

Ahora, al binario descargado le damos permisos de ejecución:

chmod +x kubectl

Procedemos a mover el archivo a la ruta "/usr/local/bin/", almacenar archivos ejecutables que no son parte del sistema operativo principal.

sudo mv kubectl /usr/local/bin/

Por ultimo, verificamos la instalación de kubectl.

kubectl version --client

 Respuesta

WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.4", GitCommit:"fa3d7990104d7c1f16943a67f11b154b71f6a132", GitTreeState:"clean", BuildDate:"2023-07-19T12:20:54Z", GoVersion:"go1.20.6", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1

Crear cluster con k0sctl

Procedemos a crear y configurar los clusters, para ellos usaremos el comando k0sctl:

k0sctl

El archivo de configuración se obtiene con la siguiente comando:

k0sctl init

El resultado lo guardamos en el archivo k0sConfig

k0sctl init > k0sConfig.yaml

Realizamos la modificacion del archivo k0sConfig.yaml de la siguiente forma:

nano k0sConfig.yaml

Donde vamos a dejar la siguiente configuración:

apiVersion: k0sctl.k0sproject.io/v1beta1
kind: Cluster
metadata:
  name: k0s-cluster
spec:
  hosts:
  - ssh:
      address: 192.168.33.20
      user: vagrant
      port: 22
      keyPath: /home/vagrant/.ssh/ssh-controller/private_key
    role: controller+worker
    privateInterface: eth1
  - ssh:
      address: 192.168.33.21
      user: vagrant
      port: 22
      keyPath: /home/vagrant/.ssh/ssh-worker/private_key
    role: worker
    privateInterface: eth1
  k0s:
    version: 1.27.4+k0s.0
    dynamicConfig: false

Luego ejecutamos los cambios 

k0sctl apply --config k0sConfig.yaml
Creación de los cluster

kubeconfig

Una vez creado los clusters con k0sctl e instalado kubectl, procedemos a crear el archivo kubeconfig para poder usar kubernetes con los clusters, primero vamos a generar este archivo con el siguiente comando.

k0sctl kubeconfig --config k0sConfig.yaml > kubeconfig.config

Una ves generado el archivo, procedemos a realizar una prueba para obtener información de los clustres de la siguiente forma.

kubectl get node --kubeconfig kubeconfig.config

Respuesta

NAME     STATUS   ROLES    AGE   VERSION
worker   Ready    <none>   13m   v1.27.4+k0s

Ahora, para no tener que informar siempre el archivo kubeconfig.config, procedemos a guardarlo en una variable KUBECONFIG

export KUBECONFIG=/home/vagrant/kubeconfig.config

Con esto solo ejecutamos lo siguiente:

kubectl get node

 


Comentario

Debe aceptar antes de enviar