【问题标题】:Is there any option in Kubernetes to run pod in a specific cgroup directory?Kubernetes 中是否有任何选项可以在特定的 cgroup 目录中运行 pod?
【发布时间】:2021-09-23 07:53:04
【问题描述】:

我正在尝试动态限制 pod 中每个容器的资源使用情况。对于 docker,我使用 --cgroup-parent 将容器放在特定的 cgroup 目录中。但是,在 Kubernetes 中,我没有找到任何可以执行此操作的选项。

【问题讨论】:

    标签: linux docker kubernetes minikube kubernetes-pod


    【解决方案1】:

    您可以使用Kubernetes支持的cgroupfs驱动。

    但也许您只想单独set the Pod and Container resources? Kubernetes 允许设置特定容器 as well 的限制,因此您可以拥有具有 500Mi RAM 的应用程序和具有 50Mi RAM (requests) 的日志,但如有必要,请将两者都扩展为 1Gi (limits):

    spec:
      containers:
      - name: app
        image: images.my-company.example/app:v4
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
      - name: log-aggregator
        image: images.my-company.example/log-aggregator:v6
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
    

    更新:

    正如David Maze 所述,您还可以使用自动缩放器,例如Vertical Pod Autoscaler,它将调整 Pod 资源。但为此,CustomResourceDefinition 是必需的,因此即使是集群的适当权限也可用于创建和部署 CRD(如果您的访问权限有限并且您需要联系集群管理员,则可能无法正常工作)。

    ...它将根据使用情况自动设置请求...它还将保持初始容器配置中指定的限制和请求之间的比率。

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: my-app-vpa
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind:       Deployment
        name:       my-app
      updatePolicy:
        updateMode: "Auto"
    

    甚至Horizontal autoscaling,以防您需要单独的实例应用程序(因此管理Pod计数)。

    【讨论】:

    • (...而vertical pod autoscaler 将尝试动态调整部署的资源约束以匹配现实,这听起来像是原始问题的目标。)
    • github.com/kubernetes/kubernetes/pull/26751,这是我正在寻找的功能,具有 Cgroup 层次结构。该团队确实表示他们实施了这一点。但是,我没有看到任何这样做的选择。
    • @ChhunSocheat 为此,您需要设置QoS,但它仍然不允许您在任何地方指定自定义路径。
    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 2021-04-26
    • 2021-02-14
    • 2020-10-24
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    相关资源
    最近更新 更多