Recientemente comencé a familiarizarme con Kubernetes, sin embargo, aunque entiendo el concepto, tengo algunas preguntas que no puedo responder claramente a través del concepto y la documentación de Kubernete, y algunos entendimientos que me gustaría confirmar.
Una implementación es un grupo de una o más imágenes de contenedor (Docker, etc.) que se implementa dentro de un pod y, a través del controlador de implementación de Kubernetes, dichas implementaciones se supervisan y crean, actualizan o eliminan.
Un pod es un grupo de uno o más contenedores, ¿son esos contenedores de la misma implementación o pueden ser de varias implementaciones?
"Un modelo de pod contiene uno o más contenedores de aplicaciones que están acoplados de forma relativamente estrecha". ¿Existe algún criterio claro sobre cuándo implementar contenedores dentro del mismo módulo, en lugar de módulos separados?
"Los pods son las unidades informáticas implementables más pequeñas que se pueden crear y administrar en Kubernetes": Pods, documentación de Kuberenets . ¿Eso significa que la API de Kubernetes no puede monitorear y administrar contenedores (al menos directamente)?
Agradezco su entrada.
su pregunta es demasiado amplia para StackOverflow, pero responderé rápidamente antes de que se cierre.
Tal vez quede más claro cuando miras la documentación de la API. Que podrías leer así:
Una implementación describe una especificación del comportamiento deseado para los objetos contenidos. Esto se hace dentro del campo de spec que es del tipo DeploymentSpec .
Una especificación de implementación define cómo deben verse los pods relacionados con una template a través de PodTemplateSpec.
El PodTemplateSpec luego contiene el PodSpec para todos los parámetros requeridos y eso define cómo deberían verse los contenedores dentro de este Pod a través de una definición de Contenedor .
Esta no es una declaración de una sola línea contundente, pero tal vez hace que sea más fácil ver cómo se relacionan las cosas entre sí.
Relacionado con los criterios sobre cuál es un buen tamaño y cuál es demasiado grande para un Pod o un Contenedor. Esto está muy cargado de opiniones y la mejor manera de averiguarlo es leer las opiniones sobre el tamaño de los microservicios .
Para cubrir su último punto: Kubernetes puede monitorear y administrar contenedores, pero el "usuario" no puede programar contenedores individuales. Deben estar incrustados en una definición de Pod. Por supuesto, puede acceder al estado del contenedor y a los detalles por contenedor (por ejemplo, a través de los registros de kubeget logs <pod> -c <container> ( detalles ) o a través de la API de métricas .
Espero que esto ayude un poco y no aumente la confusión.
Pod es una abstracción proporcionada por Kubernetes y corresponde a un grupo de contenedores que comparten un subconjunto de espacios de nombres, el más importante, el espacio de nombres de la red. Por ejemplo, las aplicaciones que se ejecutan en estos contenedores pueden interactuar como lo harían las aplicaciones en la misma máquina virtual, excepto por el hecho de que no comparten la misma jerarquía del sistema de archivos.
Las cargas de trabajo se ejecutan en forma de pods, pero POD es una abstracción de nivel inferior. Las cargas de trabajo generalmente se programan en términos de Implementaciones/Trabajos/CronJobs/Daemonsets de Kubernetes, etc., que a su vez crean los Pods.