Tutoriales

Etiquetas de Kubernetes: 11 cosas que debe saber

Las etiquetas de Kubernetes (etiquetas de metadatos adjuntas a los recursos y objetos de Kubernetes) pueden resolver varios dolores de cabeza que encuentran los equipos de DevOps. Con el uso adecuado de las etiquetas de Kubernetes, los equipos de DevOps pueden resolver problemas más rápidamente en las canalizaciones de desarrollo de aplicaciones, aplicar cambios de configuración en lotes y abordar los desafíos de supervisión, asignación y administración de costos.

Obtenga información sobre métodos de etiquetado, casos de uso de etiquetado y otras prácticas recomendadas que describiré a continuación para usar las etiquetas de Kubernetes de manera eficaz.

Descripción del método de etiquetado de etiquetas de Kubernetes

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

Etiqueta

Las etiquetas de Kubernetes son pares clave-valor que asocian metadatos de identificación con objetos de Kubernetes. Kubernetes brinda soporte integrado para consultar objetos usando estas etiquetas y realizar operaciones masivas en subconjuntos seleccionados. Muchas organizaciones usan etiquetas de Kubernetes para compartir información entre los equipos de DevOps, como etiquetar al propietario de un pod o una implementación específicos.

Crear etiquetas es fácil:

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

notas

Las anotaciones también son pares clave-valor que se utilizan para conectar metadatos no identificables con 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"
      }
 }

Aprenda por qué y cuándo usar las etiquetas de Kubernetes

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

Agrupar recursos para consultas

La aplicación de etiquetas específicas a los recursos facilita la visualización de todos los recursos 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. ]

Tomemos, por ejemplo, la necesidad de que un equipo de DevOps comprenda rápidamente por qué un entorno de desarrollo no está disponible.Si todos los pods del entorno contienen la etiqueta devEsta kubectl Los comandos pueden encontrar su estado de inmediato:

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 posible que los equipos de DevOps necesiten usar genéricos kubectl get pods comando y luego usar grep Buscó dolorosamente su salida.Los usuarios avanzados pueden conocer el truco ruta json O use una plantilla para hacerlo más fácil, pero esa es una habilidad avanzada.La belleza de este enfoque es la rapidez con la que el equipo de DevOps en este ejemplo encontró dev Los pods tienen problemas para extraer imágenes, lo que permite resoluciones más rápidas.

Habilitar operaciones masivas

Puede utilizar sectores de etiquetas para realizar operaciones masivas. Tome el ejemplo de un equipo que elimina todos los entornos de desarrollo y preparación todas las noches para reducir los costos de cómputo. Las etiquetas de Kubernetes permiten automatizar esta actividad.Por ejemplo, este comando elimina todos los objetos marcados environment: dev o environment: sit:

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

8 mejores prácticas para el etiquetado de Kubernetes

Las siguientes estrategias pueden ayudar a los equipos de DevOps a optimizar los beneficios de las etiquetas de Kubernetes y evitar errores de etiquetado comunes.

1. Usa la gramática correcta

La sintaxis para crear un par clave-valor de etiqueta de Kubernetes es /.

El prefijo es opcional y debe ser un subdominio DNS válido (por ejemplo, «empresa.com»).prefijo para kubectl, kube-schedulery otros que no son privados para el usuario.aplicaciones instaladas timón Por lo general, incluye un prefijo en su clave de etiqueta. Los prefijos también permiten múltiples etiquetas que de otro modo entrarían en conflicto, como etiquetas en paquetes de terceros. Si no está distribuyendo recursos fuera de su empresa, puede omitir el prefijo y esperar que no haya conflictos de paquetes.

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

El nombre es un nombre de atributo arbitrario para la etiqueta.Por ejemplo, puede utilizar el nombre environment con valor de etiqueta production, testingy development Etiquete eficientemente el tipo de entorno. Los nombres pueden tener hasta 63 caracteres y admiten caracteres alfanuméricos, guiones, guiones bajos y puntos. Una estipulación es que los primeros y últimos caracteres deben ser alfanuméricos (a menos que estén vacíos).

2. Conozca sus opciones de selección de etiquetas

Puede optar por etiquetar objetos según la igualdad o el conjunto.

