[英]Update deployment labels using “kubectl patch” does not work in v1.18
[英]Update deployment labels using “kubectl patch” does not work
我正在嘗試使用kubectl更新標簽。
當我使用apply
它可以工作,但打patch
時卻不能。
我嘗試了kubectl patch deployment nginx-deployment --patch "$(cat nginx.yaml)"
; 它不返回no change
,而我希望該更改可以返回標簽更改。
這些是對我的Yaml的唯一更改。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: testLab
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.8
ports:
- containerPort: 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: helloWorld
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.8
ports:
- containerPort: 80
補丁更新有限制嗎,或者我做錯了什么?
我也嘗試指定--type strategic
和其他類型,但似乎都沒有用。
在第二個文件(更改了標簽的位置)上執行命令kubectl patch后 ,您應該看到以下錯誤:
Error from server: cannot restore map from string
在命令kubectl應用於此文件后,您將得到以下錯誤:
error: error validating "nginx.yaml": error validating data: ValidationError(Deployment.metadata): unknown field "label" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta; if you choose to ignore these errors, turn validation off with --validate=false
您的部署文件應如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: helloWorld
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.8
ports:
- containerPort: 8
您錯過了在應用標簽后添加空格的功能。
添加空間,然后再次執行命令kubectl patch deployment nginx-deployment --patch "$(cat nginx.yaml)"
。
這里是有用的文檔: 標簽選擇器 , kubernetes-deployments , kubernetes-patch 。
您應該在元數據中包含以下內容:
metadata:
name: nginx-deployment
labels:
label: testLabel2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.