如何在kubernetes服务定义yaml中指定不相等的选择器?

我正在尝试基于某些选择器为一组pod创建服务。例如,以下get pods命令可根据我的要求检索正确的吊舱-

kubectl get pods --selector property1=dev,property2!=admin

下面是我尝试使用与上面相同的选择器的服务定义yaml的摘录-

apiVersion: v1
kind: Service
metadata:
  name: service1
spec:
  type: NodePort
  ports:
    - name: port1
      port: 30303
      targetPort: 30303
  selector:
    property1: dev
    << property2: ???? >>>

我尝试matchExpressions却没有意识到service is not among the resources that support set-based filters。导致以下错误-

error: error validating "STDIN": error validating data: ValidationError(Service.spec.selector.matchExpressions): invalid type for io.k8s.api.core.v1.ServiceSpec.selector: got "array",expected "string"; if you choose to ignore these errors,turn validation off with --validate=false

我正在上游Kubernetes 1.12.5

dongshaobo 回答:如何在kubernetes服务定义yaml中指定不相等的选择器?

我做了一些测试,但恐怕是不可能的。根据{{​​3}},API支持两种选择器:

kubeclt允许使用===!=之类的运算符。因此,当您使用$ kubectl get pods --selector property1=dev,property2!=admin时,它可以工作。

要应用的配置将在set-based选项中起作用,因为它支持innotinexists

  

(生产环境,质量保证)的环境

     

tier notin(前端,后端)

     

分区

     

!分区

不幸的是,set-based仅受较新的资源支持,例如JobDeploymentReplica SetDeamon Set,但不支持{{1} }

有关此的更多信息,请参见Set-based

即使您将YAML中的选择器设置为:

services

在使用中,property2: !value 将没有任何价值。

property2

Selector: property1=dev,property2=中,,被识别为AND

由于我不知道您如何管理集群,所以我只能建议重新定义标签以仅将services用作逻辑运算符。

本文链接:https://www.f2er.com/3079903.html

大家都在问