文档解读 | K8S中的Pod和容器配置(二)
接上篇,如何给运行在Kubernetes Pod中的容器分配CPU和RAM资源?
给运行在Kubernetes Pod中的容器分配CPU和RAM资源
开始之前
必须有一个Kubernetes集群,和一个能和集群沟通的kubectl命令行工具。如果你还没有集群,你可以用Minikube建立一个集群。
给容器分配CPU和RAM资源
当创建一个Pod的时候,你可以为运行在Pod中的容器请求CPU和RAM资源。你还可以设置CPU和RAM资源的限制。请求CPU和RAM资源,在配置文件里面包含resources:rquests字段。设置CPU和RAM限制包含resource:limits字段。如果节点上具有足够的CPU和RAM资源可用于所有容器要求的CPU和RAM总和,Kubernetes将把Pod调度在上面。同样当容器运行在节点上时,Kubernetes不允许容器消耗的CPU和RAM资源超出指定的容器的限制。如果容器超出他的RAM限制,他将结束。如果CPU超出限制,他将成为CPU节流的候选者。
在本次练习,创建一个运行了一个容器的Pod。Pod的配置文件请求250milicpu和64 mebibytes RAM。同样设置上线为1cpu和128 mebibytes RAM。下面是这个Pod的配置文件:
apiVersion: v1
kind: Pod
metadata:
name: cpu-ram-demo
spec:
containers:
– name: cpu-ram-demo-container
image: gcr.io/google-samples/node-hello:1.0
resources:
requests:
memory: “64Mi”
cpu: “250m”
limits:
memory: “128Mi”
cpu: “1”
1.创建一个Pod基于YAML配置文件:
kubectl create -f http://k8s.io/docs/tasks/configure-pod-container/cpu-ram.yaml
2.显示pod信息:
kubectl describe pod cpu-ram-demo
输出类似于:
Name: cpu-ram-demo
…
Containers:
cpu-ram-demo-container:
…
Limits:
cpu: 1
memory: 128Mi
Requests:
cpu: 250m
memory: 64Mi
了解CPU和RAM单元
CPU资源以cpus为单位。允许小数值。你可以用后缀m来表示mili。例如100m cpu等同于100 milicpu,意思是0.1cpu。
RAM资源以bytes为单位。你可以将RAM表示为纯整数或具有这些后缀之一的定点整数: E, P, T, G, M, K, Ei, Pi, Ti, Gi, Mi, Ki。例如,以下代表大约相同的数值:
128974848, 129e6, 129M , 123Mi
如果你不确定需要请求多少资源,首先你可以发布应用不指定资源,使用资源监控来确定合适的值。
如果容器超出他的RAM限制,它将从内存不足状态死亡。你可以指定比你期望稍高点的值来提高可靠性。
如果指定了请求(request),则保证了可以使用的资源。有关资源的限制和请求可以参考Resource QoS。
如果你没有指定限制和请求
如果没有指定RAM限制,Kubernetes对于容器可以使用的RAM没有上线。容器可以使用所在机器所有的可用RAM资源。类似,如果没有指定CPU限制,Kubernetes对于CPU资源没有限制,容器可以使用所在机器所有的可用CPU资源。
默认的限制应用参照默认命名空间的限制范围。你可以使用kubectl describe limitrange limits来查看默认的限制。
关于为什么要指定限制的相信信息,参考 Setting Pod CPU and Memory Limits。
关于如果没有指定CPU和RAM资源请求的发生情况,参考Resource Requests and Limits of Pod and Container。
本文转移K8S技术社区-文档解读 | K8S中的Pod和容器配置(二)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
文档解读 | K8S中的Pod和容器配置(一)
如何给运行在Kubernetes(K8S) Pod中的容器定义环境变量、命令行和参数? 给运行在Kubernetes Pod中的容器定义环境变量 开始之前 必须有一个Kubernets集群,和一个能和集群沟通的kubectl命令行工具。如果你还没有集群,你可以用Minikube建立一个集群。 给容器定义环境变量 当你建立了一个Pod,你可以给你运行在Pod中的容器设置环境变量。设置环境变量包含两个字段env和envFrom在配置文件中。 在本次练习中,建了一个运行了一个container的Pod。这个配置文件给这个Pod定义了一个名为DEMO_GREETING值为”Hello from the environment”的环境变量。下面是这个Pod的配置文件: apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: – name: envar-demo-container image: gcr.io/google-samples/n...
- 下一篇
Kubernetes上基于Istio体验云原生应用实践 资料下载
Service Mesh被认为是继Kubernetes之后当前最为热门技术方向,在过去一年中已成为容器行业的排名第一的流行词。Service Mesh可以极大地简化用户体验,并将大中型企业的Kubernetes落地引领进下一个全新阶段,被业界普遍认为是新一代的微服务架构的最佳技术设计。 从容器技术发展来看,Istio与K8S是一种互补的关系,弥补了K8S在微服务的连接、管理和监控方面的短板,它与K8S的结合最终帮助企业用户在容器和微服务领域达到双剑合璧的效果。 本次Topic中将分享在阿里云容器服务Kubernetes上如何使用Istio进行云原生应用的实践,没有及时观看直播的小伙伴们,小编为你们整理了最全的活动资料,快快领取~讲师介绍:阿里云容器服务团队高级技术专家 王夕宁 直播视频全程链接:https://yq.aliyun.co
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果