k8s 集群中Pod 拓扑均衡调度

为了保持服务的稳定性,我们通常会采用打散的方式分布Pod,从而避免单点故障,针对重要业务,我们可以采用k8s的拓扑平均分配调度pod,打散业务。

我们先看下面的例子

k8s集群里面有3个Node

NAME                 STATUS   ROLES                  AGE     VERSION
worker-1             Ready                     2m58s   v1.21.1
worker-2             Ready                     2m58s   v1.21.1
worker-3             Ready                     2m58s   v1.21.1

创建Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dummy
  namespace: dummy
spec:
  replicas: 3
  selector:
    matchLabels:
      type: dummy
  template:
    metadata:
      labels:
        type: dummy
    spec:
      topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: kubernetes.io/hostname
          whenUnsatisfiable: ScheduleAnyway
          labelSelector:
            matchLabels:
              type: dummy    
      containers:
      - name: pause
        image: k8s.gcr.io/pause:3.1

其中

  • maxSkew:代表最大的不均衡值,如果设置成1 代表,每个节点的pod个数相差不超过 1
  • topologyKey:作为拓扑调度的key
  • whenUnsatisfiable为 whenUnsatisfiable代表当不满足拓扑调度条件的时候,仍然继续调度

可以看到每个节点上面的pod 的个数非常平均。

k8s 集群中Pod 拓扑均衡调度

拓扑   集群   k8s
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章