En este documento se describen los conceptos básicos de Kubernetes, la plataforma de orquestación de contenedores de código abierto. Muchos componentes de Google Distributed Cloud (GDC) con air gap se basan en Kubernetes, y gran parte de la documentación presupone que ya conoces los conceptos y la terminología básicos de Kubernetes. Si no conoces Kubernetes, usa este documento como referencia para saber qué lecturas te recomendamos para empezar.
Es fundamental conocer los conceptos básicos de Kubernetes para diseñar, desplegar y gestionar aplicaciones de GDC y componentes del sistema subyacentes. Los siguientes profesionales técnicos deben conocer Kubernetes para poder operar GDC correctamente:
- Operadores del grupo de operadores de infraestructura responsables de instalar y mantener la infraestructura de software y hardware de GDC subyacente.
- Administradores del grupo de administradores de la plataforma responsables de diseñar infraestructuras y arquitecturas de aplicaciones resilientes en GDC.
- Desarrolladores del grupo de operadores de aplicaciones responsables de crear aplicaciones.
Para obtener más información, consulta Audiencias de la documentación aislada de GDC.
Acerca de Kubernetes
Kubernetes es una plataforma de orquestación de contenedores de código abierto. En esencia, un clúster de Kubernetes es un conjunto de máquinas de trabajador llamadas nodos que ejecutan aplicaciones en contenedores. Todo el clúster está gestionado por el plano de control, que incluye componentes como el servidor de la API, el programador y la base de datos etcd, y es el responsable de mantener el estado del clúster.
Las aplicaciones se empaquetan en pods, las unidades desplegables más pequeñas de Kubernetes, que pueden contener uno o varios contenedores y ejecutarse en los nodos. Para organizar los recursos de un clúster, a menudo para diferentes equipos o entornos, Kubernetes usa espacios de nombres.
El ciclo de vida y el estado de los pods los gestionan los controladores. Por ejemplo, los objetos Deployment gestionan las actualizaciones continuas y los objetos ReplicaSet se aseguran de que se ejecute un número específico de réplicas de pods. Para proporcionar endpoints de red estables, como direcciones IP y nombres de DNS para acceder a los pods, Kubernetes usa servicios.
Como el almacenamiento de contenedores es efímero de forma predeterminada, Kubernetes ofrece varias abstracciones de almacenamiento, como volúmenes y volúmenes persistentes, para gestionar 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 permitan conceder permisos específicos a usuarios y cuentas de servicio.
Conceptos clave
A continuación se indican algunos conceptos clave que usamos en la documentación de GDC. Esta no es una lista exhaustiva de conceptos de Kubernetes. Puedes consultar mucha más información 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 está gestionado 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 como una sola entidad en la que se implementa una aplicación en contenedores.
Consulta 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 gestionan 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 mediante la CLI de kubectl y otras herramientas, un programador para programar pods en los nodos disponibles y los controladores, que monitorizan y gestionan el estado del clúster. El plano de control lo proporciona y gestiona GDC.
Para obtener más información, consulta la documentación sobre los componentes del plano de control de Kubernetes.
Pods
En Kubernetes, las aplicaciones en contenedores se ejecutan en un pod. Un pod es la unidad de computación desplegable más pequeña que puedes crear y gestionar en Kubernetes. Un pod tiene uno o varios contenedores. Cuando un pod ejecuta varios contenedores, como un servidor de aplicaciones y un servidor proxy, los contenedores se gestionan como una sola entidad y comparten los recursos del pod.
Consulta 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 recursos, como pods y servicios, en 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 sobre los espacios de nombres de Kubernetes.
Controladores
Los controladores de Kubernetes monitorizan y gestionan el estado de tus clústeres y cargas de trabajo en función del estado que especifiques (por ejemplo, "Quiero ejecutar tres de este pod en este clúster, con este contenedor en cada pod"). Los distintos controladores monitorizan diferentes tipos de recursos de Kubernetes, entre los que se incluyen los siguientes:
Los controladores de Kubernetes monitorizan y gestionan el estado de tus clústeres y cargas de trabajo en función del estado que especifiques. Por ejemplo, puedes definir el comportamiento de un clúster para que ejecute tres pods, con un contenedor designado en cada pod. Los distintos controladores monitorizan diferentes tipos de recursos de Kubernetes, entre los que se incluyen los siguientes:
- Despliegue: un
Deploymentrecurso personalizado es un objeto de Kubernetes que representa uno o varios pods idénticos, llamados réplicas. Un despliegue ejecuta varias réplicas de los pods distribuidas entre los nodos de un clúster. Una implementación sustituye automáticamente los pods que fallan o dejan de responder. - StatefulSet un recurso personalizado
StatefulSetes como una implementación, pero mantiene una identidad única persistente para cada uno de sus pods.StatefulSetLos recursos pueden ser útiles en aplicaciones con estado persistente, como las aplicaciones con estado. - DaemonSet un recurso personalizado
DaemonSette permite añadir pods predeterminados a algunos o a todos tus nodos. A menudo, se trata de servicios auxiliares para tus cargas de trabajo, como un daemon de recogida de registros o un daemon de monitorización. - ReplicaSet un recurso personalizado
ReplicaSetes un conjunto de pods idénticos. UnReplicaSetsuele gestionarse como parte de un recursoDeployment.
Consulta más información en la documentación de Kubernetes:
Servicio 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 de una aplicación que se ejecuta en Kubernetes, debes definir una abstracción de red sobre sus pods llamada servicio de Kubernetes.
Un servicio de Kubernetes proporciona un punto de conexión de red estable para un conjunto de pods.
Hay varios tipos de servicios, incluidos los servicios 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.
De esta forma, los pods del clúster pueden acceder a otros pods del clúster mediante 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 sobre servicios de Kubernetes.
Almacenamiento
Si tus aplicaciones necesitan guardar datos que existan más allá del tiempo de vida de su pod, como en aplicaciones con estado, puedes usar un objeto PersistentVolume de Kubernetes para aprovisionar este almacenamiento. También puedes usar el almacenamiento efímero, que se destruye cuando finaliza el pod correspondiente.
Consulta 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 utilizarás una combinación de RBAC de Kubernetes y gestión de identidades y accesos (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 enlaces a recursos recomendados para obtener más información sobre Kubernetes. En concreto, Kubernetes.io, el sitio web oficial de Kubernetes, ofrece material completo y fiable sobre todo lo relacionado con Kubernetes.
Guías y tutoriales externos
- Descripción general de Kubernetes: una descripción conceptual detallada de Kubernetes.
- Tutorial: Aprende los conceptos básicos de Kubernetes: descubre los conceptos básicos de Kubernetes con un ejemplo.
- Tutoriales de Kubernetes: cuando quieras ir más allá de los conceptos básicos, consulta esta sección de la documentación de Kubernetes, que ofrece tutoriales sobre diversos temas de Kubernetes, desde aplicaciones con estado hasta seguridad.
Documentación de referencia
- Glosario de Kubernetes: una lista completa y estandarizada de términos de Kubernetes. Si no tienes claro algún término de Kubernetes, consulta el glosario.
Siguientes pasos
- Cargas de trabajo de Kubernetes para alta disponibilidad
- Clústeres de Kubernetes en GDC
- Cargas de trabajo de contenedores en GDC