我的客户问我,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
答案 0 :(得分: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。
答案 1 :(得分:0)
如果您只使用--requests=memory=256Mi
,则将QoS级别设置为&#34; burstable&#34;,这意味着pod可以请求至少256Mi内存而没有上限,除非达到项目配额。如果要限制pod内存,请改用--limit=memory=256Mi
。