Junior
Какво е селектор?
sobes.tech AI
Отговор от AI
Селекторът в контекста на Kubernetes (и не само) е етикет (или набор от етикети), използван за избор (филтриране) на определени ресурси. Той позволява да се свържат ресурси въз основа на техните метаданни.
Използване на селектори в Kubernetes:
- Pod Selector в Deployment/ReplicaSet: Определя кои подове се управляват от този контролер.
- Service Selector: Посочва кои подове ще получават трафик, насочен към услугата.
- Node Selector в Pod Specification: Определя възлите на клъстера, на които може да бъде стартиран под.
- NetworkPolicy Selector: Използва се за прилагане на мрежови политики към определени подове или пространства от имена.
- ResourceQuota Scope Selector: Може да ограничи квоти за ресурси за определени обекти.
Пример за Pod Selector в YAML на Service:
// Дефиниция на Service
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Селектор: услугата ще насочва трафик към подове с етикет app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Пример за Pods с съответните етикети:
// Дефиниция на Pod 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
// Дефиниция на Pod 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 за осигуряване на връзки и управление на ресурси въз основа на техните метаданни.