Es una plataforma de código abierto que orquesta y automatiza la gestión de aplicaciones en contenedores.
En el siguiente archivo encontrarás un mapa mental sobre que es kubernetes y sus componentes clave.
A continuación tenemos algunos de los comandos que se pueden utilizar con minikube y en kubernetes
minikube start --driver=docker //Arranca minikube en un contenedor de docker
minikube profile list //muestra un listado de perfiles
minikube addons list //muestra el listado de plugins disponibles y activados a nivel cluster
minikube addons enable metrics-server //permite activar el addon de metrics-server
minikube addons enabel registry //permite que nuestro cluster puede escalarse en local
kubectl //es el punto de entrada de nuestro api server de nuestro cluster, permite interactuar con todos los recursos de kubernetes
kubectl get --help // Conocer a detalle que es lo que se puede consultar
kubectl get pods //List all pods in ps output format dentro del namespace
kubectl get pods -o wide //lista todos los pods con mas detalle dentro del namespace
kubectl get pods -o wide -A //lista todos los pods a lo largo de todos los namespaces
kubectl get namespaces //Muestra los namespaces creados, el namespace default
kubectl create ns k8sdemo //crea un namespace con el nombre que se defina
kubectl get ns //alias de namespaces, muestra un listado de los namespaces
kubectl delete ns k8sdemo // permite eliminar un namespace
kubectl get nodes //lista los nodos disponibles
kubectl describe node [nodeName] //muestra una descripción del nodo
kubectl apply -f [podfile] // crea un pod a parrtir de un archivo
kubectl set image deployment/hello-deployment hello-app=gcr.io/google-samples/hello-app:2.0 //actualizar imagen a un deployment
kubectl rollout status deployment/hello-deployment //muestra el estatus de una actualización
kubectl rollout undo deployment/hello-deployment //en caso de que una actualización falle hace un cotrol z
kubectl port-fordward deploy/hello-deployment 8080:8080 //permite redirigir el trafico de la pc al kubernets, en este caso no esta haciendo un balanceo de cargas
Kubernetes tiene dos enfoques fundamentales para manejar recursos dentro del clúster: el declarativo y el imperativo. Ambos son igual de importantes y se utilizaaqn en contextos productivos.

Este metodo se basa en dar instrucciones especificas y secuenciales a Kubernetes para realizar acciones concretas.
Nosotros le tenemos que indicar a Kubernetes de forma secuencial, estricta y consida qué acción ejecutar, todo esto desde la terminal de comandos usando kubectl, por ejemplo:
kubectl delete ns k8sdemo
Tal como en todos los comandos de consola, si algo falla o el comando no se ejecuta correctamente, perdemos el contexto y no podemos recuperar el estado deseado.
En entornos productivos, el enfoque imperativo es útil para tareas como troubleshooting y debuging. Si una aplicación no funciona como se espera, podemos usar comandos imperativos para investigar y solucionar problemas rápidamente.
Este método se centra en describir el estado deseado del sistema, dejando que Kubernetes se encargue de los detalles o parámetros adicionales.
En este enfoque se utilizan archivos YAML para definir el estado deseado de los recursos. En lugar de decirle paso a paso que hacer, simplemente describimos cómo queremos que se vea el sistema y Kubernetes se encarga de hacerlo realidad.
YAML es un formato legible para humanos que se utiliza en entornos de desarrollo. Nos permite estructurar configuraciones de manera clara y organizada. Además este formato se usa en herramientas como Jenkins o Github Actions
En este archivo tenemos que especificar detalles como la versión del API, el tipo de objeto, el nombre del pod y las especificaciones del cotenedor.
apiVersion: v1 //define la versión del api
kind: Pod //indica el tipo de objeto
metadata: //seccion de metadata
name: mypod //nombre del objeto debe ser unico en el cluster
spec:
containers: //indica el nombre del contenedor y la imagen a usar
- name:mycontainer
image: nginx

apiVersion: v1
kind: ConfigMap
metadata:
name: auth-config
data:
url: "<https://auth.service.local>"