En este documento, se describen los conceptos básicos de la plataforma de orquestación de contenedores de código abierto Kubernetes. Muchos componentes de Google Distributed Cloud (GDC) aislados se basan en Kubernetes, y gran parte de la documentación supone que ya conoces los conceptos y la terminología básicos de Kubernetes. Si no conoces Kubernetes, usa este documento como referencia para la lectura recomendada y comenzar.
Aprender los conceptos básicos de Kubernetes es fundamental para diseñar, implementar y administrar las aplicaciones de GDC y los componentes del sistema subyacentes. Los siguientes profesionales técnicos deben comprender Kubernetes para operar GDC de manera exitosa:
- Operadores dentro del grupo de operadores de infraestructura responsables de instalar y mantener la infraestructura subyacente de software y hardware de GDC.
- Administradores del grupo de administradores de la plataforma responsables de diseñar infraestructuras y arquitecturas de aplicaciones resilientes en GDC.
- Son los desarrolladores del grupo de operadores de aplicaciones responsables de crear aplicaciones.
Para obtener más información, consulta Públicos de la documentación de Google Distributed Cloud aislado.
Acerca de Kubernetes
Kubernetes es una plataforma de organización de contenedores de código abierto. En esencia, un clúster de Kubernetes es un conjunto de máquinas de trabajo llamadas nodos que ejecutan aplicaciones en contenedores. Todo el clúster se administra a través del plano de control, que incluye componentes como el servidor de la API, el programador y la base de datos de etcd, y es responsable de mantener el estado del clúster.
Las aplicaciones se empaquetan en pods, las unidades más pequeñas que se pueden implementar en Kubernetes, que pueden contener uno o más contenedores y ejecutarse en los nodos. Para organizar los recursos dentro de un clúster, a menudo para diferentes equipos o entornos, Kubernetes usa espacios de nombres.
Los controladores administran el ciclo de vida y el estado de los pods. Por ejemplo, los objetos Deployment administran las actualizaciones continuas y los objetos ReplicaSet garantizan que se ejecute una cantidad específica de réplicas de Pods. Para proporcionar extremos de red estables, como direcciones IP y nombres de DNS para acceder a los Pods, Kubernetes usa servicios.
Dado que el almacenamiento de contenedores es efímero de forma predeterminada, Kubernetes ofrece varias abstracciones de almacenamiento, como volúmenes y volúmenes persistentes, para administrar los datos.
Para proteger el acceso a los recursos del clúster y a la API de Kubernetes, Kubernetes usa el control de acceso basado en roles (RBAC) para definir roles, roles de clúster y vinculaciones que otorgan permisos específicos a los usuarios y las cuentas de servicio.
Conceptos clave
Estos son algunos conceptos clave que usamos en toda la documentación de GDC. Esta no es una lista exhaustiva de los conceptos de Kubernetes. Puedes encontrar mucho más para leer y explorar en los temas proporcionados de la documentación de Kubernetes y en nuestra lectura recomendada.
Nodos y clústeres
Todas las cargas de trabajo de Kubernetes se ejecutan en nodos. En GDC, un nodo es una máquina virtual (VM). En otras plataformas de Kubernetes, un nodo puede ser una máquina física o virtual. Cada nodo es administrado por el plano de control de Kubernetes y tiene todos los componentes necesarios para ejecutar Pods. Un clúster es un conjunto de nodos que se pueden tratar en conjunto como una sola entidad y en el que implementas una aplicación en contenedores.
Obtén más información en la documentación de Kubernetes:
Plano de control de Kubernetes
El plano de control de Kubernetes es un conjunto de componentes del sistema que administran el estado general de tu clúster, incluido el servidor de la API de Kubernetes que te permite interactuar con tus clústeres y aplicaciones a través de la CLI de kubectl y otras herramientas, un programador para programar pods en los nodos disponibles y los controladores que realizan un seguimiento del estado del clúster y lo administran. GDC proporciona y administra el plano de control.
Para obtener más información, consulta la documentación de los componentes del plano de control de Kubernetes.
Pods
En Kubernetes, las aplicaciones alojadas en contenedores se ejecutan dentro de un pod. Un Pod es la unidad de procesamiento más pequeña que puedes crear y administrar en Kubernetes. Un Pod tiene uno o más contenedores. Cuando un pod ejecuta varios contenedores, como un servidor de aplicaciones y un servidor proxy, los contenedores se administran como una sola entidad y comparten los recursos del pod.
Obtén más información en la documentación de Kubernetes:
Espacios de nombres
Los espacios de nombres de Kubernetes proporcionan un mecanismo para agrupar y seleccionar aún más los recursos, como los pods y los servicios, dentro de un clúster. Por ejemplo, si tienes varios equipos de aplicaciones que ejecutan cargas de trabajo en un solo clúster.
Para obtener más información, consulta la documentación de Kubernetes sobre espacios de nombres.
Controladores
Los controladores de Kubernetes hacen un seguimiento del estado de tus clústeres y cargas de trabajo, y lo administran, según el estado que especifiques (por ejemplo, "Me gustaría ejecutar tres de este Pod en este clúster, con este contenedor en cada Pod"). Diferentes controladores hacen un seguimiento de diferentes tipos de recursos de Kubernetes, incluidos los siguientes:
Los controladores de Kubernetes hacen un seguimiento del estado de tus clústeres y cargas de trabajo, y lo administran según el estado que especifiques. Por ejemplo, puedes configurar el comportamiento de un clúster para que ejecute tres Pods, con un contenedor designado en cada Pod. Diferentes controladores hacen un seguimiento de diferentes tipos de recursos de Kubernetes, incluidos los siguientes:
- Deployment: Un recurso personalizado
Deploymentes un objeto de Kubernetes que representa uno o más pods idénticos, llamados replicas. Un objeto Deployment ejecuta varias réplicas de los Pods distribuidos entre los nodos de un clúster. Una implementación reemplaza automáticamente cualquier pod que falle o deje de responder. - StatefulSet: Un recurso personalizado
StatefulSetes como un objeto Deployment, pero mantiene una identidad única persistente para cada uno de sus Pods. Los recursosStatefulSetpueden ser útiles en aplicaciones con estado persistente, como las aplicaciones con estado. - DaemonSet: Un recurso personalizado
DaemonSette permite agregar pods predeterminados a algunos o a todos tus nodos. A menudo, estos son servicios auxiliares para tus cargas de trabajo, como un daemon de recopilación de registros o un daemon de supervisión. - ReplicaSet: Un recurso personalizado de
ReplicaSetes un conjunto de Pods idénticos. Por lo general, unReplicaSetse administra como parte de un recursoDeployment.
Obtén más información en la documentación de Kubernetes:
Service de Kubernetes
De forma predeterminada, no puedes controlar en qué nodo del clúster se ejecuta un Pod, por lo que los Pods no tienen direcciones IP estables. Para obtener una dirección IP para una aplicación que se ejecuta en Kubernetes, debes definir una abstracción de redes sobre sus Pods, lo que se denomina Service de Kubernetes.
Un Service de Kubernetes proporciona un extremo de redes estable para un conjunto de Pods.
Existen varios tipos de servicios, incluidos los servicios de LoadBalancer, que exponen una dirección IP externa para que puedas acceder a las aplicaciones desde fuera del clúster.
Kubernetes también tiene un sistema DNS integrado para la resolución de direcciones internas, que asigna un nombre de DNS, como helloserver.default.cluster.local, a los servicios.
Esto permite que los Pods dentro del clúster lleguen a otros Pods en el clúster con una dirección estable. No puedes usar este nombre de DNS fuera del clúster, por ejemplo, desde la CLI de gdcloud.
Para obtener más información, consulta la documentación de los servicios de Kubernetes.
Almacenamiento
Si tus aplicaciones necesitan guardar datos que existen más allá de la vida útil de su pod, como en las aplicaciones con estado, puedes usar un objeto PersistentVolume de Kubernetes para aprovisionar este almacenamiento. También puedes usar almacenamiento efímero, que se destruye cuando finaliza el pod correspondiente.
Obtén más información en la documentación de Kubernetes:
Control de acceso basado en roles
Kubernetes incluye un mecanismo de control de acceso basado en roles (RBAC) que te permite crear políticas de autorización para acceder a tus clústeres y sus recursos. Cuando uses GDC, a menudo usarás una combinación del RBAC de Kubernetes y de Identity and Access Management (IAM) de GDC para proteger tus aplicaciones.
Para obtener más información, consulta la documentación sobre el control de acceso basado en roles de Kubernetes.
Lecturas recomendadas
En esta sección, se proporcionan vínculos a recursos recomendados para obtener más información sobre Kubernetes. En particular, Kubernetes.io, el sitio web oficial de Kubernetes, tiene material completo y confiable sobre todo lo relacionado con Kubernetes.
Guías y tutoriales externos
- Descripción general de Kubernetes: Una descripción general conceptual detallada de Kubernetes.
- Tutorial: Aprende los conceptos básicos de Kubernetes: Aprende los conceptos básicos de Kubernetes con un ejemplo.
- Instructivos de Kubernetes: Cuando estés listo para ir más allá de los conceptos básicos, esta sección de la documentación de Kubernetes proporciona instructivos sobre una variedad de temas de Kubernetes, desde aplicaciones con estado hasta seguridad.
Documentación de referencia
- Glosario de Kubernetes: Una lista integral y estandarizada de la terminología de Kubernetes. Si no conoces un término de Kubernetes, consulta el glosario.
¿Qué sigue?
- Cargas de trabajo de Kubernetes para HA
- Clústeres de Kubernetes en GDC
- Cargas de trabajo de contenedores en GDC