website/content/pl/docs/concepts/overview/working-with-objects/field-selectors.md

6.6 KiB

title content_type weight
Selektory pól concept 70

Selektory pól (Field selectors) pozwalają na wybór {{< glossary_tooltip text="obiektów" term_id="object" >}} Kubernetesa na podstawie wartości jednego lub kilku pól zasobów. Oto kilka przykładów zapytań z użyciem selektora pól:

  • metadata.name=my-service
  • metadata.namespace!=default
  • status.phase=Pending

Polecenie kubectl wybiera wszystkie Pody, dla których wartość pola status.phase to Running:

kubectl get pods --field-selector status.phase=Running

{{< note >}} 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. {{< /note >}}

Obsługiwane pola

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:

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"

Lista obsługiwanych pól

Rodzaj Pola
Pod spec.nodeName
spec.restartPolicy
spec.schedulerName
spec.serviceAccountName
spec.hostNetwork
status.phase
status.podIP
status.nominatedNodeName
Event involvedObject.kind
involvedObject.namespace
involvedObject.name
involvedObject.uid
involvedObject.apiVersion
involvedObject.resourceVersion
involvedObject.fieldPath
reason
reportingComponent
source
type
Secret type
Namespace status.phase
ReplicaSet status.replicas
ReplicationController status.replicas
Job status.successful
Node spec.unschedulable
CertificateSigningRequest spec.signerName

Pola zasobów niestandardowych

Wszystkie niestandardowe typy zasobów obsługują pola metadata.name oraz metadata.namespace.

Dodatkowo, pole spec.versions[*].selectableFields w {{< glossary_tooltip term_id="CustomResourceDefinition" text="CustomResourceDefinition" >}} określa, które inne pola w zasobie niestandardowym mogą być używane w selektorach pól. Zobacz selectable fields for custom resources aby uzyskać więcej informacji o tym, jak używać selektorów pól z CustomResourceDefinitions.

Obsługiwane operatory

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:

kubectl get services  --all-namespaces --field-selector metadata.namespace!=default

{{< note >}} Operatory dla zbiorów (Set-based operators ) (in, notin, exists) nie są obsługiwane dla selektorów pól. {{< /note >}}

Złożone selektory

Podobnie jak etykieta 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:

kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always

Wiele typów zasobów

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:

kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default