Sobes.tech
Junior

Seçici nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Kubernetes kontekstində (və yalnız deyil) selector, müəyyən resursları seçmək (filtrləmək) üçün istifadə olunan etiket (və ya etiketlər to‘plami)dir. Bu, resurslarni metama’lumotlar asosida bir-biriga bog‘lash imkonini beradi.

Kubernetesda selectorlarning qo‘llanilishi:

  • Pod Selector Deployment/ReplicaSet ichida: Bu kontroler tomonidan boshqariladigan podlarni belgilaydi.
  • Service Selector: Qaysi podlar xizmatga yo‘naltirilgan trafikni olishini ko‘rsatadi.
  • Node Selector Pod spetsifikatsiyasida: Pod ishga tushirilishi mumkin bo‘lgan klaster tugunlarini belgilaydi.
  • NetworkPolicy Selector: Tarmoqli siyosatlarni ma’lum podlar yoki nomlar uchun qo‘llash uchun ishlatiladi.
  • ResourceQuota Scope Selector: Ma’lum ob’ektlar uchun resurs kvotalarini cheklash mumkin.

YAMLda Pod Selector misoli:

// Xizmat ta’rif
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Selector: xizmat, app: my-app belgisiga ega podlarga trafikni yo‘naltiradi
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Mos keladigan belgilarga ega podlar misoli:

// Pod ta’rif 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Bu belgilarga ega podlar xizmat tomonidan tanlanadi
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Pod ta’rif 2 (ham xizmat tomonidan tanlanadi)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selectorlar ikki turga bo‘linadi:

  • Tenglik (Equality-based): Kalit va/yoki qiymatning aniq mosligi asosida. Operatorlar misoli: =, ==, !=.
  • Set-based: Qiymatlar to‘plamini ishlatadi. Operatorlar misoli: in, notin, exists (kalit mavjudligini tekshirish), !exists (kalit mavjud emasligini tekshirish).

Set-based selector misoli:

// "environment" belgisiga ega bo‘lgan podlarni tanlash, uning qiymati "production" yoki "staging"
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set-based ifoda
    - key: environment
      operator: In
      values:
        - production
        - staging

// "beta" belgisiga ega bo‘lmagan podlarni tanlash
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Shu tarzda, selectorlar Kubernetesda bog‘lanishlarni ta’minlash va resurslarni metama’lumotlariga asoslangan boshqarish uchun asosiy mexanizmdir.