Sobes.tech
Junior

Mis on selektor?

sobes.tech AI

Vastus AI-lt

Kuberneți kontekstā selektors 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.

Kubernetes selektoru izmantošana:

  • 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.