En este documento se describen los fundamentos básicos de Kubernetes, la plataforma de orquestación de contenedores de código abierto. Muchos componentes de Google Distributed Cloud (GDC) air-gapped se basan en Kubernetes, y gran parte de la documentación da por hecho que ya conoces los conceptos y la terminología básicos de Kubernetes. Si no estás familiarizado con Kubernetes, usa este documento como referencia para consultar lecturas recomendadas que te ayuden a empezar.
Aprender los conceptos básicos de Kubernetes es fundamental para diseñar, desplegar y gestionar aplicaciones de GDC y los componentes del sistema subyacente. Los siguientes profesionales técnicos deben conocer Kubernetes para operar GDC correctamente:
- Operadores del grupo de operadores de infraestructura responsables de instalar y mantener la infraestructura de software y hardware subyacente de GDC.
- Administradores del grupo de administradores de plataforma responsables de diseñar arquitecturas de infraestructura y aplicaciones resilientes en GDC.
- Desarrolladores del grupo de operadores de aplicaciones responsables de crear aplicaciones.
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 trabajo 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 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 garantizan que se ejecute un número específico de réplicas de pods. Para proporcionar puntos de conexión 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 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 con el fin de 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. No se trata de una lista exhaustiva de conceptos de Kubernetes. Puedes encontrar mucha más información en los temas proporcionados de la documentación de Kubernetes y en nuestras lecturas recomendadas.
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 y en los que se despliega 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 del 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. GDC proporciona y gestiona el plano de control.
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 dentro de 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, 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 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, "Me gustaría ejecutar tres de este pod en este clúster, con este contenedor en cada pod"). Los diferentes controladores monitorizan diferentes tipos de recursos de Kubernetes, incluidos 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 configurar el comportamiento de un clúster para que ejecute tres pods, con un contenedor designado en cada pod. Los diferentes controladores monitorizan diferentes tipos de recursos de Kubernetes, incluidos los siguientes:
- Deployment: un recurso personalizado
Deploymentes 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. Un despliegue sustituye automáticamente los pods que fallan o dejan de responder. - StatefulSet: un recurso personalizado
StatefulSetes como un despliegue, 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 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. Normalmente, unReplicaSetse gestiona 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 para 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 los servicios de Kubernetes.
Almacenamiento
Si tus aplicaciones necesitan guardar datos que persistan más allá del ciclo de vida de su pod, como en las 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 termina 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 combinarás el RBAC de Kubernetes y la gestión de identidades y accesos (IAM) de GDC para proteger tus aplicaciones.
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, contiene material completo y fiable sobre todo lo relacionado con Kubernetes.
Guías y tutoriales externos
- Descripción general de Kubernetes: una descripción general conceptual exhaustiva de Kubernetes.
- Tutorial: Aprende los conceptos básicos de Kubernetes: Aprende los conceptos básicos de Kubernetes con un ejemplo.
- Tutoriales de Kubernetes: cuando estés listo para ir más allá de los conceptos básicos, en esta sección de la documentación de Kubernetes encontrarás 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 la terminología de Kubernetes. Si no estás seguro de qué significa un 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