我对kubernetes引擎还很陌生,并且有一个用例似乎无法正常工作。我希望每个吊舱仅在一个专用节点中运行,然后自动缩放群集。
目前,我尝试使用DaemonSet运行每个Pod,并创建了一个针对Nodepool的HorizontalPodAutoscaler。
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实用程序测试自动缩放过程,但节点数保持不变。我在这里缺少什么吗?我可以在用例中使用其他组件吗?
答案 0 :(得分:1)
HorizontalPodAutoscaler用于根据指标限制缩放容器。它不适用于守护程序。
Daemonset在集群中的每个节点上部署一个Pod。如果要扩展守护程序集,则需要扩展节点池。 HorizontalPodAutoscaler最适合用于自动缩放部署对象。在您的情况下,请将守护程序对象更改为部署对象或扩展节点池。 Google云端平台支持自动缩放节点。不确定其他云提供商。您需要查看云提供商的文档
答案 1 :(得分:0)
Daemonset是一个控制器,它为每个具有选择器匹配表达式的节点部署一个POD,每个节点上运行的POD不能超过一个。您应该看看另一个控制器,我看不到您想要部署哪种类型的应用程序,我建议:
关于HPA的重要一件事是您必须拥有metrics enabled,否则对帐循环将无法监视所需的缩放操作。