容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额

  • 1 Before you begin
  • 2 创建一个命名空间
  • 3 创建一个LimitRange和一个Pod
  • 4 如果你指定了一个容器的限额值,但未指定请求值,会发生什么?
  • 5 如果你指定了一个容器的请求值,未指定限额值,会发生什么?
  • 6 默认CPU限额和请求的动机
  • 7 What’s next
    • 7.1 对于集群管理员
    • 7.2 对于应用开发者

本页展示了如何在命名空间中配置默认的CPU请求与限额。
一个Kubernetes集群能细分为不同的命名空间。如果在一个拥有默认CPU限额的命名空间中创建一个容器,则这个容器不需要指定它自己的CPU限额, 它会被分配这个默认的CPU限额值。Kubernetes在某些条件下才会分配默认的CPU请求值,这个将在本主题的后面解释。

Before you begin

You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube.

创建一个命名空间

创建一个命名空间为了使你在本练习中创建的资源与集群的其它部分相隔离。

kubectl create namespace default-cpu-example

创建一个LimitRange和一个Pod

以下是一个LimitRange对象的配置文件。这个配置中指定了一个默认的CPU请求和一个默认的CPU限额。

cpu-defaults.yaml 
apiVersion: v1
kind: LimitRange
metadata:name: cpu-limit-range
spec:limits:- default:cpu: 1defaultRequest:cpu: 0.5type: Container

在这个defaule-cpu-example命名空间中创建这个LimitRange:

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/cpu-defaults.yaml --namespace=default-cpu-example

现在如果在这个defaule-cpu-example命名空间中创建一个容器,则该容器不需要指定它自己的CPU请求和CPU限额, 该容器会被赋予一个默认的CPU请求值0.5和一个默认的CPU限额值1。

cpu-defaults-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: default-cpu-demo
spec:containers:- name: default-cpu-demo-ctrimage: nginx

创建Pod

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/cpu-defaults-pod.yaml --namespace=default-cpu-example

查看该Pod的配置:

kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example

输出显示该Pod的容器含有一个CPU请求值500m和一个CPU限额值1。 这些是由LimitRange指定的默认值。

containers:
- image: nginximagePullPolicy: Alwaysname: default-cpu-demo-ctrresources:limits:cpu: "1"requests:cpu: 500m

如果你指定了一个容器的限额值,但未指定请求值,会发生什么?

以下是一个含有一个容器的Pod的配置文件。该容器指定了一个CPU限额,但未指定请求:

cpu-defaults-pod-2.yaml 
apiVersion: v1
kind: Pod
metadata:name: default-cpu-demo-2
spec:containers:- name: default-cpu-demo-2-ctrimage: nginxresources:limits:cpu: "1"

创建该Pod:

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/cpu-defaults-pod-2.yaml --namespace=default-cpu-example

查看该Pod的配置:

kubectl get pod cpu-limit-no-request --output=yaml --namespace=default-cpu-example

输出展示该容器的CPU请求值与它的限额值相等。
注意该容器并未被赋予这个默认的CPU请求值0.5。

resources:limits:cpu: "1"requests:cpu: "1"

如果你指定了一个容器的请求值,未指定限额值,会发生什么?

以下是含有一个容器的Pod的配置文件。该容器指定了一个CPU请求,但未指定一个限额:

cpu-defaults-pod-3.yaml 
apiVersion: v1
kind: Pod
metadata:name: default-cpu-demo-3
spec:containers:- name: default-cpu-demo-3-ctrimage: nginxresources:requests:cpu: "0.75"

创建该Pod

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/cpu-defaults-pod-3.yaml --namespace=default-cpu-example

输出显示该容器的CPU请求值被设置为该容器配置文件中指定的值。该容器的CPU限额设置为1,这是该命名空间的默认CPU的限额值。

resources:limits:cpu: "1"requests:cpu: 750m

默认CPU限额和请求的动机

如果你的命名空间含有资源配额, 它是有帮助的对于设置一个CPU限额的默认值。 以下是资源配额对命名空间施加的两个限制:

  • 在命名空间运行的每一个容器必须含有它自己的CPU限额。
  • 在命名空间中所有容器使用的CPU总量不能超出指定的限额。

如果一个容器没有指定它自己的CPU限额,它将被赋予默认的限额值,然后它可以在被配额限制的命名空间中运行。

