Docker 什么定义了豆荚中的容器';见';在他们的限制和要求方面?

Docker 什么定义了豆荚中的容器';见';在他们的限制和要求方面?,docker,kubernetes,containers,Docker,Kubernetes,Containers,当Pod中的容器在Kubernetes集群中创建并设置了限制和请求集时,该容器如何知道这些限制和请求?在容器内运行的应用程序是否能够获得这些限制和请求,例如,如果限制和请求特别低,是否能够减少它使用的资源量 Kubernetes版本:1.8 容器运行时:Docker Docker版本:1.12.6 与tl;博士 cat /sys/fs/cgroup/memory/memory.limit_in_bytes 将显示限制,然后假定requests值是容器开始时分配的内存,但我需要验证该假设 我个

当Pod中的容器在Kubernetes集群中创建并设置了限制和请求集时,该容器如何知道这些限制和请求?在容器内运行的应用程序是否能够获得这些限制和请求,例如,如果限制和请求特别低,是否能够减少它使用的资源量

  • Kubernetes版本:1.8
  • 容器运行时:Docker
  • Docker版本:1.12.6
与tl;博士

cat /sys/fs/cgroup/memory/memory.limit_in_bytes
将显示限制,然后假定
requests
值是容器开始时分配的内存,但我需要验证该假设

我个人在尝试应用
限制时甚至不理解该单元:cpu:
,因此我肯定不知道如何用tl验证该值;博士

cat /sys/fs/cgroup/memory/memory.limit_in_bytes
将显示限制,然后假定
requests
值是容器开始时分配的内存,但我需要验证该假设

我个人甚至在尝试应用
限制:cpu:
时不理解该单元,因此我肯定不知道如何验证该值

创建Pod时,Kubernetes调度程序会选择一个节点供Pod运行。每个节点对于每种资源类型都有一个最大容量:它可以为POD提供的CPU和内存量。调度程序确保,对于每种资源类型,调度容器的资源请求之和小于节点的容量。请注意,尽管节点上的实际内存或CPU资源使用率非常低,但如果容量检查失败,调度程序仍然拒绝在节点上放置Pod。这可以防止在稍后资源使用率增加时(例如,在请求速率的每日峰值期间)节点上出现资源短缺

如果容器超过其内存限制,它可能会被终止。如果它是可重启的,kubelet将重启它,就像任何其他类型的运行时故障一样

如果容器超出其内存请求,则每当节点内存不足时,其Pod很可能会被逐出

容器可能被允许或不被允许在较长时间内超过其CPU限制。但是,它不会因CPU过度使用而被杀死

要获取有关资源使用情况的信息,需要为集群配置一个监控系统(heapster、prometheus等)。可以根据此数据手动或自动调整请求和限制

自动化此过程的一种可能方法是创建一个专用的微服务,该服务将监视资源使用情况(通过从监控器收集和分析数据),生成具有新限制的清单,并发送请求kube api以重新创建POD

创建Pod时,Kubernetes调度程序会选择一个节点供Pod运行。每个节点对于每种资源类型都有一个最大容量:它可以为POD提供的CPU和内存量。调度程序确保,对于每种资源类型,调度容器的资源请求之和小于节点的容量。请注意,尽管节点上的实际内存或CPU资源使用率非常低,但如果容量检查失败,调度程序仍然拒绝在节点上放置Pod。这可以防止在稍后资源使用率增加时(例如,在请求速率的每日峰值期间)节点上出现资源短缺

如果容器超过其内存限制,它可能会被终止。如果它是可重启的,kubelet将重启它,就像任何其他类型的运行时故障一样

如果容器超出其内存请求,则每当节点内存不足时,其Pod很可能会被逐出

容器可能被允许或不被允许在较长时间内超过其CPU限制。但是,它不会因CPU过度使用而被杀死

要获取有关资源使用情况的信息,需要为集群配置一个监控系统(heapster、prometheus等)。可以根据此数据手动或自动调整请求和限制


自动化这个过程的一个可能方法是创建一个专用的微服务,它将监视资源的使用情况(通过从监视器收集和分析数据),生成具有新限制的清单,并发送请求kube api以重新创建POD。

可用于将请求和限制作为环境变量传递给容器进程

可用于将请求和限制作为环境变量传递给容器进程

这并不能真正回答问题;这只是对Kubernetes中的请求和限制如何工作的描述,而不是容器进程是否知道其请求和限制这并不能真正回答问题;这只是对Kubernetes中的请求和限制如何工作的描述,而不是容器进程是否知道其请求和限制