Red de conocimiento informático - Aprendizaje de programación - K8s Introducción destacada Kubernetes CRD

K8s Introducción destacada Kubernetes CRD

CRD ​​en sí es un tipo de recurso integrado en Kubernetes, es decir, una definición de recurso personalizada, que describe la apariencia de los recursos definidos por el usuario. 1 Conceptos relacionados con CRD: 1) Desde la perspectiva de un usuario de Kubernetes, todo se llama recurso. , que es el contenido del campo Tipo en Yaml, como servicio, implementación, etc. Además de los recursos integrados comunes, los CRD también se utilizan para describir la apariencia de los recursos definidos por el usuario. Además de los recursos integrados comunes, Kubernetes también le permite personalizar recursos. Recursos personalizados, CRD significa definición de recursos personalizados.

Consulte El futuro de los CRD: patrones estructurales, donde los patrones garantizan que los recursos descritos por Yaml sean canónicos y legales. CRD es esencialmente un patrón API abierto que registra un nuevo recurso con un clúster de Kubernetes y le dice al ApiServer cómo definir legalmente ese recurso.

Extensión: ¿Qué es el Patrón Controlador?

Tome la implementación como ejemplo. La implementación no crea Pods directamente, sino que administra RS, y RS administra Pods. Este es el modo de controlador. El patrón Controlador permite la definición de controladores de nivel superior basados ​​en recursos existentes, que se pueden utilizar para implementar funciones más complejas. Para obtener más información sobre cómo funcionan los controladores de Kubernetes, consulte Cómo funcionan los controladores de Kubernetes

Los usuarios pueden personalizar la lógica del controlador para implementar funciones que no son compatibles de forma nativa con el clúster de Kubernetes. A continuación se muestra un ejemplo de un CRD creado con Kubebuilder para implementar la gestión de microservicios integrada para un clúster de Kubernetes.

Las aplicaciones gestionan todo el ciclo de vida de la aplicación, mientras que los microservicios gestionan el ciclo de vida de los microservicios. Implementación: las aplicaciones pueden administrar directamente múltiples microservicios, que aprovechan el modelo de controlador para crear una implementación para cada versión, lo que permite implementar múltiples versiones simultáneamente.

② Lanzamiento: la gestión de microservicios tiene funciones de lanzamiento en azul y verde y en escala de grises. MicroService crea un LoadBalance para sí mismo y un servicio para cada versión. Como se muestra en la figura siguiente, cada versión de MicroService (correspondiente a cada implementación) tiene servicios y ella misma tiene un LoadBalance, lo que significa que tiene un total de n 1 servicios ***. LoadBalance y CurrentVersion admiten versiones azul-verde. MicroService utiliza la función del controlador de ingreso nginx para implementar la publicación en escala de grises de encabezados/cookies/proporciones modificando la configuración canary de LoadBalance

Para obtener instrucciones detalladas sobre la configuración de CRD, consulte los recursos CRD de Kuberneters (K8s)

La lógica principal de usar Kubebuilder para implementar la gestión de microservicios integrada del clúster de Kubernetes (es decir, aplicaciones y controladores de microservicios) es la siguiente:

① Desde una perspectiva funcional, configuración CRD