¿Qué es una implementación de Kubernetes?
Las implementaciones de Kubernetes se utilizan para indicar a Kubernetes cómo crear o modificar instancias de los pods que alojan aplicaciones contenedorizadas. Estas implementaciones pueden ayudar a ampliar con eficiencia la cantidad de pods de réplica, permitir la distribución de código actualizado de forma controlada o hacer posible la restauración a una versión anterior de la implementación, si fuera necesario. Las implementaciones de Kubernetes pueden completarse mediante kubectl, una herramienta de línea de comandos que puede instalarse en distintas plataformas, incluidas Linux, macOS y Windows.

Estado de Kubernetes

«Kubernetes Up and Running»
¿Qué ventajas tiene utilizar una implementación de Kubernetes?
Kubernetes ahorra tiempo y mitiga errores al automatizar el trabajo y las funciones manuales y repetitivas que forman parte de los procesos de implementación, aplicación y actualización de aplicaciones en el entorno de producción. Dado que la controladora de la implementación de Kubernetes supervisa de forma ininterrumpida el estado de los pods y nódulos, puede aplicar cambios en tiempo real (por ejemplo, sustituir un pod que haya fallado o evitar los nodos desactivados) para garantizar la continuidad de las aplicaciones esenciales.
Las implementaciones automatizan la puesta en marcha de instancias de pods y garantizan que se ejecuten según lo definido en todos los nodos del clúster de Kubernetes. El mayor nivel de automatización significa que las implementaciones son más rápidas y sufren menos errores.
¿Qué estrategias hay para implementar Kubernetes?
Existen varias estrategias para implementar Kubernetes que abordan la gran variedad de necesidades distintas de desarrollo e implementación de las aplicaciones. Tras definir el estado deseado de la aplicación, la controladora de la implementación se pone en marcha. Puede aplicar cambios a un ritmo controlado para optimizar la implementación.
¿Qué es la recreación de implementaciones de Kubernetes?
La estrategia de recreación apaga los pods que se están ejecutando en un momento dado y los «recrea» con la versión nueva. Este enfoque suele utilizarse en entornos de desarrollo, en la que no es necesario preocuparse por la actividad de los usuarios.
Puesto que la implementación recreada vuelve a cargar por completo los pods y el estado de la aplicación, es normal que haya interrupciones, causadas al apagar la implementación antigua y poner en marcha instancias de implementación nuevas.
¿Qué es la implementación de actualización escalada de Kubernetes?
La implementación de actualización escalada efectúa una migración, por etapas y en orden, de una versión de las aplicaciones a otra más reciente. Se implementa una instancia nueva de ReplicaSet con la nueva versión; a continuación, se apagan las réplicas de la versión antigua sistemáticamente, a medida que se implementa la versión nueva. Al final del proceso, todos los pods con la versión antigua se sustituyen por pods con la versión nueva.
La implementación de actualización escalada es ventajosa porque ofrece una transición organizada de una versión a otra. No obstante, puede llevar tiempo completarla.
¿Qué es una implementación azul-verde de Kubernetes?
La estrategia azul-verde permite pasar rápidamente de la versión antigua a la nueva en cuanto esta segunda se ha probado en un entorno de producción. En estos casos, la versión «verde» se implementa en paralelo con la versión «azul» existente. Cuando existe la confianza necesaria en que la versión «verde» funciona según lo diseñado, se cambia la etiqueta de la versión en el campo «selector» del objeto del servicio de Kubernetes que lleva a cabo el balanceo de carga. Esta acción conmuta el tráfico inmediatamente a la versión nueva.
La opción de implementaciones azul-verde de Kubernetes ofrece una implementación rápida que evita los problemas causados por la existencia de versiones diferentes. No obstante, esta estrategia duplica el uso de recursos, ya que se ejecutan ambas versiones hasta que se completa la transición.
¿Qué es una implementación de Kubernetes de prueba?
Durante una implementación de prueba, se conmuta a un pequeño grupo de usuarios a la nueva versión de la aplicación, que se ejecuta en un pequeño subgrupo de pods. El objetivo de este enfoque es probar la funcionalidad en un entorno de producción. Una vez se comprueba que no hay errores en las pruebas, se amplían las réplicas de la versión nueva y la antigua se va sustituyendo de forma ordenada.
Las implementaciones de prueba son idóneas si quiere probar una funcionalidad nueva en un pequeño grupo de usuarios. Dada la facilidad de restaurar las implementaciones de prueba a versiones anteriores, esta estrategia la ayuda a evaluar cómo repercutirá el código nuevo en las operaciones generales del sistema sin correr grandes riesgos.
¿Cuáles son los casos de uso de las implementaciones de Kubernetes?
Las implementaciones son la forma más fácil de gestionar y ampliar la forma de ejecutar aplicaciones en un clúster de Kubernetes; además, la API abierta de Kubernetes simplifica su incorporación a los flujos de integración e implementación continuas (CI/CD).
Los siguientes con casos de uso habituales de las implementaciones:
- Ejecutar servidores web sin estado, como el popular servidor de código abierto Nginx. La implementación puede solicitar que se creen instancias de un número concreto de réplicas de pods, y Kubernetes mantendrá esa cantidad de pods durante la implementación.
- Las aplicaciones que requieren almacenamiento persistente (como instancias de bases de datos) pueden utilizar el tipo de implementación «SatefulSet» y montar un volumen persistente para garantizar la integridad y longevidad de los datos.
- Las implementaciones pueden ampliar automáticamente la cantidad de réplicas en el clúster a medida que aumenta la carga de trabajo. Por ejemplo, pueden balancear automáticamente las solicitudes entrantes entre réplicas, crear réplicas nuevas según aumenta la demanda y eliminarlas una vez disminuye.
¿Cómo se crea una implementación de Kubernetes?
Tal como ocurre con la mayoría de funciones de Kubernetes, las implementaciones se describen en archivos YAML (o JSON) y se crean mediante la función «apply» de kubectl.
Por ejemplo, el YAML para una implementación de Nginx llamada «web-deployment» con cuatro réplicas tendría este aspecto:
apiVersion: apps/v1;
kind: Deployment
metadata:
name: web-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 4
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.17.0
ports:- containerPort: 80
»
En este ejemplo, los metadatos muestran que «web-deployment» se creó con cuatro pods replicados («replicas: 4»), y «selector» especifica que la implementación detectará los pods utilizando la etiqueta («app: nginx»). El contenedor («nginx») ejecuta la versión 1.17.0 de la imagen de contenedor, y la implementación abre el puerto 80 para que lo utilicen los pods.
También puede definir las variables del entorno desde los contenedores utilizando el campo «env» o «envForm» en el archivo de configuración. Una vez definida la implementación, se crea a partir del archivo YAML mediante «kubectl apply -f https://[location/web-deployment.yaml]».
¿Qué diferencia hay entre JSON y YAML en Kubernetes?
Tanto YAML Ain’t Markup Language (YAML) como JavaScript Object Notation (JSON) pueden utilizarse para definir recursos de Kubernetes. Muchos usuarios prefieren YAML por la facilidad de lectura que ofrece. No obstante, puesto que YAML es un supraconjunto de JSON, todo archivo JSON válido también es un archivo YAML válido.
¿Cómo se actualizan las implementaciones de Kubernetes?
Es posible actualizar una implementación de Kubernetes cambiando las especificaciones de la plantilla de los pods en la implementación. Este cambio provoca automáticamente que empiece la actualización.
Cambiar la plantilla de los pods evita que los pods en ejecución acepten solicitudes, de modo que pueden reducirse hasta que todos los pods puedan desactivarse. Una vez desactivados, la plantilla de los pods actualizada se utiliza para crear pods nuevos.
¿Cómo se restaura una implementación de Kubernetes a una versión anterior?
Si una implementación se considera inestable o se produce un error en esta, es posible restaurar a una versión anterior mediante kubectl. Para restaurar la versión anterior, utilice el comando:
«Kubectl rollout undo [nombre de la implementación]», si añade el comando «–to-revision=» puede especificar la versión a la que restaurará la implementación.
¿Cómo se amplía una implementación de Kubernetes?
Las implementaciones ayudan a ampliar la cantidad de réplicas a medida que aumenta la demanda de una aplicación concreta. Para llevar a cabo esta tarea, utilice el comando «scale» de kubectl. Por ejemplo, si desea ampliar una implementación a 20 réplicas, escriba lo siguiente en la línea de comandos:
«Kubectl scale [nombre de la implementación] –replicas 20»
Palabras clave:
De 2 a 5 veces:
- Implementación de Kubernetes (ya hay 11)
Añadir más:
- Kubetcl (1 o 2 más)
- Clúster de Kubernetes (1 o 2 más)
- Metadatos (1 o 2 más)
- Selector (ya hay 3)
- Línea de comandos (1 más)
- Imagen del contenedor (1 más)
- Variables de entorno (1 más)
- Linux (1 más)
Productos y soluciones relacionados
Laboratorios: Modernización de aplicaciones
Migre sus aplicaciones a la nube en cuestión de semanas.
Tanzu for Kubernetes Operations
Establezca la base para una infraestructura de contenedores multinube moderna.
Tanzu Application Platform
Obtenga una experiencia de desarrollo multinube superior en Kubernetes.