Kubernetes基于时间计划的资源请求/限制

2wnc66cl  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(92)

我们可以为Pod定义内存和CPU请求/限制,这不是问题。是否可以根据时间计划定义不同的内存和cpu请求/限制?我想到了这样的事情:

8AM - 8PM
 - CPU request 0.5, limit 2
 - RAM request 1Gi, limit 2Gi

8:01PM - 7:59AM
 - CPU request 0.1, limit 0.5
 - RAM request 500Mi, limit 1Gi

字符串
它可以帮助我们根据例如在白天高性能实时处理,而在晚上低性能相同的吊舱。你解决了类似的挑战吗?

14ifxucb

14ifxucb1#

这不是Kubernetes核心所支持的。
这已经讨论过很多次了(例如herethere
我可以看到两种方法来解决这个问题:

  • 使用cronJob和嵌入kubectl二进制文件的映像来修补/修补资源
apiVersion: batch/v2alpha1
kind: CronJob
metadata:
  name: patch-memory
spec:
  schedule: "0 8 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: scale
            image: <your-repo>/kubectl:<tag>
            command:
            - kubectl.sh
            - kubectl
            - patch
            - deployment
            - <your deployment>
            - --patch 
            - '{"spec": {"template": {"spec": {"containers": [{"name": "<your container>": {"resources": {"requests": {"memory": "XXXMi" }}}}]}}}}'
          restartPolicy: OnFailure

字符串

  • 使用自定义控制器,如this onethis one或其他你可以在网上找到的。我自己没有使用这些项目的经验。

你也可以考虑使用Horizontal Pod Autoscaling:这允许您根据资源使用情况在deploymentstatefulsets上添加更多pod
你也可以使用VPA。这将根据资源的使用情况动态地设置工作负载上的资源请求/限制-而不是像您提到的那样采用cron风格

相关问题