Kubernetes 使用“更新部署标签”;“kubectl补丁”;不起作用

Kubernetes 使用“更新部署标签”;“kubectl补丁”;不起作用,kubernetes,kubectl,minikube,Kubernetes,Kubectl,Minikube,我正在尝试使用kubectl更新标签 当我使用apply时,它可以工作,但在执行修补程序时它不能工作 我尝试了kubectl补丁部署nginx部署--patch“$(cat nginx.yaml)”;它返回无更改,我希望在这里返回标签更改 这些是我的yaml上唯一的变化 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: testLab spec: replica

我正在尝试使用kubectl更新标签

当我使用
apply
时,它可以工作,但在执行
修补程序时它不能工作

我尝试了
kubectl补丁部署nginx部署--patch“$(cat nginx.yaml)”
;它返回
无更改
,我希望在这里返回标签更改

这些是我的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
对什么补丁更新有限制吗?或者我做错了什么


我还尝试指定
--type strategic
和其他类型,但似乎都不起作用。

您的元数据中应该有这样的内容:

metadata:
  name: nginx-deployment
  labels:
    label: testLabel2

在第二个文件(更改标签的位置)上执行命令kubectl patch后,您应该会看到以下错误:

Error from server: cannot restore map from string
在此文件上执行命令kubectl apply后,您应该会得到以下错误:

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)”


以下是有用的文档:,。

对于
部署
资源,在
元数据
下没有键
标签
。见和。有一个
标签
键(复数)。当我尝试应用与您显示的内容相匹配的资源时,我在验证数据时遇到一个错误:ValidationError(ConfigMap.metadata):io.k8s.APIMERGENERATION.pkg.API.meta.v1.ObjectMeta中的未知字段“label”。你能更新你的问题吗?我的错,我实际上在用标签。我只是打错了。复制并粘贴了yaml im现在使用的。你能显示
kubectl版本--short
?客户端版本:v1.13.1FYI:在这种情况下,标签仍然没有更新,这就是你的回答,正是我以前问问题时尝试过的。我只是在上面的问题中粘贴yaml时出现了一个拼写错误,所以我一看到就纠正了它。关键是更新部署标签时修补程序不起作用。因此,这个答案并不能真正解决问题。
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