Conceptos de Kubernetes para GDC

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 Deployment es 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 StatefulSet es como un objeto Deployment, pero mantiene una identidad única persistente para cada uno de sus Pods. Los recursos StatefulSet pueden ser útiles en aplicaciones con estado persistente, como las aplicaciones con estado.
  • DaemonSet: Un recurso personalizado DaemonSet te 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 ReplicaSet es un conjunto de Pods idénticos. Por lo general, un ReplicaSet se administra como parte de un recurso Deployment.

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.

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

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?