What’s next

对于集群管理员

  • 为 Namespace 设置最小和最大内存限制
  • 为 Namespace 配置默认内存请求和限制
  • 为 Namespace 配置默认 CPU 请求和限制
  • 为 Namespace 配置最小和最大 CPU 限制
  • 为 Namespace 配置内存和 CPU 配额
  • 为 Namespace 配置 Pod 配额
  • 为 API 对象配置配额

对于应用开发者

  • 为容器和 Pod 分配内存资源
  • 为容器和 Pod 分配 CPU 资源
  • 为 Pod 配置服务质量

译者:jianzhangbjz / 原文链接

容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额相关推荐

  1. 容器编排技术 -- Kubernetes 为 Namespace 配置最小和最大 CPU 限制

    容器编排技术 -- Kubernetes 为 Namespace 配置最小和最大 CPU 限制 1 Before you begin 2 创建一个 namespace 3 创建一个 LimitRang ...

  2. 容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额

    容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 创建一个Po ...

  3. 容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额

    容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额 1 Before you begin 2 创建命名空间 3 创建 LimitRange 和 Pod 4 如果 ...

  4. 容器编排技术 -- Kubernetes 为 Namespace 配置Pod配额

    容器编排技术 -- Kubernetes 为 Namespace 配置Pod配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 练习环境的清理 5 ...

  5. 容器编排技术 -- Kubernetes 为 Namespace 设置最小和最大内存限制

    容器编排技术 -- Kubernetes 为 Namespace 设置最小和最大内存限制 1 Before you begin 2 创建一个 namespace 3 创建一个 LimitRange 和 ...

  6. 容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet

    容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet 1 Before you begin 2 重新配置集群活动节点上的 Kubelet 2.1 基本工作流程概览 2.2 ...

  7. 容器编排技术 -- Kubernetes 给 Pod 配置服务质量等级

    容器编排技术 -- Kubernetes 给 Pod 配置服务质量等级 1 Before you begin 2 QoS 等级 3 创建一个命名空间 4 创建一个 Pod 并分配 QoS 等级为 Gu ...

  8. 容器编排技术 -- Kubernetes 中查看Pods和Nodes

    容器编排技术 -- Kubernetes 中查看Pods和Nodes 1 Kubernetes Pod 2 Pod概述 3 Node 4 Node概述 5 Troubleshooting with k ...

  9. 容器编排技术 -- Kubernetes kubectl create namespace 命令详解

    容器编排技术 -- Kubernetes kubectl create namespace 命令详解 1 kubectl create namespace 2 语法 3 示例 4 Flags kube ...

最新文章

  1. “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法
  2. 在腾讯云上创建您的SQL Cluster(3)
  3. 独家 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)
  4. 【HDOJ】4579 Random Walk
  5. NDK交叉编译及so库导入Android项目
  6. oracle启动报参数不正确,【oracle】模拟故障 - 参数修改导致无法启动oracle
  7. oracle11g-expdp-impdp步骤
  8. python graphviz工具的使用
  9. java中interrupt,interrupted和isInterrupted的区别
  10. 阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军
  11. logit回归怎么看显著性_spss logistic回归分析结果如何分析
  12. 回答阿里云实名认证常见问题
  13. python中的df是什么意思_python df遍历的N种方式
  14. LazyAn-—《合成大西瓜》怎么做?原版游戏还原
  15. 光耦=发光二极管+光敏三极管
  16. MySQL 空间分析函数
  17. pgsql处理文档类型数据_PostgreSQL 基本数据类型及常用SQL 函数操作
  18. 用C#实现竖列转盘游戏
  19. 2016中国联通电信4K智能机顶盒白皮书
  20. Python批量格式化文件名为000xxx.jpg

热门文章

  1. Node.js: 如何继承 events 自定义事件及触发函数
  2. Magento: 获取客户信息 Get Customer’s Full Name, First Name, Last Name and Email Addres
  3. 使用SourceTree
  4. 解决URL出现%E2%80%8E(Zero-Width Space)
  5. JS操作iframe里的dom
  6. BrainFuck——C实现BrainFuck解释器
  7. 系统日志之logger命令
  8. 如何区分iptables的PREROUTING和POSTROUTING链
  9. 空洞卷积(dilated convolution)
  10. 【今日CV 计算机视觉论文速览】Wed, 20 Mar 2019