Kubernetes

Surge a partir de la complejidad de manejar diversos servidores a la vez con docker ademas de la complejidad de escalar.
Kubernetes es una especie de orquestador que te ayudará a manejar diferentes grupos de contenedores para facilitar el manejo de servicios, principalmente en la nube.

Para poder utilizar kubernetes en nuestra computadora debemos tener instalado kubectl

Kubectl

Una vez que hayas instalado kubectl en tu computadora, ahora debes asegurarte de que lo hayas instalado correctamente, para ello utiliza el siguiente comando:
kubectl version --client=true
Nota: La bandera --client=true indica que queremos obtener la versión de nuestra computadora en lugar de un servidor externo.

Posteriormente debes habilitar kubernetes en nuestro docker desktop, para ello ve a la parte de configuración y en la sección de kubernetes selecciona enable kubernetes.

Para ver los contextos actuales a los que estan conectados kubernetes, ejecuta el siguiente comando: kubectl config get-contexts

Namespaces

Con namespaces puedes dividir tu cluster de kubernates. Para mostrar los namespaces ejecuta: kubectl get ns

Pod

Un pod es un set de contenedores, es decir, que puede tener uno o más contenedores. Regularmente, cada pod contiene un solo contenedor, pero en caso de tener más de un proceso, lo ideal es tener un pod con más de un contenedor.

Para mostrar tus pods en consola, ejecuta: kubectl -n <namespace> get pods

Manifiestos

Los manifiestos son archivos (yml) que te permiten escribir configuraciones de kubernetes para crear pods, daemonsets, deployments, entre otras.

Para poder ejecutar nuestros manifiestos, ejecutaremos el siguiente comando: kubectl apply -f <archivo.yml>

En caso de haber creado un pod con nuestro manifiesto, para acceder a ese pod ingresaremos: kubectl exec -it <nombre-pod> -- <comando>

Para ver los detalles de un pod, ejecuta el siguiente comando: kubectl describe <nombre-pod>

Deployment

Un deployment es un manifiesto que nos ayudará a crear diversos pods de una misma imagen (replicas).

Daemonset

Es una forma de hacer deploy de pods pero en diferentes nodos, no tiene replicas, debido a que cada pod se coloca en cada nodo. Es muy utilizado en servicios de monitoreos.

Statefulset

Es una forma de crear pods, pero con volumen, es decir, con un directorio o disco que estará asociado a ese pod. En caso de apagarse o eliminarse, los datos persistirán en el volumen.

Pod networking

Cada pod posee su propia IP, pero a su vez cada contenedor del pod comparte la IP del pod.

Servicios de Kubernetes

Hay 3 servicios en kubernetes:

  • Cluster IP: Ip fija que esta dentro del cluster, es como un load-balancer entre todos los pods.
  • Node port: Esto hará un puerto para cierto pod, y por ahí enviara el tráfico.
  • Load balancer: Redirecciona el tráfico de los pods