【问题标题】:How to compare memory quota control implementation, openshift vs. docker如何比较内存配额控制实现,openshift 与 docker
【发布时间】:2018-01-15 14:44:18
【问题描述】:

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

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

当我在 openshift 中搜索相应的部分时,我发现 ResoureQuota 和 LimitRange 应该可以解决这个问题,但是如果一个 pod 声称自己将通过使用 LimitRange 使用 100Mi 内存但实际上它会消耗 500Mi 内存怎么办?内存仍然可以“非法”使用,似乎带有 --memory 的 docker 可以更好地控制这种情况。

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

最好的问候

【问题讨论】:

    标签: openshift openshift-origin


    【解决方案1】:

    我使用 Openshift 的经验而言,我还没有遇到过 POD 消耗了更多内存或配置的 CPU 的情况如果达到阈值,POD 会自动被杀死并重新启动

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

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

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

    除了单独的 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-22
        • 2022-06-13
        • 2016-06-04
        • 1970-01-01
        相关资源
        最近更新 更多