在Nodepool中自动缩放守护程序集

时间:2019-03-31 17:02:24

标签: kubernetes google-kubernetes-engine

我对kubernetes引擎还很陌生,并且有一个用例似乎无法正常工作。我希望每个吊舱仅在一个专用节点中运行,然后自动缩放群集。

目前,我尝试使用DaemonSet运行每个Pod,并创建了一个针对Nodepool的Horizo​​ntalPodAutoscaler。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: test
spec:
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: actions
        image: image_link
      nodeSelector:
        cloud.google.com/gke-nodepool: test
  updateStrategy:
    type: RollingUpdate
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: test
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: DaemonSet
    name: test
  minReplicas: 1
  maxReplicas: 2
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 80

然后,我使用Stress实用程序测试自动缩放过程,但节点数保持不变。我在这里缺少什么吗?我可以在用例中使用其他组件吗?

2 个答案:

答案 0 :(得分:1)

Horizo​​ntalPodAutoscaler用于根据指标限制缩放容器。它不适用于守护程序。

Daemonset在集群中的每个节点上部署一个Pod。如果要扩展守护程序集,则需要扩展节点池。 Horizo​​ntalPodAutoscaler最适合用于自动缩放部署对象。在您的情况下,请将守护程序对象更改为部署对象或扩展节点池。 Google云端平台支持自动缩放节点。不确定其他云提供商。您需要查看云提供商的文档

答案 1 :(得分:0)

Daemonset是一个控制器,它为每个具有选择器匹配表达式的节点部署一个POD,每个节点上运行的POD不能超过一个。您应该看看另一个控制器,我看不到您想要部署哪种类型的应用程序,我建议:

  • Deployment:如果要使用基于无状态的应用程序,该应用程序可以处理上下缩放而副本之间没有一致性
  • StatefulSet:如果您要使用基于状态的应用程序,则需要在扩展和数据一致性方面多加注意

关于HPA的重要一件事是您必须拥有metrics enabled,否则对帐循环将无法监视所需的缩放操作。