====== Kubernetes ======
===== K0s_Distribucion_para_instalar_Kubernetes =====
==== CONCEPTOS INTRODUCTORIOS ====
* CLUSTER -> Es un conjunto de máquina o de nodos.
* NODOS -> Cada una de las máquinas, por ejemplo un servidor Ubuntu.
* POD -> Dentro de cada nodo o máquina, puede haber pods que a su vez guarden varios contenedores a la vez.
Lo primero será importar el certificado SSH en las máquinas donde queramos
administrarlas con Kubernetes, por tanto lo haremos:
{{pasted_image_20230121032110.png|}}
Ahora debemos activar la opción de poder conectarnos por ssh con el usuario
root; y eso lo podemos configurar dentro del fichero /etc/ssh/sshd_config y
activamos el PermitRootLogin:
{{pasted_image_20230121225400.png|}}
EL siguiente paso será establecer una contraseña para el usuario root dentro de
la máquina que vamos a administrar; y para ello utilizaremos el comando passwd
root:
{{pasted_image_20230121231736.png|}}
Y ahora copiamos este certificado a los servidores:
{{pasted_image_20230121225526.png|}}
Y ya nos podremos conectar como root sin poner credenciales:
{{pasted_image_20230121225615.png|}}
Ahora instalaremos k0s en la máquina anfitrión; y para ello ejecutaremos estos
comandos:
wget https://github.com/k0sproject/k0sctl/releases/download/v0.15.0/k0sctl-linux-x64 && mv k0sctl-linux-x64 k0sctl&& chmod 777 k0sctl
Una vez ejecutado este comando, ya tendremois k0s:
{{pasted_image_20230121034137.png|}}
Ahora debemos de crear un fichero de configuración en formato yaml para poder
configurar el k0s dentro de los equipos que queramos, que en mi caso sólo
administraré uno pero podría hacerlo con muchos más:
{{pasted_image_20230121232226.png|}}
Y ahora debemos ejecutar este fichero yaml con el siguiente comando:
{{pasted_image_20230121232316.png|}}
Por tanto ahora se nos lanzará el cluster con la máquina que hemos elegido
administrar:
{{pasted_image_20230121232344.png|}}
Ahora ya tenemos nuestro kluster desplegado, y si queremos ver los nodos primero
tendremos que exportar un fichero .yaml y depsués visualizarlo, por tanto
utilizaremos estos dos comandos:
{{pasted_image_20230121233159.png|}}
==== KUBECTL - Para administrar los clusters de Kubernetes ====
Ahora para poder administrar nuestros clusters, vamos a instalar kubectl, lo
cual lo haremos con los siguientes comandos:
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
En este punto también podemos utilizar el comando
''kubectl cluster-info --kubeconfig kubeconfig.yaml'' para conocer información del
cluster al que me estoy conectando:
{{pasted_image_20230121233550.png|}}
Y también dentro de los klusters que tenemos desplegados, podemos obtener más
información sobre uno de ellos, yo por ejemplo en mi caso sólo tengo desplegado
el cluster server, por lo que obtendré información de este mismo:
{{pasted_image_20230121233746.png|}}
Ahora si queremos ver los recursos que tiene uno de nuestros nodos, utilizaremos este comando:
{{pasted_image_20230121234109.png|}}
===== PODS en Kubernetes =====
Un pod es la unidad donde vamos a controlar los contenedores. En los pods puedo
meter varios contenedores a la vez.
==== CREAR UN POD ====
Vamos a crear un pod que contendrá un contenedor de Ubuntu, lo cual se hace a
partir de un fichero yml que por ejemplo lo llamaremos app1.yml, pero debemos
hacer que esté en ejecución, por lo que diremos que en su interior haya un bucle
while:
{{pasted_image_20230123212031.png|}}
Y lo creamos con este otro comando:
{{pasted_image_20230121235259.png|}}
Y para ver los pods creados lo haremos de esta forma:
{{pasted_image_20230123210459.png|}}
En caso de que veamos que tenemos el pod en Pending, por tanto si nos sale este
problema debemos ejecutar este comando para convertir un pod de pending a
running:
{{pasted_image_20230122052015.png|}}
Y ya lo tenemos corriendo:
{{pasted_image_20230122052040.png|}}
==== CONSULTAR DETALLES DE UN POD ====
Para consultar los detalles de un pod, utilizaremos el comando describe de la
siguiente manera:
{{pasted_image_20230122052939.png|}}
También podemos incluso conocer su dirección IP:
{{pasted_image_20230123210704.png|}}
==== CONOCER RECURSOS QUE CONSUME UN POD ====
{{pasted_image_20230123210811.png|}}
==== CONOCER LOGS DE UN POD ====
Para ver los logs de un pod de kubernetes, ejecuto este comando:
{{pasted_image_20230123212109.png|}}
==== EJECUTAR COMANDOS EN UN POD ====
Para ello lo hacemos de una forma similar a docker, pero aquí primero
seleccionamos el pod de ubuntu y después el contenedor de ubuntu-contenedor que
esta dentro del pod:
{{pasted_image_20230123212225.png|}}
Ahora por ejemplo voy a crear un fichero:
{{pasted_image_20230123213119.png|}}
Y ahora ejecutamos el comando para abrirnos un contenedor y vemos que tenemos el fichero creado:
{{pasted_image_20230123213151.png|}}
==== COPIAR FICHEROS EN KUBERNETES ====
Vamos a copiar un fichero de la máquina anfitrión al contenedor; y para ello lo
haríamos de esta forma:
{{pasted_image_20230123215027.png|}}
Y ahora si accedemos dentro del contenedor, nos encontramos con que se copió
correctamente al directorio que le habíamos indicado, que era el /home:
{{pasted_image_20230123215248.png|}}