Sobes.tech
Junior

Seçici nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kubernetes (ve sadece değil) bağlamında selector, belirli kaynakları seçmek (filtrelemek) için kullanılan bir etiket (veya etiketler kümesi)dir. Bu, kaynakları meta verilerine göre birbirine bağlamayı sağlar.

Kubernetes'te selector'ların kullanımı:

  • Pod Selector Deployment/ReplicaSet içinde: Bu kontrolör tarafından yönetilen pod'ları belirler.
  • Service Selector: Hangi pod'ların servise yönlendirilen trafiği alacağını gösterir.
  • Node Selector Pod Tanımında: Bir pod'un çalıştırılabileceği küme düğümlerini belirler.
  • NetworkPolicy Selector: Belirli pod'lara veya isim alanlarına ağ politikalarını uygulamak için kullanılır.
  • ResourceQuota Scope Selector: Belirli nesneler için kaynak kotalarını sınırlayabilir.

YAML'de Pod Selector örneği:

// Servis tanımı
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app // Seçici: servis, app: my-app etiketi olan pod'lara trafik yönlendirecek
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

İlgili etiketlere sahip pod örnekleri:

// Pod tanımı 1
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-1
  labels: // Bu etiketlere sahip pod'lar servis tarafından seçilecek
    app: my-app
    version: v1
spec:
  containers:
  - name: my-container
    image: my-image

// Pod tanımı 2 (de servis tarafından seçilecek)
apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-2
  labels:
    app: my-app
    env: production
spec:
  containers:
  - name: my-container
    image: my-image

Selector'lar iki türe ayrılır:

  • Eşitlik (Equality-based): Anahtar ve/veya değer ile tam eşleşmeye dayanır. Operatör örnekleri: =, ==, !=.
  • Kümeye Dayalı (Set-based): Değerler kümesi kullanır. Operatör örnekleri: in, notin, exists (anahtarın varlığını kontrol eder), !exists (anahtarın yokluğunu kontrol eder).

Set tabanlı selector örneği:

// "environment" etiketi "production" veya "staging" olan pod'ları seç
selector:
  matchLabels:
    app: frontend
  matchExpressions: // Set tabanlı ifade
    - key: environment
      operator: In
      values:
        - production
        - staging

// "beta" etiketi olmayan pod'ları seç
selector:
  matchExpressions:
    - key: beta
      operator: DoesNotExist

Bu nedenle, selector'lar Kubernetes'te bağlantıları sağlamak ve meta verilere dayalı kaynak yönetimi için temel bir mekanizmadır.