Junior
¿Qué es un selector?
sobes.tech AI
Respuesta de la IA
El selector en el contexto de Kubernetes (y no solo) es una etiqueta (o conjunto de etiquetas) utilizada para seleccionar (filtrar) ciertos recursos. Permite vincular recursos entre sí en función de sus metadatos.
Aplicaciones de los selectores en Kubernetes:
- Selector de Pods en Deployment/ReplicaSet: Define qué pods son gestionados por este controlador.
- Selector de Servicio: Indica qué pods recibirán el tráfico dirigido al servicio.
- Selector de Nodo en la Especificación del Pod: Define los nodos del clúster en los que puede ejecutarse un pod.
- Selector de NetworkPolicy: Se usa para aplicar políticas de red a pods o espacios de nombres específicos.
- Selector de Alcance de ResourceQuota: Puede limitar las cuotas de recursos para objetos específicos.
Ejemplo de Selector de Pods en YAML de Servicio:
// Definición del servicio
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Selector: el servicio dirigirá el tráfico a pods con la etiqueta app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Ejemplo de Pods con etiquetas correspondientes:
// Definición del Pod 1
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-1
labels: // Pods con estas etiquetas serán seleccionados por el servicio
app: my-app
version: v1
spec:
containers:
- name: my-container
image: my-image
// Definición del Pod 2 (también será seleccionado por el servicio)
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-2
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: my-image
Los selectores tienen dos tipos:
- Igualdad (Basado en igualdad): Se basan en una coincidencia exacta de clave y/o valor. Ejemplos de operadores:
=,==,!=. - Basados en conjuntos (Set-based): Utilizan conjuntos de valores. Ejemplos de operadores:
in,notin,exists(verificación de existencia de clave),!exists(verificación de ausencia de clave).
Ejemplo de selector basado en conjuntos:
// Seleccionar pods con la etiqueta "environment" con valor "production" o "staging"
selector:
matchLabels:
app: frontend
matchExpressions: // Expresión basada en conjuntos
- key: environment
operator: In
values:
- production
- staging
// Seleccionar pods que no tengan la etiqueta "beta"
selector:
matchExpressions:
- key: beta
operator: DoesNotExist
Por lo tanto, los selectores son un mecanismo fundamental en Kubernetes para garantizar conexiones y gestionar recursos en función de sus metadatos.