[转帖]kubernetes限制pod的cpu和内存

kubernetes,限制,pod,cpu,内存 · 浏览次数 : 0

小编点评

**apiVersion: v1kind: LimitRange** * **name:** mylimitsspec * **limits:** - max: cpu: \"2\" # 限制容器申请的最大 CPU数量为 2 个核 - min: cpu: 200m # 限制容器申请的最小 CPU数量为 200毫秒 - max: memory: 1Gi # 限制容器申请的最大内存为 1 gigabytes - min: memory: 6Mi # 限制容器申请的最小内存为 6 megabytes - type: Pod * **default:** - cpu: 300m # 默认请求的 CPU数量为 300 毫秒 - memory: 200Mi # 默认请求的内存为 200 美兆字节 * **max:** - cpu: \"2\" # 限制容器申请的最大 CPU数量为 2 个核 - memory: 1Gi # 限制容器申请的最大内存为 1 gigabytes

正文

http://www.5ityx.com/cate100/45070.html

 

 

kubernetes限制pod的cpu和内存

1、在创建容器的配置文件中指定

spec:
  containers:
  - image: gcr.io/google_containers/serve_hostname
    imagePullPolicy: Always
    name: kubernetes-serve-hostname
    resources:
      limits:
        cpu: "1"             #限制pod申请最大的cpu数量为1个cpu
        memory: 512Mi        #申请内存最大值
      requests:
        cpu: "0.5"           #pod申请的cpu数量为0.5个cpu
        memory: 400Mi        #申请内存的最小值

2、参数解释

requests
      requests用于schedule阶段,在调度pod保证所有pod的requests总和小于node能提供的计算能力
	  requests.cpu被转成docker的--cpu-shares参数,与cgroup cpu.shares功能相同
	  设置容器的cpu的相对权重
	  该参数在CPU资源不足时生效,根据容器requests.cpu的比例来分配cpu资源
	  CPU资源充足时,requests.cpu不会限制container占用的最大值,container可以独占CPU
	  requests.memory没有对应的docker参数,作为k8s调度依据
	  使用requests来设置各容器需要的最小资源
limits
	  limits限制运行时容器占用的资源
	  limits.cpu会被转换成docker的–cpu-quota参数。与cgroup cpu.cfs_quota_us功能相同
	  限制容器的最大CPU使用率
	  cpu.cfs_quota_us参数与cpu.cfs_period_us结合使用,后者设置时间周期
	  k8s将docker的–cpu-period参数设置100毫秒。对应着cgroup的cpu.cfs_period_us
	  limits.cpu的单位使用m,千分之一核
	  limits.memory会被转换成docker的–memory参数。用来限制容器使用的最大内存
	  当容器申请内存超过limits时会被终止

kubernetes限制pod的cpu和内存

默认的情况下, k8s不会限制pod的cpu和内存的, 也就是只要pod内应用需要, 完全可以占满宿主机的cpu和内存, 如果是这种情况, 当有大量的服务一起部署时, 相互之间是会相互影响的, 所以k8s也有相应的办法限制pod及里面容器的cpu和内存

准备工作

# 创建namespace xxx
kubectl create namespace xxx

# 下载官方提供的示例文件
wget https://k8s.io/docs/tasks/configure-pod-container/limits.yaml

# 内容如下
##############################
apiVersion: v1
kind: LimitRange
metadata:
  name: mylimits
spec:
  limits:
  - max:
      cpu: "2"
      memory: 1Gi
    min:
      cpu: 200m
      memory: 6Mi
    type: Pod

  - default:
      cpu: 300m
      memory: 200Mi
    defaultRequest:
      cpu: 200m
      memory: 100Mi
    max:
      cpu: "2"
      memory: 1Gi
    min:
      cpu: 100m
      memory: 3Mi
    type: Container
##############################

Pod相关限制

cpu最大限制2核, 最小200MHZ
内存最大限制1G, 最小6M

Container相关限制

cpu最大限制2核, 最小200MHZ
内存最大限制1G, 最小6M

默认启动cpu最大限制300MHZ, 内存最大限制200M

创建指定namespace资源限制

kubectl create -f limits.yaml -n xxx
# 查看创建好的资源限制
kubectl get limits -n xxx

