|
| 1 | +--- |
| 2 | +title: Seletores de Campos |
| 3 | +weight: 60 |
| 4 | +--- |
| 5 | + |
| 6 | + |
| 7 | +Os _Seletores de Campos_ permitem que você [selecione recursos do Kubernetes](/docs/concepts/overview/working-with-objects/kubernetes-objects) baseado no valor de um ou mais campos de um recurso. Seguem alguns exemplos de buscas utilizando seletores de campos: |
| 8 | + |
| 9 | +* `metadata.name=my-service` |
| 10 | +* `metadata.namespace!=default` |
| 11 | +* `status.phase=Pending` |
| 12 | + |
| 13 | +O comando `kubectl`, mostrado a seguir, seleciona todos os Pods nos quais o valor do campo [`status.phase`](/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase) é `Running`: |
| 14 | + |
| 15 | +```shell |
| 16 | +kubectl get pods --field-selector status.phase=Running |
| 17 | +``` |
| 18 | + |
| 19 | +{{< note >}} |
| 20 | +Seletores de campos são essencialmente *filtros* de recursos. Por padrão, nenhum seletor/filtro é aplicado, de forma que todos os recursos do tipo especificado são selecionados. Isso faz com que as seguintes pesquisas utilizando `kubectl` sejam equivalentes: `kubectl get pods` e `kubectl get pods --field-selector ""` |
| 21 | +{{< /note >}} |
| 22 | + |
| 23 | +## Campos suportados |
| 24 | + |
| 25 | +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: |
| 26 | + |
| 27 | +```shell |
| 28 | +kubectl get ingress --field-selector foo.bar=baz |
| 29 | +``` |
| 30 | +``` |
| 31 | +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" |
| 32 | +``` |
| 33 | + |
| 34 | +## Operadores suportados |
| 35 | + |
| 36 | +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`: |
| 37 | + |
| 38 | +```shell |
| 39 | +kubectl get services --all-namespaces --field-selector metadata.namespace!=default |
| 40 | +``` |
| 41 | + |
| 42 | +## Seletores em cadeia |
| 43 | + |
| 44 | +Assim como [label](/docs/concepts/overview/working-with-objects/labels) 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` |
| 45 | + |
| 46 | +```shell |
| 47 | +kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always |
| 48 | +``` |
| 49 | + |
| 50 | +## Múltiplos tipos de recursos |
| 51 | + |
| 52 | +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`. |
| 53 | + |
| 54 | +```shell |
| 55 | +kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default |
| 56 | +``` |
0 commit comments