La selección basada en ecuaciones le permite recuperar objetos cuyas etiquetas son iguales o diferentes a un valor (o valores). en gramática, = y == representa la igualdad y != representa la desigualdad. Puede incluir varias etiquetas separadas por comas, en cuyo caso todas las condiciones deben coincidir.Por ejemplo, elija environment=dev,release=nightly Encuentre todos los recursos que contengan estas dos etiquetas.

La selección basada en conjuntos le permite encontrar recursos con múltiples valores a la vez.establecer mucho como IN Palabras clave en SQL. Por ejemplo, environment in (dev,uat) Seleccione el recurso marcado con nombre environment y valores dev o uat.

3. Use etiquetas recomendadas por Kubernetes

Kubernetes proporciona una Lista de etiquetas recomendadas Se utiliza para agrupar objetos de recursos.prefijo app.kubernetes.io Diferencia estas etiquetas recomendadas de las tuyas company.com etiquetas personalizadas Por ejemplo, app.kubernetes.io/name, app.kubernetes.io/instancey app.kubernetes.io/component Se recomienda utilizar etiquetas para representar el nombre de la aplicación, la instancia y el componente por separado.

4. Estandarice las convenciones de nomenclatura de etiquetas en toda la organización

Todos los equipos que utilizan recursos de Kubernetes deben seguir convenciones de etiquetado estrictas y ser coherentes, o el sistema puede fallar. 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. Si las etiquetas no se aplican correctamente, los procesos automatizados pueden fallar y cualquier herramienta de monitoreo que utilice puede generar falsas alarmas.

5. Agregue las etiquetas requeridas a la plantilla de pod

Incluye etiquetas que creas que son esenciales plantilla de vaina Permite que el controlador de Kubernetes cree pods con un estado coherente que especifique. Estas plantillas forman parte de los recursos de carga de trabajo, como implementaciones y DaemonSets. Puede comenzar con un pequeño conjunto de etiquetas en la plantilla. Por ejemplo, aquellos que requieren etiquetas de entorno, versión y propietario.

6. Haz muchas etiquetas

La minuciosidad del etiquetado de objetos aumenta significativamente la visibilidad de su infraestructura. Imagine un escenario en el que es importante identificar rápidamente los procesos que consumen recursos o depuran problemas críticos. Cuantas más etiquetas use, más fácil será encontrar exactamente lo que está buscando en Kubernetes.

7. Etiquetas preocupaciones transversales

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

8. Etiquetado automatizado

En su canalización de integración continua/entrega continua (CI/CD), puede automatizar algunas etiquetas para problemas transversales. El uso de herramientas de CD para adjuntar etiquetas automáticamente garantiza la coherencia y ahorra esfuerzo al desarrollador. El trabajo de CI también debe hacer cumplir el etiquetado correcto fallando la compilación y notificando al equipo responsable cuando falten etiquetas.

3 prácticas de etiquetado de Kubernetes que se deben evitar

Cuando ocurre un problema con el esquema de etiquetado de Kubernetes, generalmente 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 cambian con frecuencia. Un ejemplo es el seguimiento del tamaño de una base de datos mediante el almacenamiento de recuentos de filas como etiquetas. No desea hacer esto a menos que la base de datos solo se actualice periódicamente.

2. Semántica de nivel de aplicación de almacenamiento

Si bien las etiquetas de Kubernetes pueden conectar objetos de recursos con metadatos, no están diseñadas para actuar como almacenes de datos para aplicaciones. Debido a que los recursos de Kubernetes generalmente solo se usan durante un breve período de tiempo y están vagamente asociados con la aplicación, las etiquetas pueden perder la sincronización rápidamente.

3. Nombres de etiquetas sueltas

Hay una razón por la cual las convenciones estrictas de etiquetado son las mejores prácticas. La denominación de etiquetas sueltas aumenta significativamente el tiempo y la dificultad de consultar la información que está buscando.

obtener etiqueta

A través de las etiquetas, Kubernetes brinda capacidades poderosas para habilitar la visibilidad de la infraestructura, realizar operaciones eficientes y responder rápidamente a los problemas. Las organizaciones y sus equipos de DevOps pueden aprovechar estas capacidades de etiquetado y obtener grandes beneficios siguiendo las mejores prácticas. Considere qué etiquetas podría agregar o qué herramientas usaría para consultar dichos recursos de etiquetas para obtener estos beneficios.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba