共享CPU限制集装箱荚内

问题描述 投票:1回答:2

在Openshift / Kubernetes,我想测试我的应用程序(POD)是由2个集装箱的表现如何对不同数量的内核的机器。该机我手头上有32个内核,但我想,以限制那些到4,8,16 ...

一种方法是使用在容器资源限制,但是这将迫使我设置每个容器上的比例;相反,我要为整个吊舱资源限制,让容器上的CPU竞争。我的感觉是,这应该是可能的,因为容器可能属于同一cgroup中,并因此分享调度POV极限。

将在吊舱LimitRange做什么我期待的? LimitRange是项目/命名空间-scoped,有没有办法实现与更细的粒度(只对某些豆荚)一样吗?

kubernetes resources openshift throttling cgroups
2个回答
2
投票

documentation:资源的限制只适用于容器级别。但是,您可以定义不同的requestslimits允许容器爆裂超出请求定义的数量。但这种带有其他的含义看到Quality of Service

这样做的原因是,一些资源,如内存不能被竞争有关,因为它适用于CPU。存储器是不足或过少。有一个在Kubernetes没有这样的东西共享RAM。 (如果你没有明确地调用相关systemcalls)

请问,该用例波德CPU内部的竞争是什么?


0
投票

如何有关控制K8S内部资源使用与资源配额集群。这应该使您能够通过您的吊舱专用命名空间里与kube_resourcequota监控指标的帮助下基准CPU /内存使用情况等LimitRange或直接与Container`s资源的限制和要求设置不同的条件下。

我的意思恰恰是设置类似的资源配额this之一:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "1"

运行与资源限制和要求荚:

 ...
 containers:
    - image: gcr.io/google-samples/hello-app:1.0
      imagePullPolicy: IfNotPresent
      name: hello-app
      ports:
      - containerPort: 8080
        protocol: TCP
      resources:
        limits:
          cpu: "1"
          memory: 800Mi
        requests:
          cpu: 900m
          memory: 600Mi 
  ...

而只是观察监视控制台荚如何执行*例如用普罗米修斯:

enter image description here

*绿色 - 表示由波德,红整体内存使用 - 固定/硬资源限制与ResourceQuota设置

我猜你选择减少线路之间的间隔,以避免过载的系统,并同时避免波德失败像这样的:

  status:
    message: 'Pod Node didn''t have enough resource: cpu, requested: 400, used: 893,
      capacity: 940'
    phase: Failed
    reason: OutOfcpu

当然,理想的是,如果该内存使用趋势进行叠加驾驶舱图表上与你感兴趣的一些其他自定义/性能监控指标。

© www.soinside.com 2019 - 2024. All rights reserved.