Estrategia de implementación de Kubernetes
Encuentre la estrategia de lanzamiento óptima de Kubernetes para su aplicación.
Conozca las opciones de implementación de Kubernetes
Si quiere reducir el tiempo de comercialización, crear implementaciones resistentes sin tiempo de inactividad, lanzar aplicaciones y características más rápido o con más frecuencia, u operar con más flexibilidad, la elección de la estrategia de implementación de Kubernetes correcta es clave para entregar una aplicación y una infraestructura resistentes. Cada estrategia de implementación de Kubernetes tiene sus ventajas según sus objetivos y necesidades.
Cómo funcionan las implementaciones de Kubernetes
Antes de implementar una estrategia de implementación de Kubernetes, deberá comprender los componentes de dicha implementación y cómo funcionan juntas.
Contenido de una implementación de Kubernetes
Archivo YAML
Estado deseado del clúster de Kubernetes (la configuración de los pods) que describe y que sirve de base para una implementación de Kubernetes.
Pods
Contenedores, recursos compartidos y entorno que su aplicación o su flujo de trabajo deben ejecutar.
ReplicaSet
Los grupos de pods configurados de forma idéntica se denominan ReplicaSets. Garantizan que el tipo y el número de pods que se describen en el archivo YAML para una implementación de Kubernetes se ejecuten sin interrupciones. Si se producen errores en un pod, se crea uno nuevo.
Kube-controller-manager
Cambia el estado actual del clúster para que coincida con el estado deseado que se describe en el archivo YAML, y crea así nuevos pods y ReplicaSets, además actualizar o quitar los existentes.
Kube-scheduler
Determina cómo se implementan los pods y ReplicaSets en los nodos de trabajo, además de distribuir el tráfico a dichos nodos.
Lanzamiento
Proceso de reconfigurar el clúster de su estado actual al estado deseado (en la mayoría de los casos se logra sin tiempo de inactividad).
Funcionamiento de los lanzamientos de Kubernetes
- Cree un archivo YAML que describa la configuración de estado deseada del clúster.
- Aplique el archivo YAML al clúster a través de kubectl, la interfaz de la línea de comandos de Kubernetes.
- Kubectl envía la solicitud a kube-apiserver, que autentica y autoriza la solicitud antes de registrar el cambio en una base de datos, etcd.
- El registro de kube-controller-manager supervisa de forma continua la presencia de nuevas solicitudes en el sistema y trabaja para conciliar el estado del sistema con el estado deseado, proceso en el que crea recursos ReplicaSets, implementaciones y pods.
- Después de ejecutar todos los controladores, kube-scheduler detecta que existen pods con el estado "pendiente" porque todavía no se han programado para ejecutarse en un nodo. El programador encuentra nodos adecuados para los pods y, a continuación, se comunica con kubelet en cada nodo para tomar el control e iniciar la implementación.
Casos de uso de implementación de Kubernetes
Crear
Implemente completamente los nuevos ReplicaSets y pods de Kubernetes.
Actualización
Declare un nuevo estado deseado y lance nuevos pods y ReplicaSets de forma controlada.
Revertir
Revierta la implementación de Kubernetes a un estado anterior (útil si el estado actual no es estable).
Escalar
Aumente el número de pods y ReplicaSets en la implementación de Kubernetes sin cambiarlos.
Estrategias de implementación de Kubernetes
La mejor estrategia de implementación de Kubernetes para su escenario depende de muchos factores: cuánto tiempo de inactividad puede soportar (si es el caso), el entorno de implementación, su grado de confianza en la estabilidad de una versión o plataforma nueva, si necesita realizar pruebas, qué quiere aprender, el costo y la disponibilidad de los recursos, y los objetivos empresariales. A continuación se exponen cuatro estrategias de implementación comunes que las organizaciones utilizan en producción.
Incrementado
El método de lanzamiento predeterminado de Kubernetes es una implementación acumulada o incrementada. Esta implementación reemplaza lentamente los pods de uno en uno para evitar tiempos de inactividad. Los pods antiguos se reducen verticalmente cuando los nuevos están listos. Si su implementación detecta problemas, puede pausar o cancelar la implementación de Kubernetes sin dejar todo el clúster sin conexión.
Azul/verde
En una implementación azul/verde, lanza una nueva versión (azul) de su aplicación o flujo de trabajo, mientras la versión actual (verde) todavía se está ejecutando. Ello le permite probar la versión azul en producción mientras los usuarios solo ven la versión estable (verde). Una vez probada, la versión azul reemplaza paulatinamente a la verde.
Valor controlado
Le permite entregar la versión nueva a un grupo reducido de clientes para que prueben su implementación de Kubernetes. Deberá ejecutar un recurso ReplicaSet de la nueva versión junto con la versión actual y, luego, después de un período de tiempo especificado sin errores, escalar verticalmente la nueva versión mientras retira la antigua.
Pruebas A/B
De manera muy similar a la estrategia de implementación controlada de Kubernetes, una estrategia de pruebas A/B está dirigida a un grupo de clientes específico. No obstante, una implementación de pruebas A/B busca establecer algo más que la estabilidad de una versión (se usa para probar la eficacia de la versión para lograr los objetivos empresariales). La nueva versión se distribuye a los usuarios en función de factores como los de cookies, geolocalización, sistema operativo y tipo de dispositivo. Con frecuencia, se ejecuta con la versión actual (al escalarla verticalmente como la nueva versión se demuestra su valor).
Herramientas de implementación de Kubernetes
Aunque puede usar la línea de comandos o los archivos YAML para ejecutar cualquiera de estas estrategias de implementación de Kubernetes, obtenga una mejor ventaja sobre sus clústeres e implementaciones. Para ello, implemente servicios y herramientas de implementación de Kubernetes como estos.
Azure DevOps
Cadena de suministro de aplicaciones completa para automatizar las implementaciones de Kubernetes. Equilibre la velocidad y la seguridad a la vez que entrega código más rápido a escala.
Helm
Herramienta de empaquetado de código abierto. Puede instalar, actualizar y administrar aplicaciones de Kubernetes mediante gráficos que usted mismo cree, versione, comparta y publique.
Azure Kubernetes Service (AKS)
Servicio de Kubernetes totalmente administrado, seguro y con alta disponibilidad. Implemente y administre aplicaciones en contenedores en la nube.