vi /etc/kubernets
在部署第一個(gè)應(yīng)用程序 中,我們使用了 kubectl 命令行界面部署了 nginx 并且查看了 Deployment 和 Pod。kubectl 還有如下四個(gè)常用命令,在我們排查問題時(shí)可以提供幫助:
kubectl get - 顯示資源列表
# kubectl get 資源類型
#獲取類型為Deployment的資源列表
kubectl get deployments
#獲取類型為Pod的資源列表
kubectl get pods
#獲取類型為Node的資源列表
kubectl get nodes
名稱空間
在命令后增加 -A 或 --all-namespaces 可查看所有 名稱空間中 的對(duì)象,使用參數(shù) -n 可查看指定名稱空間的對(duì)象,例如
# 查看所有名稱空間的
Deploymentkubectl get deployments -A
kubectl get deployments --all-namespaces
# 查看 kube-system 名稱空間的
Deploymentkubectl get deployments -n kube-system
kubectl describe - 顯示有關(guān)資源的詳細(xì)信息
# kubectl describe 資源類型 資源名稱
#查看名稱為nginx-XXXXXX的Pod的信息
kubectl describe pod nginx-XXXXXX
#查看名稱為nginx的Deployment的信息
kubectl describe deployment nginx
**kubectl logs** - 查看pod中的容器的打印日志(和命令docker logs 類似)
# kubectl logs Pod名稱
#查看名稱為nginx-pod-XXXXXXX的Pod內(nèi)的容器打印的日志
本案例中的 nginx-pod 沒有輸出日志,所以您看到的結(jié)果是空的
kubectl logs -f nginx-pod-XXXXXXX
**kubectl exec** - 在pod中的容器環(huán)境內(nèi)執(zhí)行命令(和命令docker exec 類似)
kubectl exec Pod名稱 操作命令# 在名稱為nginx-pod-xxxxxx的Pod中運(yùn)行bash
kubectl exec -it nginx-pod-xxxxxx /bin/bash
kubectl -n kube-system get po
kubectl -n kube-system get po -o wide
kubectl get node
journalctl -fu docker
journalctl -fu kubectl
kubectl get nodes
kubectl get pods
kubectl api-resources
docker logs -f <ID>
###查看namespace
kubectl get ns
###創(chuàng)建namespace
kubectl create ns nie
###配置好yaml,通過“one-pod.yaml”創(chuàng)建pod
kubectl create -f one-pod.yaml
在執(zhí)行請(qǐng)求時(shí)設(shè)定namespace
執(zhí)行 kubectl 命令時(shí),可以使用 --namespace 參數(shù)指定名稱空間,例如:
kubectl run nginx --image=nginx --namespace=<您的名稱空間>
kubectl get pods --namespace=<您的名稱空間>
設(shè)置名稱空間偏好
可以通過 set-context 命令改變當(dāng)前的名稱空間,后續(xù)所有命令都默認(rèn)在此名稱空間下執(zhí)行。
kubectl config set-context --current --namespace=<您的名稱空間>
# 驗(yàn)證結(jié)果
kubectl config view --minify | grep namespace:
并非所有對(duì)象都在名稱空間里
大部分的 Kubernetes 對(duì)象(例如,Pod、Service、Deployment、StatefulSet等)都必須在名稱空間里。但是某些更低層級(jí)的對(duì)象,是不在任何名稱空間中的,例如 [nodes]、[storageClass] 等
執(zhí)行一下命令可查看哪些 Kubernetes 對(duì)象在名稱空間里,哪些不在:
# 在名稱空間里
kubectl api-resources --namespaced=true
# 不在名稱空間里
kubectl api-resources --namespaced=false
查看名稱空間
查看集群中的名稱空間列表:
kubectl get namespaces
輸出結(jié)果如下所示:
NAME STATUS AGE
default Active 11d
kube-system Active 11d
kube-public Active 11d
Kubernetes 安裝成功后,默認(rèn)有初始化了三個(gè)名稱空間:
default 默認(rèn)名稱空間,如果 Kubernetes 對(duì)象中不定義 metadata.namespace 字段,該對(duì)象將放在此名稱空間下
kube-system Kubernetes系統(tǒng)創(chuàng)建的對(duì)象放在此名稱空間下
kube-public 此名稱空間自動(dòng)在安裝集群是自動(dòng)創(chuàng)建,并且所有用戶都是可以讀取的(即使是那些未登錄的用戶)。主要是為集群預(yù)留的,例如,某些情況下,某些Kubernetes對(duì)象應(yīng)該被所有集群用戶看到。
查看名稱空間的概要信息:
kubectl describe namespaces <name>
輸出結(jié)果如下所示:
Name: default
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
Resource Limits
Type Resource Min Max Default
---- -------- --- --- ---
Container cpu - - 100m
創(chuàng)建名稱空間
使用 kubectl 有兩種方式可以創(chuàng)建名稱空間
1.通過 yaml 文件,創(chuàng)建文件 my-namespace.yaml 內(nèi)容如下:
apiVersion: v1
kind: Namespace
metadata:
name: <名稱空間的名字>
執(zhí)行命令
```
kubectl create -f ./my-namespace.yaml
```
2.直接使用命令創(chuàng)建名稱空間:
```
kubectl create namespace <名稱空間的名字>
```
在 Kuboard 中創(chuàng)建名稱空間,請(qǐng)參考 [名稱空間管理]
刪除名稱空間
執(zhí)行如下命令可刪除名稱空間:
kubectl delete namespaces <名稱空間的名字>
WARNING
該操作將刪除名稱空間中的所有內(nèi)容
此刪除操作是異步的,您可能會(huì)觀察到名稱空間停留會(huì)在 Terminating 狀態(tài)停留一段時(shí)間。
使用名稱空間切分集群)使用名稱空間切分集群
理解-default-名稱空間)理解 default 名稱空間
默認(rèn)情況下,安裝Kubernetes集群時(shí),會(huì)初始化一個(gè) default 名稱空間,用來將承載那些未指定名稱空間的 Pod、Service、Deployment等對(duì)象
創(chuàng)建新的名稱空間)創(chuàng)建新的名稱空間
在此練習(xí)中,我們將創(chuàng)建兩個(gè) Kubernetes 名稱空間。
假設(shè)企業(yè)使用同一個(gè)集群作為開發(fā)環(huán)境和生產(chǎn)環(huán)境(注意:通常開發(fā)環(huán)境和生產(chǎn)環(huán)境是物理隔絕的):
- 開發(fā)團(tuán)隊(duì)期望有一個(gè)集群中的空間,以便他們可以查看查看和使用他們創(chuàng)建的 Pod、Service、Deployment等。在此空間中,Kubernetes對(duì)象被創(chuàng)建又被刪除,為了適應(yīng)敏捷開發(fā)的過程,團(tuán)隊(duì)中的許多人都可以在此空間內(nèi)做他們想做的事情。
- 運(yùn)維團(tuán)隊(duì)也期望有一個(gè)集群中的空間,在這里,將有嚴(yán)格的流程控制誰可以操作 Pod、Service、Deployment等對(duì)象,因?yàn)檫@些對(duì)象都直接服務(wù)于生產(chǎn)環(huán)境。
此時(shí),該企業(yè)可以將一個(gè)Kubernetes集群切分成兩個(gè)名稱空間:development 和 production。創(chuàng)建名稱空間的 yaml 文件如下所示:
apiVersion: v1
kind: Namespace
metadata:
name: development
labels:
name: development
執(zhí)行命令以創(chuàng)建 development 名稱空間:
kubectl create -f https://kuboard.cn/statics/learning/namespace/dev.yaml
執(zhí)行命令以創(chuàng)建 production 名稱空間:
kubectl create -f https://kuboard.cn/statics/learning/namespace/prod.yaml
執(zhí)行命令查看已創(chuàng)建的名稱空間
kubectl get namespaces --show-labels
輸出結(jié)果如下所示
NAME STATUS AGE LABELS
default Active 32m <none>
development Active 29s name=development
production Active 23s name=production
在每個(gè)名稱空間中創(chuàng)建-pod)在每個(gè)名稱空間中創(chuàng)建 Pod
Kubernetes名稱空間為集群中的 Pod、Service、Deployment 提供了一個(gè)作用域??梢韵薅ㄊ褂媚硞€(gè)名稱空間的用戶不能看到另外一個(gè)名稱空間中的內(nèi)容。我們可以在 development 名稱空間中創(chuàng)建一個(gè)簡單的 Deployment 和 Pod 來演示這個(gè)特性。
-
首先,執(zhí)行命令以檢查當(dāng)前的 [kubectl切換當(dāng)前訪問的集群)
kubectl config view輸出結(jié)果如下所示:
apiVersion: v1 clusters: - cluster: certificate-authority-data: REDACTED server: https://130.211.122.180 name: lithe-cocoa-92103_kubernetes contexts: - context: cluster: lithe-cocoa-92103_kubernetes user: lithe-cocoa-92103_kubernetes name: lithe-cocoa-92103_kubernetes current-context: lithe-cocoa-92103_kubernetes kind: Config preferences: {} users: - name: lithe-cocoa-92103_kubernetes user: client-certificate-data: REDACTED client-key-data: REDACTED token: 65rZW78y8HbwXXtSXuUw9DbP4FLjHi4b - name: lithe-cocoa-92103_kubernetes-basic-auth user: password: h5M0FtUUIflBSdI7 username: admin執(zhí)行命令
kubectl config current-context輸出結(jié)果如下所示
lithe-cocoa-92103_kubernetes -
接下來,為 kubectl 定義一個(gè)上下文,以便在不同的名稱空間中工作。
cluster和user字段的取值從前面的 current context 復(fù)制過來:kubectl config set-context dev --namespace=development --cluster=lithe-cocoa-92103_kubernetes --user=lithe-cocoa-92103_kubernetes kubectl config set-context prod --namespace=production --cluster=lithe-cocoa-92103_kubernetes --user=lithe-cocoa-92103_kubernetes上面的命令創(chuàng)建了兩個(gè) kubectl 的上下文,使得您可以在兩個(gè)不同的名稱空間中工作:
-
切換到
development名稱空間:kubectl config use-context dev驗(yàn)證
kubectl config current-context dev此時(shí),通過 kubectl 向 Kubernetes 集群發(fā)出的所有指令都限定在名稱空間
development里創(chuàng)建一個(gè) nginx
kubectl run snowflake --image=nginx:1.7.9 --replicas=2剛剛創(chuàng)建的 Deployment 副本數(shù)為 2,運(yùn)行了一個(gè) nginx 容器。
kubectl get deployment輸出結(jié)果如下
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE snowflake 2 2 2 2 2m執(zhí)行命令
kubectl get pods -l run=snowflake輸出結(jié)果如下
NAME READY STATUS RESTARTS AGE snowflake-3968820950-9dgr8 1/1 Running 0 2m snowflake-3968820950-vgc4n 1/1 Running 0 2m此時(shí),開發(fā)人員可以做任何他想要做的操作,所有操作都限定在名稱空間
development里,而無需擔(dān)心影響到production名稱空間中的內(nèi)容。 -
切換到
production名稱空間:kubectl config use-context prodproduction名稱空間應(yīng)該是空的,下面兩個(gè)命令將返回的結(jié)果都應(yīng)該為空:kubectl get deployment kubectl get pods此時(shí),我們?cè)?production 名稱空間運(yùn)行另一個(gè) deployment:
kubectl run cattle --image=nginx:1.7.9 --replicas=5 kubectl get deployment輸出結(jié)果如下所示:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE cattle 5 5 5 5 10s執(zhí)行命令
kubectl get pods -l run=cattle輸出結(jié)果如下所示:
NAME READY STATUS RESTARTS AGE cattle-2263376956-41xy6 1/1 Running 0 34s cattle-2263376956-kw466 1/1 Running 0 34s cattle-2263376956-n4v97 1/1 Running 0 34s cattle-2263376956-p5p3i 1/1 Running 0 34s cattle-2263376956-sxpth 1/1 Running 0 34s至此,我們可以了解到,用戶在一個(gè)名稱空間創(chuàng)建的內(nèi)容對(duì)于另外一個(gè)名稱空間來說是不可見的。
也可以為不同的名稱空間定義不同的訪問權(quán)限控制。敬請(qǐng)期待后續(xù)更新。
標(biāo)簽的 value 必須:
- 不能多于 63 個(gè)字符
- 可以為空字符串
- 如果不為空,則
- 必須由字母、數(shù)字開始和結(jié)尾
- 可以包含字母、數(shù)字、減號(hào)
-、下劃線_、小數(shù)點(diǎn).
例如,下面的例子中的Pod包含兩個(gè)標(biāo)簽 environment: production 和 app:nginx
apiVersion: v1
kind: Pod
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
標(biāo)簽選擇器)標(biāo)簽選擇器
與 [name 和 UID]不同,標(biāo)簽不一定是唯一的。通常來講,會(huì)有多個(gè)Kubernetes對(duì)象包含相同的標(biāo)簽。通過使用標(biāo)簽選擇器(label selector),用戶/客戶端可以選擇一組對(duì)象。標(biāo)簽選擇器(label selector)是 Kubernetes 中最主要的分類和篩選手段。
Kubernetes api server支持兩種形式的標(biāo)簽選擇器,equality-based 基于等式的 和 set-based 基于集合的。標(biāo)簽選擇器可以包含多個(gè)條件,并使用逗號(hào)分隔,此時(shí)只有滿足所有條件的 Kubernetes 對(duì)象才會(huì)被選中。
如果使用空的標(biāo)簽選擇器或者不指定選擇器,其含義由具體的 API 接口決定。
基于等式的選擇方式)基于等式的選擇方式
Equality- 或者 inequality-based 選擇器可以使用標(biāo)簽的名和值來執(zhí)行過濾選擇。只有匹配所有條件的對(duì)象才被選中(被選中的對(duì)象可以包含未指定的標(biāo)簽)。可以使用三種操作符 =、==、!=。前兩個(gè)操作符含義是一樣的,都代表相等,后一個(gè)操作符代表不相等。例如:
# 選擇了標(biāo)簽名為 `environment` 且 標(biāo)簽值為 `production` 的Kubernetes對(duì)象
environment = production
# 選擇了標(biāo)簽名為 `tier` 且標(biāo)簽值不等于 `frontend` 的對(duì)象,以及不包含標(biāo)簽 `tier` 的對(duì)象
tier != frontend
也可以使用逗號(hào)分隔的兩個(gè)等式 environment=production,tier!=frontend,此時(shí)將選中所有 environment 為 production 且 tier 不為 frontend 的對(duì)象。
以 [Pod 的節(jié)點(diǎn)選擇器]節(jié)點(diǎn)選擇器-nodeselector) 為例,下面的 Pod 可以被調(diào)度到包含標(biāo)簽 accelerator=nvidia-tesla-p100 的節(jié)點(diǎn)上:
apiVersion: v1
kind: Pod
metadata:
name: cuda-test
spec:
containers:
- name: cuda-test
image: "k8s.gcr.io/cuda-vector-add:v0.1"
resources:
limits:
nvidia.com/gpu: 1
nodeSelector:
accelerator: nvidia-tesla-p100
基于集合的選擇方式)基于集合的選擇方式
Set-based 標(biāo)簽選擇器可以根據(jù)標(biāo)簽名的一組值進(jìn)行篩選。支持的操作符有三種:in、notin、exists。例如:
# 選擇所有的包含 `environment` 標(biāo)簽且值為 `production` 或 `qa` 的對(duì)象
environment in (production, qa)
# 選擇所有的 `tier` 標(biāo)簽不為 `frontend` 和 `backend`的對(duì)象,或不含 `tier` 標(biāo)簽的對(duì)象
tier notin (frontend, backend)
# 選擇所有包含 `partition` 標(biāo)簽的對(duì)象
partition
# 選擇所有不包含 `partition` 標(biāo)簽的對(duì)象
!partition
可以組合多個(gè)選擇器,用 , 分隔,, 相當(dāng)于 AND 操作符。例如:
# 選擇包含 `partition` 標(biāo)簽(不檢查標(biāo)簽值)且 `environment` 不是 `qa` 的對(duì)象
partition,environment notin (qa)
基于集合的選擇方式是一個(gè)更寬泛的基于等式的選擇方式,例如,environment=production 等價(jià)于 environment in (production);environment!=production 等價(jià)于 environment notin (production)。
基于集合的選擇方式可以和基于等式的選擇方式可以混合使用,例如: partition in (customerA, customerB),environment!=qa
API
查詢條件
LIST 和 WATCH 操作時(shí),可指定標(biāo)簽選擇器作為查詢條件,以篩選指定的對(duì)象集合。兩種選擇方式都可以使用,但是要符合 URL 編碼,例如:
- 基于等式的選擇方式:
?labelSelector=environment%3Dproduction,tier%3Dfrontend - 基于集合的選擇方式:
?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29
兩種選擇方式都可以在 kubectl 的 list 和 watch 命令中使用,例如:
-
使用基于等式的選擇方式
kubectl get pods -l environment=production,tier=frontend -
使用基于集合的選擇方式
kubectl get pods -l 'environment in (production),tier in (frontend)'
#Kubernetes對(duì)象引用
某些 Kubernetes 對(duì)象中(例如,Service和Deployment),使用標(biāo)簽選擇器指定一組其他類型的 Kubernetes 對(duì)象(例如,Pod)
#Service
Service 中通過 spec.selector 字段來選擇一組 Pod,并將服務(wù)請(qǐng)求轉(zhuǎn)發(fā)到選中的 Pod 上。
在 yaml 或 json 文件中,標(biāo)簽選擇器用一個(gè) map 來定義,且支持基于等式的選擇方式,例如:
"selector": {
"component" : "redis",
}
或
selector:
component: redis
上面的例子中定義的標(biāo)簽選擇器等價(jià)于 component=redis 或 component in (redis)
#有些對(duì)象支持基于集合的選擇方式
Job、Deployment、ReplicaSet 和 DaemonSet 同時(shí)支持基于等式的選擇方式和基于集合的選擇方式。例如:
selector:
matchLabels:
component: redis
matchExpressions:
- {key: tier, operator: In, values: [cache]}
- {key: environment, operator: NotIn, values: [dev]}
matchLabels 是一個(gè) {key,value} 組成的 map。map 中的一個(gè) {key,value} 條目相當(dāng)于 matchExpressions 中的一個(gè)元素,其 key 為 map 的 key,operator 為 In, values 數(shù)組則只包含 value 一個(gè)元素。matchExpression 等價(jià)于基于集合的選擇方式,支持的 operator 有 In、NotIn、Exists 和 DoesNotExist。當(dāng) operator 為 In 或 NotIn 時(shí),values 數(shù)組不能為空。所有的選擇條件都以 AND 的形式合并計(jì)算,即所有的條件都滿足才可以算是匹配。
引用一組節(jié)點(diǎn)
可以通過標(biāo)簽選擇器將 Pod 調(diào)度到指定的節(jié)點(diǎn)上,請(qǐng)參考 [將容器組調(diào)度到指定的節(jié)點(diǎn)]
向Kubernetes對(duì)象添加注解
Kubernetes 對(duì)象的 metadata 字段可以添加自定義的標(biāo)簽(label)或者注解(annotation)。標(biāo)簽用來選擇對(duì)象或者用來查找符合指定條件的一組對(duì)象。與此相對(duì),注解不是用來標(biāo)記對(duì)象或者選擇對(duì)象的。metadata 中的注解可以很大,也可以很??;可以是結(jié)構(gòu)化的,也可以是非結(jié)構(gòu)化的;還可以包括標(biāo)簽中不允許出現(xiàn)的字符。
與標(biāo)簽相似,注解也是 key/value map,例如:
metadata:
annotations:
key1: value1
key2: value2
類似于下面的信息可以記錄在注解中:
聲明式配置層用到的狀態(tài)信息。
Build、release、image信息,例如 timestamp、release ID、git branch、PR number、image hash、registry address
日志、監(jiān)控、分析、審計(jì)系統(tǒng)的參數(shù)
第三方工具所需要的信息,例如 name、version、build information、URL
輕量級(jí)的發(fā)布工具用到的信息,例如,config、checkpoint
負(fù)責(zé)人的聯(lián)系方式,例如,電話號(hào)碼、網(wǎng)址、電子信箱
用戶用來記錄備忘信息的說明,例如,對(duì)標(biāo)準(zhǔn)鏡像做了什么樣的修改、維護(hù)過程中有什么特殊信息需要記住
下面是一個(gè)來自于實(shí)際 Deployment 的注解:
metadata:
annotations:
deployment.kubernetes.io/revision: 7 # 由Deployment控制器添加,用于記錄當(dāng)前發(fā)布的修改次數(shù)
k8s.eip.work/displayName: busybox # Kuboard添加,Deployment顯示在Kuboard界面上的名字
k8s.eip.work/ingress: false # Kuboard添加,根據(jù)此參數(shù)顯示Deployment是否配置了Ingress
k8s.eip.work/service: none # Kuboard添加,根據(jù)此參數(shù)顯示Deployment是否配置了Service
除了使用注解,您也可以將這類信息存放在一個(gè)外部的數(shù)據(jù)庫,然而,在使用、分享這些信息的時(shí)候,可能會(huì)變得難以管理。
句法和字符集
注解是一組名值對(duì)。
注解的 key 有兩個(gè)部分:可選的前綴和標(biāo)簽名,通過 / 分隔。
注解名:
標(biāo)簽名部分是必須的
不能多于 63 個(gè)字符
必須由字母、數(shù)字開始和結(jié)尾
可以包含字母、數(shù)字、減號(hào)-、下劃線_、小數(shù)點(diǎn).
注解前綴:
注解前綴部分是可選的
如果指定,必須是一個(gè)DNS的子域名,例如:k8s.eip.work
不能多于 253 個(gè)字符
使用 / 和標(biāo)簽名分隔
如果省略注解前綴,則注解的 key 將被認(rèn)為是專屬于用戶的。Kubernetes的系統(tǒng)組件(例如,kube-scheduler、kube-controller-manager、kube-apiserver、kubectl 或其他第三方組件)向用戶的Kubernetes對(duì)象添加注解時(shí),必須指定一個(gè)前綴。
kubernetes.io/ 和 k8s.io/ 這兩個(gè)前綴是 Kubernetes 核心組件預(yù)留的。Kuboard 使用 k8s.eip.work 這個(gè)前綴。
下面的例子中,Pod包含一個(gè)注解 imageregistry: https://hub.docker.com/
apiVersion: v1
kind: Pod
metadata:
name: annotations-demo
annotations:
imageregistry: "https://hub.docker.com/"
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
概述
字段選擇器(Field Selector)可以用來基于的一個(gè)或多個(gè)字段的取值來選取一組Kubernetes對(duì)象。下面有一些示例性的字段選擇器:
metadata.name=my-servicemetadata.namespace!=defaultstatus.phase=Pending
下面的 kubectl 命令選擇了所有字段 status.phase 的取值為 Running 的 Pod:
kubectl get pods --field-selector status.phase=Running
字段選擇器本質(zhì)上是一個(gè) filter。默認(rèn)情況下,沒有添加 selector/filter 時(shí),代表著指定資源類型的所有對(duì)象都被選中。下面?zhèn)€兩個(gè) kubectl 查詢時(shí)等價(jià)的:
kubectl get pods
kubectl get pods --field-selector ""
#支持的字段
不同的 Kubernetes 對(duì)象類型,可以用來查詢的字段不一樣。所有的對(duì)象類型都支持的兩個(gè)字段是 metadata.name 和 metadata.namespace。在字段選擇器中使用不支持的字段,將報(bào)錯(cuò)。例如:
kubectl get ingress --field-selector foo.bar=baz
輸出結(jié)果為:
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 名稱空間中的 Service:
kubectl get services --all-namespaces --field-selector metadata.namespace!=default
多選擇器
可以指定多個(gè)字段選擇器,用逗號(hào) , 分隔。下面的 kubectl 命令查詢所有的 status.phase 不等于 Running 且 spec.restartPolicy 等于 Always 的 Pod:
kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always
多種對(duì)象類型
字段選擇器可以跨資源類型使用。下面的 kubectl 命令查詢所有的不在 default 名稱空間的 StatefulSet 和 Service:
kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default