我的系统中的Pod中正在运行以下部署:
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 1Gi
defaultRequest:
memory: 256Mi
type: Container
Kubernetes有时会重新启动此容器,并显示以下错误代码:
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
根据系统监视(Grafana),在Kubernetes发送终止信号时,该容器仅消耗约500Mb的内存。
此外,运行Pod的节点有很多可用内存(重新启动容器时,它使用的容量约为其容量的15%)。
那么Kubernetes是否有任何可能的原因来重新启动此容器?在过去的一周中,这已经发生了5-7次。
答案 0 :(得分:2)
LimitRange
k8s对象用于“限制范围是一种通过名称空间中的Pod或Container约束资源的策略”。因此,创建对象LimitRange
的名称空间中的对象消耗的资源超过了LimitRange
对象中指定的限制。要测试是否为真,请暂时删除LimitRange
,以检查您所有命名空间资源的实际使用情况,而不仅仅是一个吊舱。之后,将能够找到适合名称空间的最佳限制配置。
在k8s docs中,您可以找到很好的解释,以及很多有关如何限制名称空间限制的示例。