Sobes.tech
Junior

Co je to selektor?

sobes.tech AI

Odpověď od AI

Selektor v kontextu Kubernetes (a nejen tam) je značka (nebo sada značek), která se používá k výběru (filtraci) určitých zdrojů. Umožňuje spojit zdroje na základě jejich metadat.

Použití selektorů v Kubernetes:

  • Pod Selector v Deployment/ReplicaSet: Určuje, které pody jsou řízeny tímto kontrolérem.
  • Service Selector: Udává, které pody budou přijímat provoz směřující na službu.
  • Node Selector v specifikaci Pod: Určuje uzly clusteru, na kterých může být spuštěn pod.
  • NetworkPolicy Selector: Používá se k aplikaci síťových politik na určité pody nebo jmenné prostory.
  • ResourceQuota Scope Selector: Může omezit kvóty na zdroje pro určité objekty.

Příklad Pod Selector v YAML pro službu:

// Definice služby
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selector: služba bude směrovat provoz na pody s označením app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Příklad podů s odpovídajícími značkami:

// Definice podu 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Pody s těmito značkami budou vybrány službou
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Definice podu 2 (bude také vybrán 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:

  • Rovnost (Equality-based): Založeno na přesném shodě klíče a/nebo hodnoty. Příklady operátorů: =, ==, !=.
  • Na základě množin (Set-based): Používají množiny hodnot. Příklady operátorů: in, notin, exists (kontrola existence klíče), !exists (kontrola absence klíče).

Příklad set-based selektoru:

// Vybrat pody s etiketou "environment" s hodnotou "production" nebo "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Výraz založený na množinách
    - key: environment
      operator: In
      values:
        - production
        - staging

// Vybrat pody, které nemají etiket "beta"
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Tímto jsou selektory základním mechanismem v Kubernetes pro zajištění spojení a správu zdrojů na základě jejich metadat.