Kubernetes——Explicación detallada del controlador Pod
Pod es la unidad de gestión más pequeña de kubernetes. En kubernetes, los pods se pueden dividir en dos categorías según cómo se crean:
El controlador de pod es la capa intermedia que gestiona los pods. Uso Después de instalar el controlador de Pod, solo necesita decirle al controlador de Pod cuántos y qué tipo de Pods desea. Creará Pods que cumplan las condiciones y garantizará que cada recurso de Pod esté en el estado objetivo esperado por el usuario. Si un recurso de Pod falla durante la operación, reprogramará el Pod según la política especificada.
En Kubernetes, existen muchos tipos de controladores de pod, cada uno con sus propios escenarios adecuados. Los más comunes incluyen los siguientes:
La función principal de ReplicaSet es garantizar una cierta cantidad de controladores. controladores de pod. Si los pods se ejecutan normalmente, continuará monitoreando el estado de ejecución de estos pods. Una vez que un pod falla, se reiniciará o se reconstruirá. Al mismo tiempo, también admite la expansión y contracción del número de pods y la actualización y degradación de versiones de imágenes.
Aquí, los nuevos elementos de configuración que deben entenderse son las siguientes opciones de especificación:
Cree el archivo pc-replicaset.yaml con el siguiente contenido:
Para resolver mejor el problema de la orquestación de servicios, Kubernetes introdujo el controlador de implementación a partir de la versión V1.2. Vale la pena mencionar que este tipo de controlador no administra directamente los pods, sino que los administra brevemente administrando ReplicaSet, es decir: la implementación administra ReplicaSet y ReplicaSet administra Pods. Entonces Deployment es más poderoso que ReplicaSet.
Cree pc-deployment.yaml con el siguiente contenido:
La implementación admite dos estrategias de actualización: actualización de reconstrucción y actualización continua. Puede especificar el tipo de estrategia a través de la estrategia y admite dos atributos:
Proceso de actualización continua:
Cambios en rs durante la actualización de la imagen:
La implementación admite muchas funciones, como pausar, continuar y revertir la versión durante el proceso de actualización de la versión. , veámoslo en detalle a continuación.
Implementación de kubectl: las funciones relacionadas con la actualización de la versión admiten las siguientes opciones:
El controlador de implementación admite el control durante el proceso de actualización, como "pausa". " ” o “reanudar” la operación de actualización.
Por ejemplo, después de crear un lote de nuevos recursos Pod, el proceso de actualización se suspende inmediatamente. En este momento, solo existe una parte de la nueva versión de la aplicación y la parte principal sigue siendo la misma. versión antigua. Luego, filtre una pequeña parte de las solicitudes de los usuarios y enrútelas a la nueva versión de la aplicación Pod, y continúe observando si puede ejecutarse de manera estable y como se esperaba. Después de confirmar que no hay ningún problema, continúe completando la actualización continua restante de los recursos del Pod; de lo contrario, revierta la operación de actualización inmediatamente. Esto se llama liberación canaria.
Eliminar implementación
En lo anterior, hemos podido realizar la expansión o reducción del Pod ejecutando manualmente el comando kubectl scale, pero esto obviamente no cumple con el objetivo de posicionamiento de Kubernetes. Automatización e inteligencia.
Kubernetes espera lograr un ajuste automático de la cantidad de pods monitoreando el uso de los Pods, por lo que se creó un controlador como Horizontal Pod Autoscaler (HPA).
HPA puede obtener la tasa de utilización de cada Pod, luego compararla con los indicadores definidos en HPA, calcular el valor específico que debe escalarse y finalmente ajustar la cantidad de Pods. De hecho, HPA, como la implementación anterior, también es un objeto de recurso de Kubernetes. Rastrea y analiza los cambios de carga de todos los Pods de destino controlados por RC para determinar si la cantidad de copias del Pod de destino debe ajustarse de manera específica. Esta es la implementación del principio HPA.
A continuación, hagamos un experimento
el servidor de métricas se puede usar para recopilar el uso de recursos en el clúster
Para una operación simple, use el comando directamente
p>Cree pc-hpa.yaml
Utilice la herramienta de prueba de esfuerzo para realizar una prueba de esfuerzo en la dirección de servicio 192.168.109.100:31136 y luego vea los cambios en hpa y pod a través de la consola.
cambios de hpa
cambios de implementación
cambios de pod
El controlador de tipo DaemonSet puede garantizar que en cada nodo (o especificado) del cluster Ejecute una copia. Generalmente adecuado para escenarios como la recopilación de registros y la supervisión de nodos. En otras palabras, si las funciones proporcionadas por un Pod son a nivel de nodo (cada nodo requiere y solo necesita una), entonces este tipo de Pod es adecuado para su creación utilizando un controlador de tipo DaemonSet.
Características del controlador DaemonSet:
Veamos primero el archivo de lista de recursos de DaemonSet
Cree pc-daemonset.yaml con el siguiente contenido: p >
El trabajo se utiliza principalmente para el procesamiento por lotes (se debe procesar un número específico de tareas a la vez) y tareas únicas de corta duración (cada tarea solo se ejecuta una vez y finaliza). Las características de Job son las siguientes:
Archivo de lista de recursos de Job:
Cree pc-job.yaml con el siguiente contenido:
El controlador CronJob utiliza el Recurso del controlador de trabajos como Controla objetos y lo utiliza para administrar objetos de recursos del pod. Las tareas de trabajo definidas por el controlador de trabajos se ejecutarán inmediatamente después de que se creen los recursos del controlador, pero CronJob puede controlarlas de manera similar al plan de trabajo de tareas periódicas. del sistema operativo Linux El momento de la ejecución y la forma en que se repite. En otras palabras, CronJob puede ejecutar tareas de trabajo en momentos específicos (repetidamente).
Archivo de lista de recursos de CronJob:
Varias opciones que deben explicarse:
programación: expresión cron, utilizada para especificar el tiempo de ejecución de la tarea
p>p>
Crea pc-cronjob.yaml con el siguiente contenido:
Referencia:
blogs.com/YunyaSir/articles/14593247.html p>