Etiquetas de Kubernetes: 11 cosas que debe saber

Las etiquetas de Kubernetes (las etiquetas de metadatos adjuntas a los recursos y objetos de Kubernetes) pueden ser un remedio para varios dolores de cabeza que enfrentan los equipos de DevOps. Mediante el uso adecuado de las etiquetas de Kubernetes, los equipos de DevOps pueden resolver problemas más rápidamente a lo largo de la canalización de desarrollo de aplicaciones, aplicar cambios de configuración de forma masiva y solucionar problemas de supervisión, asignación y administración de costos.

El uso efectivo de las etiquetas de Kubernetes se beneficia de la comprensión de los métodos de etiquetado, los casos de uso de etiquetado y otras prácticas recomendadas que describiré a continuación.

Índice

Comprender los métodos de etiquetado de Kubernetes

Kubernetes incluye dos métodos para etiquetar metadatos en objetos para organizar los recursos del clúster: etiquetas y anotaciones.

Etiquetas

Las etiquetas de Kubernetes son pares clave-valor que pueden conectar metadatos de identificación con objetos de Kubernetes. Kubernetes ofrece soporte integrado para usar estas etiquetas para consultar objetos y realizar operaciones masivas en subconjuntos seleccionados. Muchas organizaciones usan etiquetas de Kubernetes para compartir información entre equipos de DevOps, como etiquetar al propietario de un pod o implementación en particular.

Crear etiquetas es fácil:

"metadata": {
  "labels": {
    "key1" : "value1",
    "key2" : "value2",
    "key3" : "value3"
  }
}

Anotaciones

Las anotaciones también son pares clave-valor para conectar metadatos no identificables a objetos. Por lo general, no usa anotaciones para consultas o para realizar operaciones en subconjuntos de objetos.

Crear anotaciones también es simple:

"metadata": {
   "annotations": {
     "key1" : "value1",
     "key2" : "value2",
     "key3" : "value3"
      }
 }

Comprender por qué y cuándo usar etiquetas de Kubernetes

Las organizaciones utilizan principalmente etiquetas de Kubernetes para agregar recursos para consultas o habilitar operaciones masivas. Describiré cada uno a continuación.

Agrupación de recursos para consultas

La aplicación de una determinada etiqueta a los recursos facilita la visualización de todos ellos con una consulta rápida.

[In this Red Hat special edition eBook, get an overview of Kubernetes storage and how it’s implemented. Download Storage Patterns for Kubernetes for Dummies. ]

Considere un escenario de ejemplo en el que un equipo de DevOps necesita averiguar rápidamente por qué un entorno de desarrollo no está disponible. Si todos los pods de este entorno incluyen la etiqueta dev, este kubectl orden puede encontrar inmediatamente su estado:

kubectl get pods -l 'environment in (dev)'
NAME  READY     STATUS      RESTARTS     AGE
cert-manager-6588898cb4-25n79   	0/1  	ErrImagePull     0       3d2h

Sin el etiquetado adecuado, es probable que el equipo de DevOps tenga que usar un kubectl get pods Comando y luego usa grep para buscar a fondo a través de su salida. Los usuarios avanzados pueden saber trucos con ruta json o Ir a la plantilla para hacerlo más fácil, pero es un conjunto de habilidades avanzadas. Lo bueno de este enfoque es que el equipo de DevOps en este ejemplo ve rápidamente que un dev pod encontró un problema al obtener una imagen, lo que permitió una resolución más rápida.

Habilitación de operaciones masivas

Puede utilizar sectores de etiquetas para realizar operaciones masivas. Considere un escenario en el que un equipo elimina todos los entornos de ensayo y ensayo cada noche para reducir los gastos informáticos. Las etiquetas de Kubernetes automatizan esta actividad. Por ejemplo, este comando elimina todos los objetos etiquetados environment: dev Donde environment: sit:

kubectl delete deployment,services,statefulsets -l 'environment in (dev,sit)'

8 prácticas recomendadas de etiquetado de Kubernetes a seguir

Las siguientes tácticas ayudan a los equipos de DevOps a maximizar los beneficios de las etiquetas de Kubernetes y evitar errores comunes de etiquetado.

1. Usa la sintaxis correcta

La sintaxis para crear un par clave-valor de etiqueta de Kubernetes tiene el formato <prefix>/<name>.

El prefijo es opcional y debe ser un subdominio DNS válido (como "company.com"). Los prefijos son útiles para kubectl, kube-scheduler, y otras que no son privadas para el usuario. Aplicaciones instaladas con Cerrada suelen incluir prefijos en sus claves de etiqueta. Los prefijos también permiten el uso de varias etiquetas que, de otro modo, entrarían en conflicto, como las de los paquetes de terceros. Si no está distribuyendo recursos fuera de la empresa, puede ignorar el prefijo y anticipar que no hay conflictos de paquetes.

