kubenetes之配置pod的QoS
上节提到过,QoS影响pod的调度和驱离,本节讲解如何通过配置pod来使它自动被赋予一个QoS
实际上是pod的配置达到一定标准,则kubernetes会自动为其它添加一个QoS类
QoS类型
当一个pod被创建,kubernetes会赋予它们以下类型的值之一
Guaranteed
Burstable
BestEffor
并且上一节我们讲过,从上到下,他们的质量依次降低.
创建示例名称空间
kubectl create namespace qos-example
创建一个会被赋予Guaranteed
类型QoS的pod
满足以下条件的pod将会被赋予Guaranteed
QoS类型
pod中每个容器都必须包含内存请求和限制,并且值相等
pod中每个容器都必须包含cpu请求和限制,并且值相等
下面是一个pod中的container的配置.它包含内存请求和限制,并且值都等于200M;都包含cpu请求和限制,值都是700milliCPU
apiVersion: v1
kind: Pod
metadata:
name: qos-demo
namespace: qos-example
spec:
containers:
- name: qos-demo-ctr
image: nginx
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"
我们创建它
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod.yaml --namespace=qos-example
我们来查看它的信息
kubectl get pod qos-demo --namespace=qos-example --output=yaml
spec:
containers:
...
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
qosClass: Guaranteed
输出信息显示kubernetes给它了一个Guaranteed
类型的QoS.同时也验证了它的内存请求与限制相同,cpu请求与限制也相同.
请注意,如果pod仅声明了内存限制,而没声明内存请求,则kubernetes会自动赋予它与限制相同的内存请求.对于cpu也是这样的.
还要注意的是前面我们讲过
LimitRange
会自动赋予默认值,但是本篇我们并没有设置LimitRange,因此以上行为是kubernetes的默认行为,而非由LimitRange
超作用.同时,即便设置了LimitRange,当仅设置了限制的时候,kubernetes也会自动将请求设置为与限制一样的值,而不是默认值.当然,当仅仅设置了请求而没设置限制,kubernetes在没有LimitRange的情况下为会有自动行为,当有LimitRange会自动设置为默认值.
创建一个会被赋予Burstable
QoS类型的pod
当符合以下条件时,一个pod会被赋予Burstable类型的QoS
Pod不符合
Guaranteed
类型的QoS要求pod至少设置了内存或者cpu请任一
以下是配置文件
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-2
namespace: qos-example
spec:
containers:
- name: qos-demo-2-ctr
image: nginx
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
创建pod
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-2.yaml --namespace=qos-example
查看它的信息
kubectl get pod qos-demo-2 --namespace=qos-example --output=yaml
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: qos-demo-2-ctr
resources:
limits:
memory: 200Mi
requests:
memory: 100Mi
...
qosClass: Burstable
输出信息显示kubernetes给它了一个Burstable
类型的QoS
创建一个会被赋予BestEffort
QoS类型的pod
一个pod即没有内存限制或请求也没有cpu限制或请求,则会被赋予BestEffort
以上可以翻译为pod的资源里没有任何关于cpu和内存的配置.
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-3
namespace: qos-example
spec:
containers:
- name: qos-demo-3-ctr
image: nginx
创建它
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-3.yaml --namespace=qos-example
查看信息
kubectl get pod qos-demo-3 --namespace=qos-example --output=yaml
spec:
containers:
...
resources: {}
...
qosClass: BestEffort
创建一个包含两个容器的pod
以下配置的pod包含两个容器,其中一个声明了内存限制为200M.另一个则没有声明任何请求或者限制
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-4
namespace: qos-example
spec:
containers:
- name: qos-demo-4-ctr-1
image: nginx
resources:
requests:
memory: "200Mi"
- name: qos-demo-4-ctr-2
image: redis
创建后查看输出信息
spec:
containers:
...
name: qos-demo-4-ctr-1
resources:
requests:
memory: 200Mi
...
name: qos-demo-4-ctr-2
resources: {}
...
qosClass: Burstable
最新文章
- Web中的XHRHttpRequest
- XmlSerializer的使用
- deep learning 练习1 线性回归练习
- Azure MySQL PaaS (2) MySQL PaaS修改时区
- 【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】
- 建立开发板与PC机之间的nfs服务器
- Analyzing The Papers Behind Facebook's Computer Vision Approach
- ASP.NET MVC的处理管线
- React Native开发环境搭建
- go学习资料及优秀博文
- .NET开发邮件发送功能
- postgres-xl 集体搭建(2)
- 远程推送-----iOS
- CodeForces832-B. Petya and Exam
- timeCache.go
- [Swift]LeetCode617. 合并二叉树 | Merge Two Binary Trees
- CY7C68013 USB接口相机开发记录 - 第三天:固件修改
- char * p = ";abc";与const char *p = ";abc";
- windows上xshell6的安装
- Django - Python3 常用命令
热门文章
- pip requirements.txt
- volume create: k8s-volume: failed: Host 172.31.182.142 is not in 'Peer in Cluster' state
- django2外键,F表达式,Q表达式
- eclipse 工作空间配置UTF-8编码格式
- pansas 绘制定制的箱线图
- @TableName(mybatis-plus中的注解)
- Java多线程编程核心技术-第2章-对象及变量的并发访问-读书笔记
- Java String语法
- [RN] React Native 自定义 底部 弹出 选择框 实现
- Test of String