Kubernetes 为 Namespace 配置CPU和内存配额

  • 1 Before you begin
  • 2 创建名字空间
  • 3 创建ResourceQuota对象
  • 4 创建一个Pod
  • 5 尝试创建第二个Pod
  • 6 讨论
  • 7 练习环境的清理
  • 8 What’s next
    • 8.1 对于集群管理员
    • 8.2 对于应用开发者

本任务展示了如何为某一名字空间内运行的所有容器配置CPU和内存配额。配额可以通过 ResourceQuota对象设置。

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.

请确保您集群中的每个节点(node)拥有至少1GiB内存。

创建名字空间

创建一个单独的名字空间,以便于隔离您在本练习中创建的资源与集群的其他资源。

kubectl create namespace quota-mem-cpu-example

创建ResourceQuota对象

以下展示了ResourceQuota对象的配置文件内容:

quota-mem-cpu.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:name: mem-cpu-demo
spec:hard:requests.cpu: "1"requests.memory: 1Gilimits.cpu: "2"limits.memory: 2Gi

下面,首先创建ResourceQuota对象

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

然后可以通过以下命令查看ResourceQuota对象的详细信息:

kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml

以上刚创建的ResourceQuota对象将在quota-mem-cpu-example名字空间中添加以下限制:

  • 每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。
  • 所有容器的内存请求总额不得超过1 GiB。
  • 所有容器的内存限额总额不得超过2 GiB。
  • 所有容器的CPU请求总额不得超过1 CPU。
  • 所有容器的CPU限额总额不得超过2 CPU。

创建一个Pod

以下展示了一个Pod的配置文件内容:

quota-mem-cpu-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: quota-mem-cpu-demo
spec:containers:- name: quota-mem-cpu-demo-ctrimage: nginxresources:limits:memory: "800Mi"cpu: "800m" requests:memory: "600Mi"cpu: "400m"

通过以下命令创建这个Pod:

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

运行以下命令验证这个Pod的容器已经运行:

kubectl get pod quota-mem-cpu-demo --namespace=quota-mem-cpu-example

然后再次查看ResourceQuota对象的详细信息:

kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml

除了配额本身信息外,上述命令还显示了目前配额中有多少已经被使用。可以看到,刚才创建的Pod的内存以及 CPU的请求和限额并没有超出配额。

status:hard:limits.cpu: "2"limits.memory: 2Girequests.cpu: "1"requests.memory: 1Giused:limits.cpu: 800mlimits.memory: 800Mirequests.cpu: 400mrequests.memory: 600Mi

尝试创建第二个Pod

第二个Pod的配置文件如下所示:

quota-mem-cpu-pod-2.yaml 
apiVersion: v1
kind: Pod
metadata:name: quota-mem-cpu-demo-2
spec:containers:- name: quota-mem-cpu-demo-2-ctrimage: redisresources:limits:memory: "1Gi"cpu: "800m"      requests:memory: "700Mi"cpu: "400m"

在配置文件中,您可以看到第二个Pod的内存请求是700 MiB。可以注意到,如果创建第二个Pod, 目前的内存使用量加上新的内存请求已经超出了当前名字空间的内存请求配额。即600 MiB + 700 MiB > 1 GiB。

下面尝试创建第二个Pod:

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

以下命令输出显示第二个Pod并没有创建成功。错误信息说明了如果创建第二个Pod,内存请求总额将超出名字空间的内存请求配额。

Error from server (Forbidden): error when creating "docs/tasks/administer-cluster/quota-mem-cpu-pod-2.yaml":
pods "quota-mem-cpu-demo-2" is forbidden: exceeded quota: mem-cpu-demo,
requested: requests.memory=700Mi,used: requests.memory=600Mi, limited: requests.memory=1Gi

讨论

在本练习中您已经看到,使用ResourceQuota可以限制一个名字空间中所运行的所有容器的内存请求总额。 当然,也可以通过ResourceQuota限制所有容器的内存限额、CPU请求以及CPU限额。

