Essa é a versão completa de impressão dessa seção Clique aqui para imprimir.
Objetos do Kubernetes
- 1: Nomes
- 2: Seletores de Campos
1 - Nomes
Cada objeto em um cluster possui um Nome que é único para aquele tipo de recurso. Todo objeto do Kubernetes também possui um UID que é único para todo o cluster.
Por exemplo, você pode ter apenas um Pod chamado "myapp-1234", porém você pode ter um Pod e um Deployment ambos com o nome "myapp-1234".
Para atributos não únicos providenciados por usuário, Kubernetes providencia labels e annotations.
Nomes
Recursos Kubernetes podem ter nomes com até 253 caracteres. Os caracteres permitidos em nomes são: dígitos (0-9), letras minúsculas (a-z), -
, e .
.
A seguir, um exemplo para um Pod chamado nginx-demo
.
apiVersion: v1
kind: Pod
metadata:
name: nginx-demo
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
UIDs
Kubernetes UIDs são identificadores únicos universais (também chamados de UUIDs). UUIDs utilizam padrões ISO/IEC 9834-8 e ITU-T X.667.
Próximos passos
- Leia sobre labels em Kubernetes.
- Consulte o documento de design Identificadores e Nomes em Kubernetes.
2 - Seletores de Campos
Os Seletores de Campos permitem que você selecione recursos do Kubernetes baseado no valor de um ou mais campos de um recurso. Seguem alguns exemplos de buscas utilizando seletores de campos:
metadata.name=my-service
metadata.namespace!=default
status.phase=Pending
O comando kubectl
, mostrado a seguir, seleciona todos os Pods nos quais o valor do campo status.phase
é Running
:
kubectl get pods --field-selector status.phase=Running
kubectl
sejam equivalentes: kubectl get pods
e kubectl get pods --field-selector ""
Campos suportados
Os campos de seleção suportados variam dependendo do tipo de recurso Kubernetes. Todos os tipos de recursos suportam os campos metadata.name
e metadata.namespace
. Utilizar campos não suportados produz um erro. Como por exemplo:
kubectl get ingress --field-selector foo.bar=baz
Error from server (BadRequest): Unable to find "ingresses" that match label selector "", field selector "foo.bar=baz": "foo.bar" is not a known field selector: only "metadata.name", "metadata.namespace"
Operadores suportados
Você pode utilizar os operadores =
, ==
e !=
com seletores de campos (=
e ==
significam a mesma coisa). Por exemplo, o comando kubectl
a seguir seleciona todos os Kubernetes Services que não estão no namespace default
:
kubectl get services --all-namespaces --field-selector metadata.namespace!=default
Seletores em cadeia
Assim como label e outros tipos de seletores, podem ser utilizados em cadeia através de uma lista separada por vírgula. O comando kubectl
a seguir seleciona todos os Pods nos quais status.phase
não é igual a Running
e spec.restartPolicy
é igual a Always
kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always
Múltiplos tipos de recursos
Você pode utilizar seletores de campos através de múltiplos tipos de recursos. Por exemplo, o comando kubectl
a seguir seleciona todos Statefulsets e Services que não estão presentes no namespace default
.
kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default