Sobes.tech
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.