如何比较内存配额控制实现,openshift与docker

时间:2018-01-15 14:44:19

标签: openshift openshift-origin

我的客户问我,openshift是否可以提供与docker相同的内存使用控制,例如,docker run可以使用以下参数来控制运行容器时的内存使用情况:

--kernel-memory
--memory
--memory-reservation

当我在openshift中搜索相应的部分时,我发现ResoureQuota和LimitRange应该可以正常工作,但是如果pod声称自己将使用LimitRange使用100Mi内存,但实际上它会消耗500Mi内存呢?记忆仍然可以使用"非法",似乎docker with --memory可以更好地控制这种情况。

在openshift中,是否有任何控制实际内存使用的方法,而不是检查Pod在LimitRange中声明的内容或使用" oc set resources dc hello --requests = memory = 256Mi"?

祝你好运

Lan

2 个答案:

答案 0 :(得分:1)

至于我对Openshift的体验,我没有遇到过POD消耗了更多已配置的内存或CPU 的情况。 如果达到阈值,POD将自动被杀死并重新启动

您可以在部署配置中设置POD资源限制:

resources:
        limits:
          cpu: 750m
          memory: 1024Mi

可以在相应POD的指标部分监控资源:

enter image description here

除了单独的POD设置外,您还可以为POD中的每个容器定义自己的整体项目设置。

$ oc get limits
NAME
limits

    $ oc describe limits <NAME>
Name:           <NAME>
Namespace:      <NAME_SPACE>
Type            Resource        Min     Max     Default Request Default Limit   Max Limit/Request Ratio
----            --------        ---     ---     --------------- -------------   -----------------------
Pod             memory          256Mi   32Gi    -               -               -
Pod             cpu             125m    6400m   -               -               -
Container       cpu             125m    6400m   125m            750m            -
Container       memory          256Mi   32Gi    512Mi           1Gi             -

有关资源设置的更多信息,请参阅here

答案 1 :(得分:0)

如果您只使用--requests=memory=256Mi,则将QoS级别设置为&#34; burstable&#34;,这意味着pod可以请求至少256Mi内存而没有上限,除非达到项目配额。如果要限制pod内存,请改用--limit=memory=256Mi