
Preguntas frecuentes sobre Kubernetes
Un clúster de Kubernetes es un conjunto de máquinas de nodos que ejecutan aplicaciones en contenedores. Un clúster posee, al menos, un nodo de trabajo y un nodo maestro.
La principal ventaja de un cluster Kubernetes es la capacidad de programar y ejecutar contenedores en un grupo de máquinas, ya sean físicas o virtuales, on-premise o en la nube. Los contenedores de Kubernetes no están ligados a ninguna máquina individual ni a ninguna instancia.
El cluster se puede escalar horizontal y verticalmente.
- El escalado horizontal se basa en aumentar el número de pods de un mismo servicio de modo que se reparta la carga de trabajo entre un número mayor de pods.
kubectl scale --replicas = 5 deployment /
- El escalado vertical busca añadir más recursos al cluster, bien sea añadiendo más recursos a las máquinas o instancias ya existentes o añadiendo nuevos nodos. La política de escalado vertical dependerá de la plataforma en la que esté desplegado el cluster, on-premise o en la nube.
- Pod: conjunto de uno o más contenedores implementados en un solo nodo. Es el objeto más pequeño y simple de Kubernetes.
- Servicio: forma de exponer una aplicación que se ejecuta en un conjunto de pods como un servicio de red.
- Volumen: directorio que contiene datos, al que pueden acceder los contenedores de un pod. Un volumen de Kubernetes tiene la misma vida útil que el pod que lo contiene. Sin embargo, los datos se conservan cuando se reinicia alguno de ellos.
- Espacio de nombre (namespace): clúster virtual. Los espacios de nombre permiten que Kubernetes gestione varios clústeres (para distintos equipos o proyectos) dentro del mismo clúster físico.
El nodo master es el encargado de mantener el estado deseado del clúster y de controlar las aplicaciones que se ejecutan y las imágenes en contenedores que se utilizan. Para ello el nodo master ejecuta los siguientes procesos:
- etcd: Etcd es una base de datos de tipo (clave, valor) que se utiliza para mantener la configuración global del clúster.
- kube-apiserver: los nodos master exponen una API que es usada para los nodos de trabajo y los clientes del clúster para comunicarse.
- kube-scheduler: es el componente de Kubernetes encargado de decidir en qué nodo se ejecuta un determinado contenedor.
- kube-controller-manager: es el encargado de ejecutar los distintos controladores. Un «controlador» es el encargado de asegurar que en todo momento se cumple el estado deseado de la aplicación y del clúster (p. ej. que en todo momento haya 5 instancias de un contenedor determinado).
En caso de no tener un nodo master, el cluster no podría desempeñar las funciones previamente indicadas, por lo que las funciones de Kubernetes se verían afectadas en gran medida.
