掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
“字段選擇器(Field selectors)”允許你根據一個或多個資源字段的值 篩選 Kubernetes 資源。 下面是一些使用字段選擇器查詢的例子:

metadata.name=my-service ?metadata.namespace!=default ?status.phase=Pending ?下面這個 ?kubectl ?命令將篩選出 ?status.phase? 字段值為 ?Running ?的所有 Pod:
kubectl get pods --field-selector status.phase=Running
字段選擇器本質上是資源過濾器(Filters)。默認情況下,字段選擇器/過濾器是未被應用的, 這意味著指定類型的所有資源都會被篩選出來。 這使得以下的兩個 ?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"
你可在字段選擇器中使用 ?=?、?==?和 ?!=? (?=? 和 ?==? 的意義是相同的)操作符。 例如,下面這個 ?kubectl? 命令將篩選所有不屬于 ?default ?命名空間的 Kubernetes 服務:
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

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流