[ You might also be interested in A sysadmin's guide to basic Kubernetes components. ]

El nombre es el nombre de propiedad arbitrario de la etiqueta. Por ejemplo, puede utilizar el nombre environment con valores de etiqueta production, testing, y development para etiquetar efectivamente los tipos de ambiente. Un nombre puede tener hasta 63 caracteres y admite caracteres alfanuméricos, guiones, guiones bajos y puntos. Una condición es que el primer y último carácter deben ser alfanuméricos (a menos que estén vacíos).

2. Conozca sus opciones de selección de etiquetas

Puede seleccionar objetos etiquetados en función de la igualdad o el conjunto.

Las selecciones basadas en la igualdad le permiten recuperar objetos con o sin etiquetas iguales a un determinado valor (o valores). En la sintaxis, = y == representan la igualdad y != representa la desigualdad. Puede incluir varias etiquetas separadas por comas, en cuyo caso todas las condiciones deben coincidir. Por ejemplo, seleccionando environment=dev,release=nightly encuentra todos los recursos que incluyen estas dos etiquetas.

Las selecciones basadas en conjuntos le permiten encontrar recursos con más de un valor a la vez. Los conjuntos se parecen mucho a los IN palabra clave en SQL. Por ejemplo, environment in (dev,uat) selecciona recursos etiquetados con el nombre environment y valores dev Donde uat.

3. Usa las etiquetas recomendadas por Kubernetes

Kubernetes ofrece una lista de etiquetas recomendadas para agrupar objetos de recursos. el prefijo app.kubernetes.io diferencia estas etiquetas recomendadas de las suyas company.com etiquetas personalizadas. Por ejemplo, app.kubernetes.io/name, app.kubernetes.io/instance, y app.kubernetes.io/component Se recomiendan etiquetas para representar nombres de aplicaciones, instancias y componentes, respectivamente.

4. Estandarice las convenciones de nomenclatura de etiquetas dentro de su organización

Todos los equipos que utilizan recursos de Kubernetes deben estar en la misma sintonía y seguir estrictas convenciones de etiquetado o el sistema puede colapsar. Su canalización de desarrollo debe realizar un análisis de código estático en los archivos de configuración de recursos para verificar que todas las etiquetas requeridas estén presentes. Cuando las etiquetas se aplican incorrectamente, los procesos automatizados pueden fallar y cualquier herramienta de monitoreo que utilice puede generar alertas de falsos positivos.

5. Agregue las etiquetas requeridas a los modelos de pod

Incluye las etiquetas que creas que son esenciales en modelos de cápsulas permite que los controladores de Kubernetes creen pods con los estados coherentes que especifique. Estas plantillas forman parte de los recursos de carga de trabajo, como implementaciones y DaemonSets. Puede comenzar con una pequeña lista de etiquetas en la plantilla. Por ejemplo, aquellos que requieren etiquetas de entorno, versión y propietario.

6. Etiquete mucho

La minuciosidad del etiquetado de objetos aumenta drásticamente la visibilidad de su infraestructura. Imagine escenarios en los que sea importante identificar rápidamente un proceso que consume recursos o depurar un problema crítico. Cuantas más etiquetas tenga, más fácil será encontrar exactamente lo que está buscando en Kubernetes.

7. Etiquete las preocupaciones transversales

Es útil etiquetar las preocupaciones transversales de acuerdo con las necesidades de su organización. Las etiquetas están destinadas a incluir metadatos transversales. Por ejemplo, recomiendo etiquetar el entorno (dev, staging, production), niveles de servicio (gratis, pro), canales de lanzamiento (nocturno, estable, beta), inquilinos específicos en escenarios de múltiples inquilinos y contactos de soporte adecuados. Los expertos de Kubernetes recomiendan usar anotaciones para datos como este, pero encuentro útil mantener todo en las etiquetas.

8. Automatice el etiquetado

En su canalización de integración continua/entrega continua (CI/CD), puede automatizar ciertas etiquetas para problemas transversales. La fijación automática de etiquetas con herramientas de CD garantiza la consistencia y ahorra el esfuerzo del desarrollador. Las tareas de CI también deben aplicar el etiquetado adecuado fallando una compilación y notificando al equipo responsable si falta una etiqueta.

3 prácticas de etiquetado de Kubernetes para evitar

Cuando las iniciativas de etiquetado de Kubernetes fallan, a menudo se debe a una o más de las siguientes razones.

1. Use etiquetas para almacenar datos que cambian con frecuencia (sin una buena razón)

Las etiquetas no deben almacenar datos que cambien con frecuencia. Un ejemplo es rastrear el tamaño de una base de datos almacenando el número de filas como una etiqueta. A menos que esta base de datos solo se actualice en momentos establecidos, no desea hacer esto.

2. Almacenamiento de semántica a nivel de aplicación

Aunque las etiquetas de Kubernetes pueden unir objetos de recursos con metadatos, no están diseñadas para servir como un almacén de datos para aplicaciones. Debido a que los recursos de Kubernetes a menudo solo se usan durante un breve período de tiempo y están poco asociados con las aplicaciones, las etiquetas se desincronizan rápidamente.

3. Déjate llevar por los nombres de las discográficas

Las convenciones de etiquetado estrictas son una buena práctica por una razón. La nomenclatura suelta aumenta considerablemente el tiempo y la dificultad de consultar la información que está buscando.

Obtener el etiquetado

Con las etiquetas, Kubernetes proporciona una potente funcionalidad para obtener visibilidad de la infraestructura, realizar operaciones eficientes y responder a los problemas rápidamente. Las organizaciones y sus equipos de DevOps pueden aprovechar estas características de etiquetado y obtener enormes beneficios siguiendo las mejores prácticas. Piense en qué etiquetas podría agregar o qué herramientas usaría para consultar estos recursos etiquetados para obtener estos beneficios.

Artículos de interés

Subir