Sobes.tech
Junior

Kas yra selektorius?

sobes.tech AI

Atsakymas iš AI

Kubernetes kontekste (ir ne tik) selektorius yra žymė (arba žymių rinkinys), naudojama tam tikrų išteklių pasirinkimui (filtravimui). Jis leidžia susieti išteklius remiantis jų metaduomenimis.

Selektorių taikymas Kubernetes:

  • Pod Selector — nustato, kurie podai yra valdoma šio kontrolerio.
  • Service Selector — nurodo, kurie podai gaus srautą, nukreiptą į paslaugą.
  • Node Selector — nustato klasterio mazgus, kuriuose gali būti paleistas podas.
  • NetworkPolicy Selector — naudojamas taikyti tinklo politiką tam tikriems podams ar vardų erdvėms.
  • ResourceQuota Scope Selector — gali apriboti išteklių kvotas tam tikriems objektams.

Pavyzdys Pod Selector YAML faile paslaugai:

// Paslaugos apibrėžimas
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selektorius: paslauga nukreips srautą į podus su žyme app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Atitinkamų žymių podų pavyzdys:

// Pod apibrėžimas 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Podai su šiomis žymėmis bus pasirinkti paslaugos
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Pod apibrėžimas 2 (taip pat bus pasirinktas)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selektoriai būna dviejų tipų:

  • Lygybė (Equality-based): pagrįsti tiksliu rakto ir/arba reikšmės atitikimu. Operatoriai: =, ==, !=.
  • Rinkiniai (Set-based): naudoja reikšmių rinkinius. Operatoriai: in, notin, exists (raktų egzistavimo patikrinimas), !exists (raktų nebuvimo patikrinimas).

Set-based selektoriaus pavyzdys:

// Pasirinkti podus su žyme "environment" ir reikšme "production" arba "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set-based išraiška
    - key: environment
      operator: In
      values:
        - production
        - staging

// Pasirinkti podus, kurie neturi žymės "beta"
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Taip selektoriai yra pagrindinis mechanizmas Kubernetes, užtikrinantis ryšius ir išteklių valdymą remiantis jų metaduomenimis.