Sobes.tech
Junior

Ce este un selector?

sobes.tech AI

Răspuns de la AI

Selectorul în contextul Kubernetes (și nu numai) este o etichetă (sau un set de etichete) utilizată pentru a selecta (filtra) anumite resurse. Acesta permite legarea resurselor între ele pe baza metadatelor lor.

Aplicații ale selectorilor în Kubernetes:

  • Selector de Pod în Deployment/ReplicaSet: Definește care pod-uri sunt gestionate de acest controler.
  • Selector de Service: Indică care pod-uri vor primi traficul direcționat către serviciu.
  • Selector de Node în specificația Pod: Definește nodurile clusterului pe care poate fi rulat un pod.
  • Selector de NetworkPolicy: Este folosit pentru aplicarea politicilor de rețea asupra anumitor pod-uri sau spații de nume.
  • Selector de Scope ResourceQuota: Poate limita cotele de resurse pentru anumite obiecte.

Exemplu de Selector de Pod în YAML pentru un Service:

// Definiție de Service
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selector: serviciul va direcționa traficul către pod-urile cu eticheta app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Exemplu de pod-uri cu etichete corespunzătoare:

// Definiție de Pod 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Pod-urile cu aceste etichete vor fi selectate de serviciu
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Definiție de Pod 2 (va fi de asemenea selectat de serviciu)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selectorii există în două tipuri:

  • Egalitate (Equality-based): Bazată pe o potrivire exactă a cheii și/sau valorii. Exemple de operatori: =, ==, !=.
  • Bazate pe seturi (Set-based): Utilizează seturi de valori. Exemple de operatori: in, notin, exists (verificarea existenței cheii), !exists (verificarea absenței cheii).

Exemplu de selector bazat pe set:

// Selectează pod-uri cu eticheta "environment" cu valoarea "production" sau "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Expresie bazată pe set
    - key: environment
      operator: In
      values:
        - production
        - staging

// Selectează pod-uri care nu au eticheta "beta"
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Astfel, selectorii sunt un mecanism fundamental în Kubernetes pentru asigurarea conexiunilor și gestionarea resurselor pe baza metadatelor lor.