热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Kubernetes:获取容器内的实际资源限制

如何解决《Kubernetes:获取容器内的实际资源限制》经验,为你挑选了1个好方法。

有没有一种方法可以获取容器内部的实际资源(CPU和内存)约束?

假设该节点具有4个核心,但是我的容器仅通过资源请求/限制配置了1个核心,因此它实际上使用了1个核心,但仍从/ proc / cpuinfo中看到4个核心。我想根据应用程序实际可以使用的内核数来确定线程数。我对记忆也很感兴趣。



1> Janos Lenart..:

简短答案

您可以使用Downward API访问资源请求和限制。为此,不需要服务帐户或对apiserver的任何其他访问。

例:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-resourcefieldref
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox:1.24
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_CPU_REQUEST MY_CPU_LIMIT;
          printenv MY_MEM_REQUEST MY_MEM_LIMIT;
          sleep 10;
        done;
      resources:
        requests:
          memory: "32Mi"
          cpu: "125m"
        limits:
          memory: "64Mi"
          cpu: "250m"
      env:
        - name: MY_CPU_REQUEST
          valueFrom:
            resourceFieldRef:
              containerName: test-container
              resource: requests.cpu
              divisor: "1m"
        - name: MY_CPU_LIMIT
          valueFrom:
            resourceFieldRef:
              containerName: test-container
              resource: limits.cpu
              divisor: "1m"
        - name: MY_MEM_REQUEST
          valueFrom:
            resourceFieldRef:
              containerName: test-container
              resource: requests.memory
        - name: MY_MEM_LIMIT
          valueFrom:
            resourceFieldRef:
              containerName: test-container
              resource: limits.memory
  restartPolicy: Never

测试:

$ kubectl logs dapi-envars-resourcefieldref
125
250
33554432
67108864

长答案

Kubernetes将资源请求和限制转换为内核原语。也可以从Pod中访问该信息,但是要复杂得多,而且也不能移植(Window $节点,有人吗?)

CPU请求/限制::/sys/fs/cgroup/cpu/kubepods/..QOS../podXX/cpu.*cpu.shares(这是请求;除以1024得到核心百分比),cpu.cfs_period_us,cpu.cfs_quota_us(将cfs_quota_us除以cfs_period_us以获得相对于1个核心的cpu限制)

内存限制: /sys/fs/cgroup/memory/kubepods/..QOS../podXX/memory.limit_in_bytes

内存请求:这很棘手。它会转换为的oom调整得分/proc/..PID../oom_score_adj。祝你好运,计算回内存请求量:)

简短的回答很棒,对吗?;)


推荐阅读
author-avatar
在路上的老兵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有