Rak*_*h N 5 kubernetes kubernetes-service
我正在尝试为基于某些选择器的一组 pod 创建一个服务。例如,以下get pods命令根据我的要求检索正确的 pod -
kubectl get pods --selector property1=dev,property2!=admin
Run Code Online (Sandbox Code Playgroud)
以下是服务定义 yaml 的摘录,我在其中尝试使用与上述相同的选择器 -
apiVersion: v1
kind: Service
metadata:
name: service1
spec:
type: NodePort
ports:
- name: port1
port: 30303
targetPort: 30303
selector:
property1: dev
<< property2: ???? >>>
Run Code Online (Sandbox Code Playgroud)
我尝试过matchExpressions但没有意识到service 不在支持 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
Run Code Online (Sandbox Code Playgroud)
我正在运行上游 Kubernetes 1.12.5
我已经做了一些测试,但恐怕这是不可能的。根据文档API 支持两种类型的选择器:
kubeclt允许使用=,==和 等运算符!=。所以当你使用$ kubectl get pods --selector property1=dev,property2!=admin.
您想要应用的配置将在set-based选项中工作,因为它支持in,notin并且exists:
(生产、质量保证)中的环境
层级 notin(前端、后端)
分割
!分割
不幸的set-based是,仅由较新的资源支持,如Job, Deployment,Replica Set但Deamon Set不支持services。
即使您将 YAML 中的选择器设置为:
property2: !value
Run Code Online (Sandbox Code Playgroud)
在服务中,property2将没有任何价值。
Selector: property1=dev,property2=
由于附加信息,被识别AND为services.
由于我不知道您如何管理集群,我唯一可以建议的是重新定义标签以仅用AND作逻辑运算符。
| 归档时间: |
|
| 查看次数: |
2458 次 |
| 最近记录: |