Teraz czytasz dokumentację Kubernetesa dla wersji: v1.33
Kubernetes v1.33 ta dokumentacja nie jest już aktualizowana, a wersja, którą czytasz, ma charakter archiwalny. Najnowszą dokumentację znajdziesz tutaj najnowszą wersję.
Selektory pól
Selektory pól (Field selectors) pozwalają na wybór obiektów 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
Informacja:
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 zapytaniakubectl
kubectl get pods
i kubectl get pods --field-selector ""
są równoważne.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 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
Informacja:
Operatory dla zbiorów (Set-based operators ) (in
, notin
, exists
) nie są obsługiwane dla selektorów pól.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