Junior
O que é um seletor?
sobes.tech IA
Resposta da IA
O seletor no contexto do Kubernetes (e não só) é uma etiqueta (ou conjunto de etiquetas) usada para selecionar (filtrar) certos recursos. Permite ligar recursos entre si com base nos seus metadados.
Aplicações de seletores no Kubernetes:
- Selector de Pod em Deployment/ReplicaSet: Define quais os pods geridos por este controlador.
- Selector de Serviço: Indica quais os pods receberão o tráfego dirigido ao serviço.
- Selector de Nó na Especificação do Pod: Define os nós do cluster nos quais um pod pode ser executado.
- Selector de NetworkPolicy: Usado para aplicar políticas de rede a pods ou espaços de nomes específicos.
- Selector de Escopo de ResourceQuota: Pode limitar as quotas de recursos para objetos específicos.
Exemplo de Selector de Pods em YAML de Serviço:
// Definição do serviço
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app // Selector: o serviço irá direcionar o tráfego para pods com a etiqueta app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Exemplo de Pods com etiquetas correspondentes:
// Definição do Pod 1
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-1
labels: // Pods com estas etiquetas serão selecionados pelo serviço
app: my-app
version: v1
spec:
containers:
- name: my-container
image: my-image
// Definição do Pod 2 (também será selecionado pelo serviço)
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-2
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: my-image
Os seletores têm dois tipos:
- Igualdade (Baseado em igualdade): Baseados numa correspondência exata de chave e/ou valor. Exemplos de operadores:
=,==,!=. - Baseados em conjuntos (Set-based): Utilizam conjuntos de valores. Exemplos de operadores:
in,notin,exists(verificação da existência de chave),!exists(verificação da ausência de chave).
Exemplo de seletor baseado em conjuntos:
// Selecionar pods com a etiqueta "environment" com valor "production" ou "staging"
selector:
matchLabels:
app: frontend
matchExpressions: // Expressão baseada em conjuntos
- key: environment
operator: In
values:
- production
- staging
// Selecionar pods que não têm a etiqueta "beta"
selector:
matchExpressions:
- key: beta
operator: DoesNotExist
Assim, os seletores são um mecanismo fundamental no Kubernetes para garantir ligações e gestão de recursos com base nos seus metadados.