nodeAffinity配置报错got "array", expected "map"

网友投稿 337 2022-10-24

nodeAffinity配置报错got "array", expected "map"

测试pod和node的反亲和性

#保证每个节点上不超过两个redis的pod,并且优先部署在可用区az2和az3中 apiVersion: apps/v1 kind: Deployment metadata: name: redis-cache spec: selector: matchLabels: app: store replicas: 2 template: metadata: labels: app: store spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - store topologyKey: "kubernetes.io/hostname" nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: matchExpressions: #关于pod的matchExpressions是多个条件必须同时满足才会调度 - key: topology.kubernetes.io/zone operator: In values: - az1 matchExpressions: #关于pod的matchExpressions是多个条件必须同时满足才会调度 - key: topology.kubernetes.io/region operator: In values: - east imagePullSecrets: - name: willregistry containers: - name: redis-server image: harbor.yunhw.com/localpublic/redis --- #保证每个节点上不超过两个nginx的pod,并且要跟redis的pod部署在相同节点上 apiVersion: apps/v1 kind: Deployment metadata: name: web-server spec: selector: matchLabels: app: web-store replicas: 3 template: metadata: labels: app: web-store spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: #requiredDuringSchedulingIgnoredDuringExecution - labelSelector: matchExpressions: - key: app operator: In values: - web-store topologyKey: "kubernetes.io/hostname" podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - store topologyKey: "kubernetes.io/hostname" imagePullSecrets: - name: willregistry containers: - name: web-app image: harbor.yunhw.com/localpublic/nginx

出现如下报错

[root@k8s-master01 nodeAndPodAffinity]# k create -f podAffnityTest1.yaml error: error validating "podAffnityTest1.yaml": error validating data: ValidationError(Deployment.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution): invalid type for io.k8s.api.core.v1.NodeSelector: got "array", expected "map"; if you choose to ignore these errors, turn validation off with --validate=false[root@k8s-master01 nodeAndPodAffinity]#

看了半天才发现 - nodeSelectorTerms:这里多了一个短杠

nodeAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - nodeSelectorTerms:                 matchExpressions:   #关于pod的matchExpressions是多个条件必须同时满足才会调度              - key: topology.kubernetes.io/zone                operator: In                values:                - az1              matchExpressions:   #这里这个matchExpressions多余了,只写一个就行了,因为一个matchExpressions就可以配置多个key              - key: topology.kubernetes.io/region                operator: In                values:                - east

修改后的nodeAffinity部分为:

nodeAffinity:          requiredDuringSchedulingIgnoredDuringExecution:            nodeSelectorTerms:            - matchExpressions:   #关于pod的matchExpressions是多个条件必须同时满足才会调度              - key: topology.kubernetes.io/zone           #保证pod被调度到zone:az1的节点上                operator: In                values:                 - az1              - key: topology.kubernetes.io/region   #保证pod被调度到region:east的节点上去                operator: In                values:                - east

重新测试则顺利创建并调度成功。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:k8s控制器
下一篇:飞桨框架高层API 十行代码搞定深度学习
相关文章

 发表评论

暂时没有评论,来抢沙发吧~