在k8s上平均分配容器到每个Node中

场景说明:每个Node上只运行一个某应用的容器。假设有8台服务器,当某个应用伸缩到8个容器的时候,这些容器要平均地分布到8台服务器中,每台服务器上都有一个容器,不能出现某服务器上有多个,某服务器上一个都没有的情况。
k8s默认的容器调度策略是满足不了的,虽然它会尽量往负载低的服务器上调度,但难免会出现一台服务器上有重复的容器。此时可通过nodeAffinitypodAntiAffinity配合使用来实现。示例如下:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: type
                operator: NotIn
                values:
                  - virtual-kubelet
              - key: k8s.aliyun.com
                operator: NotIn
                values:
                  - 'true'
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app
                operator: In
                values:
                  - tongji-app
          topologyKey: kubernetes.io/hostname

podAntiAffinity中的values即应用的标签名。
更多关于pod的调度可以看这里:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值