如果您仅仅想限制单个容器的上述各项指标,而非名字空间中所有容器的,请使用LimitRange。

练习环境的清理

通过删除名字空间即可完成环境清理:

kubectl delete namespace quota-mem-cpu-example

What’s next

对于集群管理员

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

对于应用开发者

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

译者:xingzhou / 原文链接

Kubernetes 为 Namespace 配置CPU和内存配额相关推荐

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

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

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

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

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

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

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

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

  5. kubernetes限制pod的cpu和内存

    kubernetes限制pod的cpu和内存 1.在创建容器的配置文件中指定 spec:containers:- image: gcr.io/google_containers/serve_hostn ...

  6. ubuntu16.04笔记本查看电脑配置(CPU,显卡,内存,硬盘)

    备注:从网页粘贴的,地址请点击此处 一.按Ctrl+Alt+T键,调出终端窗口在窗口中输入[free -m]按enter键执行然后会在下面第一行的[mem:]后面的[total]下面显示你的内存总大小 ...

  7. 云服务器怎么配置cpu与内存搭配

    很多朋友在购买云服务器之前都会搜服务器一般用几核才够用,因为服务器现在配置很多.低到1核2G.2核4G.高到16核32G.32核64G.甚至某些云服务器可以做到256核5120G这种神奇配置.那么购买 ...

  8. kvm调整配置cpu、内存

    一.调小内存:(ps:调小内存可以动态实现,不用关机) 1.产看当前配置: # virsh dominfo vm | grep memory Max memory: 8388608 KiB Used ...

  9. kubernetes: CPU 和内存单位解释、metric-server接口调用

    目录 Pod 和 容器的资源请求和限制 CPU 的含义 内存的含义 kubernetes: 全面的CPU 和内存单位解释 CPU单位:n 通过kubernetes-client/java类库获取met ...

最新文章

  1. python六十二: 析构方法
  2. CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!—-揭秘令牌桶
  3. 约翰诺曼超级计算机研究中心,第433章 拉泽尔松教授的决定_学霸的黑科技系统_晨星LL作品_du00...
  4. 数据库智能运维高级探索与最佳实践
  5. Oracle分组取前n条记录
  6. Halcon PDF文档(hdevelop_users_guide)学习总结之六——Halcon如何导出C++代码
  7. AcWing 868. 筛质数(欧拉筛模板)
  8. Navicat Mac版中如何使用搜索筛选
  9. 高数 | 【多元函数微分学】多元函数求极限方法总结
  10. 百度杯”CTF比赛(十二月场)
  11. 马云重构阿里:或分拆成30家公司 整合3家上市
  12. Docker教程(二):docker常用命令
  13. 2014高考英语听力,男约女终于成功了
  14. (OJ)Java多线程-子弹射击
  15. NVIDIA CUDA各版本下载链接(更新至2019-12-11,包含最新10.2版本)
  16. WIFI基础知识-2.4GZH的信号为什么比5GHZ的信号好
  17. 即插即涨2-3%!AC-FPN:用于目标检测的注意力引导上下文的特征金字塔网络
  18. python(10): Signal
  19. 百度地图API进行网页地点展示
  20. 01组团队项目-Alpha冲刺-4/6

热门文章

  1. NET脏字过滤算法 收藏
  2. Magento: 左栏筛选条件 Select Box / Button / Dropdown List on Layered Navigation
  3. 流量劫持能有多大危害?
  4. iOS7应用开发6:UINavigation, UITabbar控制器的多态性
  5. magento 首页添加最新产品 Display new products on the home page
  6. codeigniter 辅助函数 - 敏感词过滤
  7. Python关于中文字符前面的u(转载)
  8. 【AI视野·今日NLP 自然语言处理论文速览 第一期】Fri, 4 Jun 2021
  9. 媒体控件的播放暂停继续与停止 winform
  10. 班级的每日作业和任务目标