Sobes.tech
Junior

Čo je to selektor?

sobes.tech AI

Odpoveď od AI

Selektor v kontexte Kubernetes (a nie len) je značka (alebo súbor značiek), ktorá sa používa na výber (filtráciu) určitých zdrojov. Umožňuje prepojiť zdroje na základe ich metadát.

Použitie selektorov v Kubernetes:

  • Pod Selector v Deployment/ReplicaSet: Určuje, ktoré pod-y riadi daný kontrolér.
  • Service Selector: Uvádza, ktoré pod-y budú prijímať prenos smerovaný na službu.
  • Node Selector v Pod Specification: Určuje uzly klastru, na ktorých môže byť spustený pod.
  • NetworkPolicy Selector: Používa sa na uplatnenie sieťových politík na určité pod-y alebo priestory mien.
  • ResourceQuota Scope Selector: Môže obmedziť kvóty na zdroje pre určité objekty.

Príklad Pod Selector v YAML pre Service:

// Definícia služby
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selektor: služba bude smerovať prenos na pod-y s označením app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Príklad podov s príslušnými značkami:

// Definícia podu 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Pod-y s týmito značkami budú vybrané službou
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Definícia podu 2 (tiež bude vybraný službou)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selektory majú dva typy:

  • Rovnosť (Equality-based): Založené na presnom zhodovaní kľúča a/alebo hodnoty. Príklady operátorov: =, ==, !=.
  • Založené na množinách (Set-based): Používajú množiny hodnôt. Príklady operátorov: in, notin, exists (kontrola prítomnosti kľúča), !exists (kontrola neprítomnosti kľúča).

Príklad set-based selektora:

// Vybrať pod-y s označením "environment" s hodnotou "production" alebo "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set-based výraz
    - key: environment
      operator: In
      values:
        - production
        - staging

// Vybrať pod-y, ktoré nemajú označenie "beta"
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Takže, selektory sú základným mechanizmom v Kubernetes na zabezpečenie väzieb a riadenie zdrojov na základe ich metadát.