En este documento se recomiendan estrategias de cargas de trabajo de contenedores de Kubernetes para que tus aplicaciones sean más tolerantes a fallos en un universo multizona aislado de Google Distributed Cloud (GDC). GDC admite aplicaciones de contenedores nativas de Kubernetes que se usan y se admiten ampliamente en Google Kubernetes Engine (GKE).
Las estrategias de este documento están dirigidas a desarrolladores de aplicaciones que se encargan de crear cargas de trabajo resilientes.
Para obtener más información, consulta el artículo Audiencias de la documentación de GDC en entornos aislados.
Consideraciones sobre Kubernetes para aplicaciones de alta disponibilidad
Para conseguir la alta disponibilidad (HA) en Kubernetes, no basta con el plano de control. También debes diseñar y desplegar cargas de trabajo de contenedores de forma resiliente en tu universo aislado de Google Distributed Cloud (GDC). Kubernetes ofrece varios mecanismos eficaces para minimizar el tiempo de inactividad y proporcionar servicios de alta disponibilidad, incluso cuando se producen problemas de infraestructura o durante el mantenimiento rutinario. A continuación, se indican las estrategias clave que debes tener en cuenta para la alta disponibilidad:
Mantener la disponibilidad con réplicas y autoescalado: asegúrate de que tu aplicación tenga suficientes instancias en ejecución para gestionar su demanda de latencia y sobrevivir a los fallos de pods individuales.
Réplicas de pods: mantén un conjunto estable de réplicas de pods idénticas. Si un pod falla, el controlador
ReplicaSetcrea automáticamente un pod para sustituirlo. Para obtener más información, consulta la documentaciónReplicaSetde Kubernetes.Autoescalador horizontal de pods (HPA): ajusta automáticamente el número de réplicas en función de métricas como el uso de la CPU, lo que permite que tu aplicación gestione los picos de tráfico. Para obtener más información, consulta la documentación de HPA de Kubernetes.
Minimizar el tiempo de inactividad con
PodDisruptionBudget(PDB): usa un PDB para limitar el número de pods que pueden estar inactivos simultáneamente durante las interrupciones voluntarias, como el mantenimiento de nodos. Esta estrategia garantiza un nivel mínimo de disponibilidad. Para obtener más información, consulta la documentación de PDB de Kubernetes.Distribuir el riesgo con reglas de antiafinidad: usa la antiafinidad de pods para asegurarte de que no se programen varias réplicas de la misma aplicación en el mismo nodo. Esta estrategia evita que un único fallo de infraestructura provoque la inactividad de todas las réplicas. Para obtener más información, consulta la documentación de afinidad de Kubernetes.
Comprobaciones de estado con sondeos: implementa sondeos de actividad, preparación e inicio para ayudar a Kubernetes a detectar y recuperarse de pods en mal estado. Los sondeos garantizan que el tráfico solo llegue a los pods que puedan gestionarlo. Para obtener más información, consulta la documentación de sondeos de Kubernetes.
Endpoints estables con servicios: usa objetos
Servicede Kubernetes para proporcionar una dirección IP y un nombre de DNS estables para tus pods, desacoplando los clientes de los ciclos de vida de los pods individuales y proporcionando un equilibrio de carga interno. Para obtener más información, consulta la documentación de servicios de Kubernetes.Actualizaciones y reversiones graduales con despliegues: usa objetos
Deploymentde Kubernetes para proporcionar actualizaciones y reversiones graduales para tus cargas de trabajo de contenedores. Para obtener más información, consulta la documentación de despliegues de Kubernetes .Definir solicitudes y límites de recursos: define los recursos de CPU y memoria necesarios para tus contenedores. Estas especificaciones ayudan al programador de Kubernetes a colocar los pods de forma eficaz para evitar que la contención de recursos afecte a la disponibilidad. Para obtener más información, consulta la documentación de gestión de recursos de Kubernetes.
Siguientes pasos
- Conceptos de Kubernetes para GDC
- Cargas de trabajo de contenedores en GDC
- Crear un clúster para ejecutar cargas de trabajo de contenedores