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.