【问题标题】:How to kill a docker container when it reaches set of memory usage or CPU limit如何在达到内存使用量或 CPU 限制时杀死 docker 容器
【发布时间】:2019-06-15 06:16:59
【问题描述】:

我有一个在 pod 中运行的 docker 容器,当它超过内存使用量或 CPU 限制时,我需要重新启动 pod/容器。如何在docker文件中配置

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    在构建 docker 时无法给出 CPU 和内存限制,并且无法在 Docker File 中进行配置。这是一个调度问题。您可以使用带有不同标志的 docker run 命令运行 docker 来控制资源。有关docker run 的控制标志,请参阅Docker Official Document

    由于您的问题被标记为kubernetes,因此有kubernetes 方式来限制您的资源。您可能想在那些deploymentpod yaml 的规范中添加resources。例如:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: your_deployment
      labels:
        app: your_app
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: your_app
        spec:
          containers:
          - name: your_container
            image: your_image
            resources:
              limits:
                cpu: "500m"
                memory: "128Mi"
              requests:
                cpu: "250m"
                memory: "64Mi"
            ...
    

    requests 影响 docker pod 在节点上的调度方式。 Memory limit 确定 docker 何时会因 OOM 而被杀死,cpu limit 确定如何限制容器 cpu 的使用(不会杀死 pod)。

    cpu 的含义因云服务提供商而异。更多信息请参考manage compute resources for Kubernetes

    【讨论】:

    • 对误导性答案投反对票。 “容器可能会或可能不会被允许长时间超过其 CPU 限制。但是,它不会因 CPU 使用过多而被杀死。”the official k8s doc 声明。
    • 此外,问题询问“如何在 docker 文件中配置它?”。所以请仔细阅读问题。
    • 感谢@WindyFields 的澄清和建议。将更新我的答案。
    猜你喜欢
    • 2016-08-24
    • 2017-04-04
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2020-12-28
    • 2018-01-11
    相关资源
    最近更新 更多