Capítulo 3.3 - Labels y Selectors
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender el rol de los Labels
- Crear y utilizar Labels
- Seleccionar recursos con Selectors
- Organizar sus recursos de manera eficiente
¿Qué es un Label?
Un Label es un par clave-valor adjunto a un recurso de Kubernetes para identificarlo y organizarlo.
¿Por qué usar Labels?
Organización
Los Labels permiten:
- Agrupar recursos lógicamente
- Filtrar y seleccionar recursos
- Organizar por entorno, aplicación, versión, etc.
Ejemplos de Labels
labels:
app: my-application # Nombre de la aplicación
env: production # Entorno
tier: frontend # Capa (frontend/backend)
version: v1.2.3 # Versión
team: backend-team # Equipo responsable
component: api-server # Componente
Declaración de Labels
En el YAML
apiVersion: v1
kind: Pod
metadata:
name: web-pod
labels:
app: web
env: production
tier: frontend
version: v1
spec:
containers:
- name: nginx
image: nginx:1.20
Vía kubectl
# Agregar un label
kubectl label pod web-pod team=backend
# Modificar un label existente
kubectl label pod web-pod env=staging --overwrite
# Eliminar un label
kubectl label pod web-pod team-
Selectors
Los Selectors permiten seleccionar recursos basados en sus Labels.
Selectors Simples
selector:
matchLabels:
app: web
env: production
Selectors con Expresiones
selector:
matchExpressions:
- key: env
operator: In
values:
- production
- staging
- key: version
operator: NotIn
values:
- v1
Operadores:
In: El valor está en la listaNotIn: El valor no está en la listaExists: La clave existeDoesNotExist: La clave no existe
Uso en kubectl
Filtrar con Labels
# Pods con un label específico
kubectl get pods -l app=web
# Pods con varios labels
kubectl get pods -l app=web,env=production
# Pods sin un label
kubectl get pods -l '!env'
# Pods con un label en una lista
kubectl get pods -l 'env in (production,staging)'
Selectores Complejos
# Expresión AND
kubectl get pods -l app=web,env=production
# Expresión OR (mediante varias consultas)
kubectl get pods -l app=web
kubectl get pods -l app=api
Caso de Uso: Services
Los Services utilizan Selectors para encontrar los Pods:
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
tier: frontend
ports:
- port: 80
targetPort: 8080
Buenas Prácticas
Convenciones de Nomenclatura
- Utilice nombres cortos y descriptivos
- Evite caracteres especiales (excepto
-y_) - Utilice valores en minúsculas
- Máximo 63 caracteres por label
Labels Recomendados
labels:
app.kubernetes.io/name: my-app
app.kubernetes.io/instance: my-app-prod
app.kubernetes.io/version: "1.2.3"
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: my-system
app.kubernetes.io/managed-by: helm
Resumen
En este capítulo, usted ha aprendido:
Labels: Pares clave-valor para organizar los recursos
Selectors: Seleccionar recursos basados en los Labels
Uso: Services, Deployments, ReplicaSets utilizan Selectors
Comandos: kubectl label, filtrado con -l
Buenas prácticas: Convenciones de nomenclatura y labels recomendados
Próximos Pasos
Ahora que domina los Labels:
Capítulo 3.4: Ciclo de Vida de los Pods
Capítulo 3.5: ReplicaSets
Capítulo creado el: diciembre 2024