Junior
Czym jest selektor?
sobes.tech AI
Odpowiedź od AI
Selekcja w kontekście Kubernetes (i nie tylko) to etykieta (lub zestaw etykiet) używana do wyboru (filtrowania) określonych zasobów. Umożliwia powiązanie zasobów ze sobą na podstawie ich metadanych.
Zastosowania selektorów w Kubernetes:
- Pod Selector w Deployment/ReplicaSet: Określa, które pody są zarządzane przez ten kontroler.
- Selector usługi: Wskazuje, które pody będą otrzymywać ruch skierowany do usługi.
- Selector w Node w specyfikacji poda: Określa węzły klastra, na których może być uruchomiony pod.
- Selector NetworkPolicy: Używany do stosowania polityk sieciowych do określonych podów lub przestrzeni nazw.
- Selector zakresu ResourceQuota: Może ograniczać kwoty zasobów dla określonych obiektów.
Przykład selektora Pod w YAML dla usługi:
// Definicja usługi
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Selekcja: usługa będzie kierować ruch do podów z etykietą app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Przykład podów z odpowiednimi etykietami:
// Definicja poda 1
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-1
labels: // Pody z tymi etykietami będą wybrane przez usługę
app: my-app
version: v1
spec:
containers:
- name: my-container
image: my-image
// Definicja poda 2 (również będzie wybrany przez usługę)
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-2
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: my-image
Selekcje mają dwa typy:
- Równość (Equality-based): Oparte na dokładnym dopasowaniu klucza i/lub wartości. Przykłady operatorów:
=,==,!=. - Oparte na zbiorach (Set-based): Używają zbiorów wartości. Przykłady operatorów:
in,notin,exists(sprawdzenie istnienia klucza),!exists(sprawdzenie braku klucza).
Przykład selektora oparty na zbiorach:
// Wybierz pody z etykietą "environment" z wartością "production" lub "staging"
selector:
matchLabels:
app: frontend
matchExpressions: // Wyrażenie oparte na zbiorach
- key: environment
operator: In
values:
- production
- staging
// Wybierz pody, które nie mają etykiety "beta"
selector:
matchExpressions:
- key: beta
operator: DoesNotExist
W związku z tym selektory są podstawowym mechanizmem w Kubernetes do zapewnienia połączeń i zarządzania zasobami na podstawie ich metadanych.