Sobes.tech
Junior

Kas ir selektors?

sobes.tech AI

Atbilde no AI

Selektors Kubernetes kontekstā (un ne tikai) ir marķējums (vai marķējumu kopums), kas tiek izmantots noteiktu resursu izvēlei (filtrēšanai). Tas ļauj sasaistīt resursus, balstoties uz to metadatiem.

Selektoru izmantošana Kubernetes:

  • Pod Selector — nosaka, kuri podi tiek pārvaldīti ar šo kontrolieri.
  • Service Selector — norāda, kuri podi saņems trafiku, kas vērsts uz pakalpojumu.
  • Node Selector — nosaka klastera mezglus, kuros var tikt palaists pod.
  • NetworkPolicy Selector — tiek izmantots, lai piemērotu tīkla politikas noteiktām podiem vai nosaukumu telpām.
  • ResourceQuota Scope Selector — var ierobežot resursu kvotas noteiktiem objektiem.

Piemērs Pod Selector YAML failā pakalpojumam:

// Pakalpojuma definīcija
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selektors: pakalpojums novirza trafiku uz podiem ar marķējumu app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Atbilstošu marķējumu podu piemērs:

// Pod definīcija 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Podiem ar šiem marķējumiem tiks izvēlēti pakalpojuma
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Pod definīcija 2 (tiks izvēlēts arī)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selektori ir divu veidu:

  • Vienādojums (Equality-based): balstīts uz precīzu atbilstību atslēgai un/vai vērtībai. Operatoru piemēri: =, ==, !=.
  • Komplekti (Set-based): izmanto vērtību kopas. Operatoru piemēri: in, notin, exists (atslēgas esamības pārbaude), !exists (atslēgas neesamības pārbaude).

Set-based selektora piemērs:

// Izvēlēties podus ar marķējumu "environment" ar vērtību "production" vai "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set-based izteiksme
    - key: environment
      operator: In
      values:
        - production
        - staging

// Izvēlēties podus, kuriem nav marķējuma "beta"
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Tādējādi selektori ir būtisks mehānisms Kubernetes, nodrošinot saites un resursu pārvaldību, balstoties uz to metadatiem.