之后在这个namespace下创建的Pod及容器都遵循这个规则

在创建容器的配置文件中指定

spec:
  containers:
  - image: gcr.io/google_containers/serve_hostname
    imagePullPolicy: Always
    name: kubernetes-serve-hostname
    resources:
      limits:
        cpu: "1"
        memory: 512Mi
      requests:
        cpu: "1"
        memory: 512Mi

如果按照这个规范, 相关的容器会限制在这个范围内

如果两者都配置?

有些时候, 我们大部分容器遵循一个规则就好, 但有一小部分有特殊需求, 这个时候, 小部分的就需要单独在容器的配置文件中指定. 这里有一点要注意的是, 单独在容器中配置的参数是不能大于指定的k8s资源限制, 否则会报错, 容器无法启动

PS: 对于一些java项目, 必须设

与[转帖]kubernetes限制pod的cpu和内存相似的内容:

[转帖]kubernetes限制pod的cpu和内存

http://www.5ityx.com/cate100/45070.html kubernetes限制pod的cpu和内存 1、在创建容器的配置文件中指定 spec: containers: - image: gcr.io/google_containers/serve_hostname imag

[转帖]轻松快速地调整Kubernetes的CPU和内存

在Kubernetes中分配和管理CPU和内存资源可能很棘手,但也很容易。本文,我将向你展示什么是Kubernetes资源和限制以及如何管理它们。 本文的目标是简单–如何帮助你快速调整项目中的Kubernetes资源信息,主要通过三种方式: 1. 为容器和 Pod 分配CPU和内存资源 2. Res

[转帖]Kubernetes Container、Pod、Namespace内存及CPU限制

https://www.cnblogs.com/punchlinux/p/16625590.html 阅读目录 配额类型 配额管理 Request 和 Limits limit-range配置: Pod未申请resource Pod申请资源 Quota资源限制 对每个命名空间的资源消耗总量提供限制(

[转帖]突破 etcd 限制!字节自研 K8s 存储 KubeBrain

https://my.oschina.net/u/5632822/blog/5596911 KubeBrain 是字节跳动针对 Kubernetes 元信息存储的使用需求,基于分布式 KV 存储引擎设计并实现的、可以取代 etcd 的元信息存储系统,目前支撑着线上超过 20,000 节点的超大规模

[转帖]Kubernetes 蓝绿发布、ABTest、滚动发布、灰度发布、金丝雀发布简介

蓝绿发布: 一些应用程序只需要部署一个新版本,并需要立即切到这个版本。因此,我们需要执行蓝/绿部署。在进行蓝/绿部署时,应用程序的一个新副本(绿)将与现有版本(蓝)一起部署。然后更新应用程序的入口/路由器以切换到新版本(绿)。然后,您需要等待旧(蓝)版本来完成所有发送给它的请求,但是大多数情况下,应

[转帖]kubernetes 资源管理概述

https://cizixs.com/2018/06/25/kubernetes-resource-management/ kubernetes 资源简介 什么是资源? 在 kubernetes 中,有两个基础但是非常重要的概念:node 和 pod。node 翻译成节点,是对集群资源的抽象;pod

[转帖]Kubernetes中的nodePort,targetPort,port的区别和意义(转)

原文https://blog.csdn.net/u013760355/article/details/70162242 https://blog.csdn.net/xinghun_4/article/details/50492041 1. nodePort 外部机器可访问的端口。 比如一个Web应用

[转帖]Kubernetes 集群无损升级实践

https://www.jianshu.com/p/182952a00efc 一、背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏。高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可能带来巨大的经济损失,

[转帖]Kubernetes 领进门 | 使用 Ingress-nginx 反向代理外部站点

https://cloud.tencent.com/developer/article/2187041 warning: 这篇文章距离上次修改已过204天,其中的内容可能已经有所变动。 本文旨在展示如何使用 ingress-nginx 作为反向代理加速集群外部服务原理。下文以反向代理 github

[转帖]kubernetes Tcp流量可视化

https://www.cnblogs.com/charlieroro/p/16771739.html 使用k8spacket和grafana的node graph插件可以查看kubernetes pod的TCP相关信息,如connection、bytes、和duration。下面是接收和响应的字节