Sobes.tech
Junior

Wat is een selector?

sobes.tech AI

Antwoord van AI

De selector in de context van Kubernetes (en niet alleen) is een label (of een set labels) die wordt gebruikt om bepaalde resources te selecteren (filteren). Het stelt je in staat om resources op basis van hun metadata aan elkaar te koppelen.

Toepassingen van selectors in Kubernetes:

  • Pod Selector in Deployment/ReplicaSet: Bepaalt welke pods worden beheerd door deze controller.
  • Service Selector: Geeft aan welke pods het verkeer ontvangen dat naar de service wordt gestuurd.
  • Node Selector in de Pod-specificatie: Bepaalt de knooppunten in de cluster waarop een pod kan worden uitgevoerd.
  • NetworkPolicy Selector: Wordt gebruikt om netwerkbeleid toe te passen op bepaalde pods of namespaces.
  • ResourceQuota Scope Selector: Kan quota op resources beperken voor bepaalde objecten.

Voorbeeld van een Pod Selector in YAML voor een Service:

// Service definitie
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selector: de service stuurt verkeer naar pods met het label app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Voorbeeld van pods met bijbehorende labels:

// Pod definitie 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Pods met deze labels worden geselecteerd door de service
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Pod definitie 2 (wordt ook door de service geselecteerd)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selectors zijn er in twee typen:

  • Gelijkheid (Equality-based): Gebaseerd op een exacte overeenkomst van sleutel en/of waarde. Voorbeelden van operators: =, ==, !=.
  • Set-based: Gebruikt verzamelingen van waarden. Voorbeelden van operators: in, notin, exists (controle op aanwezigheid van sleutel), !exists (controle op afwezigheid van sleutel).

Voorbeeld van een set-based selector:

// Selecteer pods met het label "environment" met de waarde "production" of "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set-based expressie
    - key: environment
      operator: In
      values:
        - production
        - staging

// Selecteer pods die geen label "beta" hebben
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Dus, selectors vormen een fundamenteel mechanisme in Kubernetes om verbindingen te garanderen en resources te beheren op basis van hun metadata.