【问题标题】:Can I have Kubernetes shut down pods that reach certain RAM percentage?我可以让 Kubernetes 关闭达到特定 RAM 百分比的 Pod 吗?
【发布时间】:2021-11-17 10:03:03
【问题描述】:

我正在处理某项服务,该服务不时会导致(看似无法解决的)内存泄漏。容器/pod 内部的 RAM 内存增长得很快并保持不变。 pod 很快变得无法使用,我非常想配置 Kubernetes 以标记这些 pod 以终止并停止路由到它们。

例如,如果 pod 内的 RAM 达到 80%,我是否可以配置 Kubernetes 来关闭这些 pod?

您可以分享的任何链接都会很棒。

谢谢

【问题讨论】:

  • 您可以为 pod 设置资源限制。如果 pod 达到这个限制,它将被 kubernetes 杀死

标签: kubernetes google-kubernetes-engine


【解决方案1】:
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-ctr
    image: polinux/stress
    resources:
      limits:
        memory: "200Mi"

指定内存限制:resources:limits
当进程使用超过 200Mi 时,pod 会因为内存不足(OOM)而被杀死

【讨论】:

    【解决方案2】:

    可以在 pod 的每个容器上设置两种不同类型的 resource configurations

    它们是请求限制。

    请求定义了容器需要的最小资源量。

    如果您认为您的应用至少需要 256MB 内存才能运行,这就是请求值。

    应用程序可以使用超过 256MB,但 Kubernetes 保证容器至少有 256MB。

    另一方面,限制定义了容器可以消耗的最大资源量。

    您的应用程序可能需要至少 256MB 的内存,但您可能需要确保它不会消耗超过 1GB 的内存。这是您的限制。

    您可以将请求增加到限制范围,即 1GB 内存。如果请求超过限制,Kubernetes 会停止或限制 pod。

    例如:

    resources:
      limits:
        memory: 1 GB
      requests:
        memory: 256 MB
    

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 2022-11-11
      • 2017-12-27
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 2020-03-21
      • 2011-03-15
      相关资源
      最近更新 更多