|
| 1 | +--- |
| 2 | +title: Selektory pól |
| 3 | +content_type: concept |
| 4 | +weight: 70 |
| 5 | +--- |
| 6 | + |
| 7 | +Selektory pól (_Field selectors_) pozwalają na wybór {{< glossary_tooltip text="obiektów" term_id="object" >}} |
| 8 | +Kubernetesa na podstawie wartości jednego lub kilku pól zasobów. Oto kilka przykładów zapytań z użyciem selektora pól: |
| 9 | + |
| 10 | +* `metadata.name=my-service` |
| 11 | +* `metadata.namespace!=default` |
| 12 | +* `status.phase=Pending` |
| 13 | + |
| 14 | +Polecenie `kubectl` wybiera wszystkie Pody, dla których wartość pola [`status.phase`](/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase) to `Running`: |
| 15 | + |
| 16 | +```shell |
| 17 | +kubectl get pods --field-selector status.phase=Running |
| 18 | +``` |
| 19 | + |
| 20 | +{{< note >}} |
| 21 | +Selektory pól to zasadniczo *filtry* zasobów. Domyślnie nie stosuje się żadnych selektorów/filtrów, co oznacza, że wszystkie zasoby określonego typu są wybierane. Dzięki temu zapytania `kubectl` `kubectl get pods` i `kubectl get pods --field-selector ""` są równoważne. |
| 22 | +{{< /note >}} |
| 23 | + |
| 24 | +## Obsługiwane pola {#supported-fields} |
| 25 | + |
| 26 | +Obsługiwane selektory pól różnią się w zależności od typu zasobu Kubernetesa. Wszystkie typy zasobów obsługują pola `metadata.name` oraz `metadata.namespace`. Użycie nieobsługiwanych selektorów pól skutkuje błędem. Na przykład: |
| 27 | + |
| 28 | +```shell |
| 29 | +kubectl get ingress --field-selector foo.bar=baz |
| 30 | +``` |
| 31 | +``` |
| 32 | +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" |
| 33 | +``` |
| 34 | + |
| 35 | +### Lista obsługiwanych pól {#list-of-supported-fields} |
| 36 | + |
| 37 | +| Rodzaj | Pola | |
| 38 | +| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 39 | +| Pod | `spec.nodeName`<br>`spec.restartPolicy`<br>`spec.schedulerName`<br>`spec.serviceAccountName`<br>`spec.hostNetwork`<br>`status.phase`<br>`status.podIP`<br>`status.nominatedNodeName` | |
| 40 | +| Event | `involvedObject.kind`<br>`involvedObject.namespace`<br>`involvedObject.name`<br>`involvedObject.uid`<br>`involvedObject.apiVersion`<br>`involvedObject.resourceVersion`<br>`involvedObject.fieldPath`<br>`reason`<br>`reportingComponent`<br>`source`<br>`type` | |
| 41 | +| Secret | `type` | |
| 42 | +| Namespace | `status.phase` | |
| 43 | +| ReplicaSet | `status.replicas` | |
| 44 | +| ReplicationController | `status.replicas` | |
| 45 | +| Job | `status.successful` | |
| 46 | +| Node | `spec.unschedulable` | |
| 47 | +| CertificateSigningRequest | `spec.signerName` | |
| 48 | + |
| 49 | +### Pola zasobów niestandardowych {#custom-resources-fields} |
| 50 | + |
| 51 | +Wszystkie niestandardowe typy zasobów obsługują pola `metadata.name` oraz `metadata.namespace`. |
| 52 | + |
| 53 | +Dodatkowo, pole `spec.versions[*].selectableFields` w {{< glossary_tooltip term_id="CustomResourceDefinition" text="CustomResourceDefinition" >}} określa, |
| 54 | +które inne pola w zasobie niestandardowym mogą być używane w selektorach pól. Zobacz |
| 55 | +[selectable fields for custom resources](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#crd-selectable-fields) aby uzyskać więcej informacji o tym, jak używać selektorów pól z CustomResourceDefinitions. |
| 56 | + |
| 57 | +## Obsługiwane operatory {#supported-operators} |
| 58 | + |
| 59 | +Możesz używać operatorów `=`, `==` i `!=` z selektorami pól (`=` and `==` oznaczają to samo). Na przykład ta komenda `kubectl` wybiera wszystkie usługi Kubernetesa, które nie znajdują się w przestrzeni nazw `default`: |
| 60 | + |
| 61 | +```shell |
| 62 | +kubectl get services --all-namespaces --field-selector metadata.namespace!=default |
| 63 | +``` |
| 64 | +{{< note >}} |
| 65 | +Operatory dla zbiorów ([Set-based operators](/docs/concepts/overview/working-with-objects/labels/#set-based-requirement) |
| 66 | +) (`in`, `notin`, `exists`) nie są obsługiwane dla selektorów pól. |
| 67 | +{{< /note >}} |
| 68 | + |
| 69 | +## Złożone selektory {#chained-selectors} |
| 70 | + |
| 71 | +Podobnie jak [etykieta](/docs/concepts/overview/working-with-objects/labels) i inne selektory, selektory pól mogą być łączone w postaci listy rozdzielanej przecinkami. To polecenie `kubectl` wybiera wszystkie Pody, dla których `status.phase` nie jest równe `Running`, a pole `spec.restartPolicy` jest równe `Always`: |
| 72 | + |
| 73 | +```shell |
| 74 | +kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always |
| 75 | +``` |
| 76 | + |
| 77 | +## Wiele typów zasobów {#multiple-resource-types} |
| 78 | + |
| 79 | +Możesz używać selektorów pól w różnych typach zasobów. To polecenie `kubectl` wybiera wszystkie obiekty typu Statefulset i Service, które nie znajdują się w przestrzeni nazw `default`: |
| 80 | + |
| 81 | +```shell |
| 82 | +kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default |
| 83 | +``` |
0 commit comments