kubectl apply不会更新服务选择器标签

时间:2018-10-26 00:29:50

标签: kubernetes restful-url kubectl kubernetes-apiserver

现在我有服务

kubectl get svc ray-test-svc

apiVersion: v1
items:
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
   ....
    labels:
      app: ray-test-app
      service: ray-test-svc
    name: ray-test-svc
    namespace: ray-test-ns
  spec:
    ports:
    - nodePort: 30198
      port: 80
      protocol: TCP
      targetPort: 8000
    selector:
      app: ray-test-app
      service: ray-test-svc
      version: v2
    type: LoadBalancer

编辑完yaml文件后,删除选择器中的version: v2并执行

kubectl apply -f ray-test-svc.yaml

version:v2仍在选择器中!

这是我的Yaml文件

kind: Service
apiVersion: v1
metadata:
  name: ray-test-svc
  annotations:
    ....
  labels:
    app: ray-test-app
    service: ray-test-svc
spec:
  selector:
    app: ray-test-app
    service: ray-test-svc
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8000

我使用-v=9检查日志,发现kubectl使用PATCH进行更新。这是kubeApi中的错误,还是有什么方法可以删除部分标签?谢谢!

1 个答案:

答案 0 :(得分:0)

似乎配置错​​误: 您没有在第二个YAML中设置namespace,而是通过命令应用它 kubectl apply -f ray-test-svc.yaml。它不会更新旧服务,而是在名称空间default中创建一个新服务。您可以运行命令kubectl apply -f ray-test-svc.yaml -n ray-test-ns,它将更新您的服务。您也可以将namespace: ray-test-ns添加到第二个YAML。