Sobes.tech
Junior

Ի՞նչ է սելեկտորը։

sobes.tech AI

Պատասխան AI-ից

Կոնտեքստում Kubernetes (եւ ոչ միայն) սելեկտորն է նշան (կամ նշանների հավաքածու), որը օգտագործվում է որոշակի ռեսուրսների ընտրության (ֆիլտրացման) համար: Այն թույլ է տալիս կապել ռեսուրսները մետադատների հիման վրա:

Kubernetes-ում սելեկտորների կիրառումը՝

  • Pod Selector՝ որոշում է, թե որ պոդերը կառավարում է տվյալ կոնտրոլերը:
  • Service Selector՝ նշում է, թե որ պոդերը կստանան ծառայության ուղղված տրաֆիկը:
  • Node Selector՝ որոշում է, թե որ հանգույցներում կարող է գործարկել պոդը:
  • NetworkPolicy Selector՝ օգտագործվում է որոշակի պոդների կամ անունների տարածքների ցանցային քաղաքականությունների կիրառման համար:
  • ResourceQuota Scope Selector՝ կարող է սահմանափակել ռեսուրսների քվոտաները որոշակի օբյեկտների համար:

Օրինակ՝ Pod Selector YAML-ում ծառայության համար՝

// Ծառայության սահմանում
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Սելեկտոր՝ ծառայությունը ուղղորդում է տրաֆիկը `app: my-app` նշան ունեցող պոդերին
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Նշված պոդերի օրինակ՝ նշաններով՝

// Պոդի սահմանում 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Պոդերը նշաններով, որոնք ընտրվում են ծառայության կողմից
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Պոդի սահմանում 2 (նույնպես ընտրվում է)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Սելեկտորների երկու տեսակ կա՝

  • Հավասարություն (Equality-based): հիմնված է կլավիչի և/կամ արժեքի ճշգրիտ համընկնումին: Օպերատորների օրինակներ՝ =, ==, !=
  • Մեծածախ (Set-based): օգտագործում է արժեքների հավաքածուներ: Օպերատորների օրինակներ՝ in, notin, exists (կլավիչի առկայության ստուգում), !exists (կլավիչի բացակայության ստուգում):

Օրինակ՝ Set-based սելեկտոր՝

// Ընտրել պոդեր, որոնք ունեն `environment` նշանը և արժեքը `production` կամ `staging`
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set-based արտահայտություն
    - key: environment
      operator: In
      values:
        - production
        - staging

// Ընտրել պոդեր, որոնք չունեն `beta` նշանը
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Այսպիսով՝ սելեկտորները հիմք են հանդիսանում Kubernetes-ում կապեր ապահովելու և ռեսուրսների կառավարման համար՝ մետադատների հիման վրա: