Junior
Cos'è un selettore?
sobes.tech AI
Risposta dell'AI
Lo selector nel contesto di Kubernetes (e non solo) è un'etichetta (o un insieme di etichette) utilizzata per selezionare (filtrare) determinate risorse. Permette di collegare risorse tra loro in base ai loro metadati.
Applicazioni degli selector in Kubernetes:
- Selector di Pod in Deployment/ReplicaSet: Definisce quali pod sono gestiti da questo controller.
- Selector di Service: Indica quali pod riceveranno il traffico diretto al servizio.
- Selector di Nodo nella Specifica del Pod: Definisce i nodi del cluster su cui può essere eseguito un pod.
- Selector di NetworkPolicy: Viene usato per applicare politiche di rete a determinati pod o namespace.
- Selector di Scope ResourceQuota: Può limitare le quote di risorse per oggetti specifici.
Esempio di Selector di Pod in YAML di Service:
// Definizione del servizio
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Selector: il servizio indirizzerà il traffico ai pod con l'etichetta app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Esempio di Pod con etichette corrispondenti:
// Definizione del Pod 1
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-1
labels: // Pod con queste etichette saranno selezionati dal servizio
app: my-app
version: v1
spec:
containers:
- name: my-container
image: my-image
// Definizione del Pod 2 (anch'esso sarà selezionato dal servizio)
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-2
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: my-image
I selector hanno due tipi:
- Uguaglianza (Equality-based): Basati su una corrispondenza esatta di chiave e/o valore. Esempi di operatori:
=,==,!=. - Basati su set (Set-based): Utilizzano insiemi di valori. Esempi di operatori:
in,notin,exists(controllo della presenza della chiave),!exists(controllo dell'assenza della chiave).
Esempio di selector basato su set:
// Selezionare pod con etichetta "environment" con valore "production" o "staging"
selector:
matchLabels:
app: frontend
matchExpressions: // Espressione basata su set
- key: environment
operator: In
values:
- production
- staging
// Selezionare pod che non hanno l'etichetta "beta"
selector:
matchExpressions:
- key: beta
operator: DoesNotExist
Pertanto, gli selector sono un meccanismo fondamentale in Kubernetes per garantire connessioni e gestione delle risorse in base ai loro metadati.