首页 > 解决方案 > 如何在 Kubernetes 中部署具有不同资源限制的 daemonset?

问题描述

我需要在 Kubernetes 中部署 daemonset,但是不同节点中的每个 pod 对不同硬件类型需要不同的内存和 cpu 请求。

标签: kubernetesdaemonset

解决方案


既然你问了这么一个不精确的问题,你会得到一个不精确的答案——用更多细节更新你的问题,你会得到一个更好的答案

使用 helm 可以帮助您解决这个问题,因为清单受 golang 模板评估的影响;因此:

# values.yaml
instance_type: m5.large
---
# templates/deployment.yaml
  {{ $mem := "2Gi" }}
  {{ if (hasSuffix .Values.instance_type ".xlarge") }}
  {{   $mem = "4Gi"
  {{ end }}
  spec:
    template:
      spec:
        containers:
        - resources:
             requests:
               memory: {{ $mem }}

然后安装它,用户可以选择他们拥有的节点大小:

$ helm install --set instance_type=r5.xlarge my-release my/chart

相反,如果您的意思是您有一个混合集 if 实例,并且您希望您的一个Deployment 根据其目标节点上可用的空间来调整其内存设置,那么您将需要一个Mutating Admission Webhook,它可以使用任何业务规则您想调整resource:即将计划的 Pod 的字段以根据您认为合适的方式设置其资源。您可以使用垂直 pod 自动缩放器作为灵感来源,因为它们在不同的时间尺度上做大致相同的事情


推荐阅读