欄位選擇器
欄位選擇器允許你根據一個或多個資源欄位的值來選擇 Kubernetes 物件。以下是一些欄位選擇器查詢示例:
metadata.name=my-servicemetadata.namespace!=defaultstatus.phase=Pending
此 kubectl 命令選擇所有 status.phase 欄位值為 Running 的 Pod:
kubectl get pods --field-selector status.phase=Running
注意
欄位選擇器本質上是資源“過濾器”。預設情況下,不應用任何選擇器/過濾器,這意味著將選擇指定型別的所有資源。這使得kubectl 查詢 kubectl get pods 和 kubectl get pods --field-selector "" 等效。支援的欄位
支援的欄位選擇器因 Kubernetes 資源型別而異。所有資源型別都支援 metadata.name 和 metadata.namespace 欄位。使用不支援的欄位選擇器會產生錯誤。例如:
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"
支援的欄位列表
| 型別 | 欄位 |
|---|---|
| Pod | spec.nodeNamespec.restartPolicyspec.schedulerNamespec.serviceAccountNamespec.hostNetworkstatus.phasestatus.podIPstatus.nominatedNodeName |
| Event | involvedObject.kindinvolvedObject.namespaceinvolvedObject.nameinvolvedObject.uidinvolvedObject.apiVersioninvolvedObject.resourceVersioninvolvedObject.fieldPathreasonreportingComponentsourcetype |
| Secret | type |
| Namespace | status.phase |
| 副本集 | status.replicas |
| 複製控制器 | status.replicas |
| 作業 | status.successful |
| Node | spec.unschedulable |
| CertificateSigningRequest | spec.signerName |
自定義資源欄位
所有自定義資源型別都支援 metadata.name 和 metadata.namespace 欄位。
此外,CustomResourceDefinition 的 spec.versions[*].selectableFields 欄位聲明瞭自定義資源中哪些其他欄位可以用於欄位選擇器。有關如何將欄位選擇器與 CustomResourceDefinitions 一起使用的更多資訊,請參閱自定義資源的可選欄位。
支援的運算子
你可以使用 =、== 和 != 運算子與欄位選擇器(= 和 == 含義相同)。例如,此 kubectl 命令選擇所有不在 default 名稱空間中的 Kubernetes Service:
kubectl get services --all-namespaces --field-selector metadata.namespace!=default
鏈式選擇器
與標籤和其他選擇器一樣,欄位選擇器可以作為逗號分隔列表進行連結。此 kubectl 命令選擇所有 status.phase 不等於 Running 且 spec.restartPolicy 欄位等於 Always 的 Pod:
kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always
多種資源型別
你可以在多種資源型別上使用欄位選擇器。此 kubectl 命令選擇所有不在 default 名稱空間中的 Statefulset 和 Service:
kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default
上次修改時間:2024 年 10 月 31 日太平洋標準時間上午 10:47:刪除穩定功能的欄位門資訊,向欄位選擇器文件新增詳細資訊 (2b996e4434)