Junior
Mi az a szelektor?
sobes.tech MI
Válasz az MI-től
A Kubernetes (és nem csak ebben a kontextusban) a selector egy címke (vagy címkék halmaza), amelyet bizonyos erőforrások kiválasztására (szűrésére) használnak. Lehetővé teszi, hogy az erőforrásokat metaadataik alapján összekapcsoljuk.
A Kubernetesben a selectorok alkalmazása:
- Pod Selector Deployment/ReplicaSet-ben: Meghatározza, mely podokat kezeli ez a vezérlő.
- Service Selector: Megmutatja, mely podok fogadják a szolgáltatásnak szánt forgalmat.
- Node Selector a Pod specifikációban: Meghatározza a klaszter csomópontjait, amelyeken egy pod futtatható.
- NetworkPolicy Selector: Használható hálózati politikák alkalmazására bizonyos podokra vagy névterekre.
- ResourceQuota Scope Selector: Korlátozhatja az erőforrás kvótákat bizonyos objektumokra.
Példa Pod Selector YAML-ben egy szolgáltatáshoz:
// Szolgáltatás definíció
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Selector: a szolgáltatás a my-app címkével ellátott podokra irányítja a forgalmat
ports:
- protocol: TCP
port: 80
targetPort: 8080
Példa a megfelelő címkékkel ellátott podokra:
// Pod definíció 1
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-1
labels: // Ezek a címkék lesznek kiválasztva a szolgáltatás által
app: my-app
version: v1
spec:
containers:
- name: my-container
image: my-image
// Pod definíció 2 (szintén kiválasztásra kerül a szolgáltatás által)
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-2
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: my-image
A selectorok két típusba sorolhatók:
- Egyenlőség (Equality-based): A kulcs és/vagy érték pontos egyezésén alapul. Példák az operátorokra:
=,==,!=. - Halmaz alapú (Set-based): Értékhalmazokat használ. Példák az operátorokra:
in,notin,exists(kulcs létezésének ellenőrzése),!exists(kulcs hiányának ellenőrzése).
Példa halmaz alapú selectorra:
// Pod kiválasztása az "environment" címkével, értéke "production" vagy "staging"
selector:
matchLabels:
app: frontend
matchExpressions: // Halmaz alapú kifejezés
- key: environment
operator: In
values:
- production
- staging
// Pod kiválasztása, amelyek nem rendelkeznek "beta" címkével
selector:
matchExpressions:
- key: beta
operator: DoesNotExist
Így a selectorok alapvető mechanizmust képeznek a Kubernetesben a kapcsolatok biztosítására és az erőforrások metaadataik alapján történő kezelésére.