Day22- 场地也能选? Field Selectors

前一章我们介绍了Labels 和 Selectors,知道说可以透过label来检索k8s内的资源。不过除了透过label外,还能够透过Field来进行检索。

什麽是Field Selectors

顾名思义,能够透过field让你检索k8s内的资源,透过一个或多个的resource fields,去查找k8s的资源物件。
像以下这些就是搜寻范例:

  1. metadata.name=my-service
  2. metadata.namespace!=default
  3. status.phase=Pending

例如这边使用namespace不为default来查询(记得要加-A 不然你就是在default namespace内 查namespace不为default的pod 不可能会有)

kubectl get pods -A --field-selector metadata.namespace!=default

那结果就会像下图这样
https://ithelp.ithome.com.tw/upload/images/20210930/20129607vYZbEu84oL.png

并且也支援多个resource type查询

kubectl get pods,services -A --field-selector metadata.namespace!=default

结果如下:
https://ithelp.ithome.com.tw/upload/images/20210930/20129607ZktjpVXvOk.png

可以看到他会分两段显示符合条件的资源。

支援fields

能够查哪些field,是看不同的Kubernetes resource type决定的,但是所有的resource type都支援两种field:

  1. metadata.name
  2. metadata.namespace

假如你使用的是不支援的field,例如下面指令:

kubectl get ingress --field-selector foo.bar=baz

那就会跳出像下面的错误:

Error from server (BadRequest): Unable to find "networking.k8s.io/v1, Resource=ingresses" that match label selector "", field selector "foo.bar=baz": "foo.bar" is not a known field selector: only "metadata.name", "metadata.namespace"

告诉你说这里面只有metadata.name和metadata.namespace。
不过跟label 和 Selectors不同,fields Selectors无法使用in ,notin 这种方式去检索field,只能使用=, ==!=

目前k8s内常用的东西做了个简单介绍了,下一章会开始介绍跟k8s有关的工具。


<<:  [所以我说 Google 你的测试] 品质到底是什麽?

>>:  [Day 22] Mattermost - with Drone Plugin

【没钱买ps,PyQt自己写】Day 5 - 开始来设计我们的 controller.py,改以「程序角度」来说明如何建立 PyQt 的系统

看完这篇文章你会得到的成果图 今天我们要延伸昨天的概念,开始来讲解我们如何设计 controller...

案例:在AWS上透过SageMaker跟CodePipeline驾驭MLOps的参考架构(上)

在经历了几篇的MLOps基础概念之後,想在後面的文章带大家看看几个案例。透过案例来学习,会对专案在技...

【在 iOS 开发路上的大小事-Day17】透过 Firebase 来管理使用者 (Sign in with Google 篇) Part1

前置作业 打开专案的 Podfile,新增 Firebase/Auth、GoogleSignIn p...

Day 13 - Semigroup II & Monoid

yo, what's up Semigroup II 多组 Semigroup 进形合并 到目前为止...

【从实作学习ASP.NET Core】Day19 | 前台 | 建立前台专案

我们把前台和後台分成两个不同的专案来处理,透过连接到同一个资料库来建立关系。 而今天就来处理前台的部...