K8S篇之Pod中的资源限额
最佳答案 问答题库1038位专家为你答疑解惑
1、Pod定义requests、limits相关参数
在k8s中,全面限制一个应用及其中的pod所能占用的资源配额,具体可以使用下面三种方式:
1、定义每个pod的资源配额相关参数,如CPU/memory的request、limits;
2、自动为每个没有定义资源配额的pod添加资源配额模板(LimitRange);
3、从总量上限制一个租户(namespace)应用所能使用的资源配额(ResourceQuota)
pod的request、limits是指pod中所有容器的request、limits的总和,对于没有设置request、limits的容器,该值为0或者按照集群配置的默认值计算;
LimiteRang正是用于解决了没有设置配额参数的pod的默认资源配额问题;
REsourceQuota则约束租户的资源总量配额问题。
2、pod定义requests、limits
pod可以定义资源配额的相关参数:
spec.container[].resources.requests.cpu:容器初始要求的CPU数量
spec.container[].resources.limits.cpu:容器所能使用的最大CPU数量
spec.container[].resources.requests.memory:容器初始要求的内存数量
spec.container[].resources.limits.memory:容器所能使用的最大内存数量
默认情况下,pod中只写requests(cpu和memory写其中一个或两个都写)不写limits,则默认没有最大资源限制;
pod中只写limits.cpu、limits.memory,不写requests.cpu、requests.memory,默认的requests的cpu、memory其值等于对应的limits的cpu、memory值;
pod中只写limits的cpu或memory其中的一个,则requests对应的也等价于limits的对应的一个值。如只写limits.cpu,则requests.cpu值=limits.cpu值,limits.memory没写则requests.memory也没有值。
3、requests和limits背后的机制
如果容器运行时是docker,那么pod的requests和limits归根结底还是要转换为docker run启动容器的参数,对应如下:
spec.container[].resources.requests.cpu docker run --cpu-shares
spec.container[].resources.limits.cpu docker run --cpu-period
spec.container[].resources.requests.memory 无,请求内存只会作为调度器的参考,不会作为如何参数传递给docker run
spec.container[].resources.limits.memory docker run --memory
查看节点资源情况
// 可以查看节点的计算资源总量和已分配量
kubectl describe node master01
pod使用request、limits示例:
kubectl create ns nginx #创建命名空间
例如:
vim nginx-test.yaml #创建pod,pod包含2个容器
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-testnamespace: nginx-test
spec:
........spec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginx-test-1resources: #定义资源请求、资源限制requests: #资源请求memory: "20Mi" #内存请求cpu: "30m" #CPU请求limits: #资源限制memory: "50Mi" #内存限制cpu: "50m" #CPU限制ports:- containerPort: 80name: nginx- image: tomcatimagePullPolicy: IfNotPresentname: tomcat-test-2resources: #定义资源请求、资源限制requests: #资源请求memory: "10Mi" #内存请求cpu: "20m" #CPU请求limits: #资源限制memory: "40Mi" #内存限制cpu: "40m" #CPU限制ports:- containerPort: 8080name: tomcat
** 查看pod占用的资源情况**
[root@master ~]# kubectl describe node node2 | grep -C10 nginx-test-7d448999cb-mxq6sNamespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age--------- ---- ------------ ---------- --------------- ------------- ----nginx-test nginx-test-7d448999cb-mxq6s 50m (1%) 90m (2%) 30Mi (1%) 90Mi (4%) 6m31s
**注:**可以看到,我们创建的pod一共请求50m的CPU,30Mi的内存,最大CPU限制为90m,最大内存限制为90Mi
99%的人还看了
相似问题
- 【Vue3】解决Vue打包后上传服务器 资源路径加载错误
- 外部 prometheus监控k8s集群资源
- Unity下载资源且保存
- SpringBoot——静态资源及原理
- 【备忘录】Docker容器、镜像删除与资源清理命令
- 事关Django的静态资源目录设置(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)
- unity unityWebRequest 通过http下载服务器资源
- 安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)
- 报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home
- K8S篇之Pod中的资源限额
猜你感兴趣
版权申明
本文"K8S篇之Pod中的资源限额":http://eshow365.cn/6-38179-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: C++(20):lambda捕获变长模板
- 下一篇: 基于JavaWeb的网上体育商城的设计与实现