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将会被赋予GuaranteedQoS类型
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会自动设置为默认值.
创建一个会被赋予BurstableQoS类型的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
创建一个会被赋予BestEffortQoS类型的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
kubenetes之配置pod的QoS的更多相关文章
- (转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书
转:https://www.jianshu.com/p/530b3642c642 本章节展示了如何把密码秘钥等敏感数据安全的注入到Pod里面. 转换安全数据成base-64表示 假设你有两个秘密数据: ...
- 配置Pod的 /etc/hosts
某些情况下,DNS 或者其他的域名解析方法可能不太适用,您需要配置 /etc/hosts 文件,在Linux下是比较容易做到的,在 Kubernetes 中,可以通过 Pod 定义中的 hostAli ...
- kubenetes无法创建pod/创建RC时无法自动创建pod的问题
一.问题概述 问题1: 虽然每次通过yaml创建rc都显示成功了,但是 kubectl get pod却没显示任何的pod. 问题2: 直接通过yaml创建pod提示apixxx 问题3: 通过.js ...
- kubenetes创建一个pod应用
Pod是可以创建和管理Kubernetes计算的最小可部署单元.一个Pod代表着集群中运行的一个进程.每个pod都有一个唯一的ip. 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker) ...
- 解决 kubenetes无法创建pod No API token found for service account "default"
在master中 openssl genrsa -out /etc/kubernetes/serviceaccount.key 修改kube-apiserver.service添加参数 --servi ...
- 如何为k8s中的pod配置QoS等级?
1.概述 本文介绍如何为pod分配特定的QoS等级. 我们知道,在k8s的环境中,通过使用QoS等级来做决定,在资源紧张的时候,将哪些的pod进行驱逐,或者说如何对pod进行调度. OK,话不多说,让 ...
- Kubernetes 服务质量 Qos 解析 - Pod 资源 requests 和 limits 如何配置?
QoS是 Quality of Service 的缩写,即服务质量.为了实现资源被有效调度和分配的同时提高资源利用率,kubernetes针对不同服务质量的预期,通过 QoS(Quality of S ...
- K8s QoS Pod资源服务质量控制
Kubernetes 中如果一个 Node 节点上的 Pod 占用资源过多并且不断飙升导致 Node 节点资源不足,可能会导致为了保证节点可用,将容器被杀掉.在遇见这种情况时候,我们希望先杀掉那些不太 ...
- k8s QoS与pod驱逐
概述 QoS是Quality of Service的缩写,即服务质量.每个pod属于某一个QoS分类,而Kubernetes会根据pod的QoS级别来决定pod的调度.抢占调度和驱逐优先级,而且pod ...
随机推荐
- Java中的equals与==
package demo; public class Test { public static void main(String[] args) { String str1 = new String( ...
- Oracle PLSQL游标、游标变量的使用
参考文章:https://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实 ...
- MYSQL入门操作和常规DML、DDL、DQL使用
刷新权限,将某些权限从硬盘刷新到内存中(修改root密码自带隐式刷新权限操作) mysql> flush privileges; Query OK, 0 rows affected (0.00 ...
- 并发编程(二)--利用Process类开启进程、僵尸进程、孤儿进程、守护进程、互斥锁、队列与管道
一.multiprocessing模块 1.multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似. 2.mu ...
- Linux学习之路-基础入门 20191104
1.计算机组成 2.开发接口标准 ABI--(Application Binary Interface) ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动 ...
- Nginx 核心配置-根目录root指令与别名alias指令实战案例
Nginx 核心配置-根目录root指令与别名alias指令实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验环境说明 1>.虚拟机环境说明 [root@nod ...
- linux增加swap空间的方法小结
起因及背景 近期编译AOSP(android 10.0)是总是遇到内存溢出,查了半天,无果.猜测增加下swap空间大小是否能解决,随即尝试下,果然是如此. 当然,还有其他作法,比如直接增加主机的内存( ...
- POJ2239-Selecting Courses-(匈牙利算法)
题意:n门课,每门各自有t个开课时间,在不冲突的情况下选最多课. 题解:把周p第q节课转化为数值sum,表示在一周7*12节课中排第几节,用二分图最大匹配. #include<stdio.h&g ...
- Pandas | 22 时间差
时间差(Timedelta)是时间上的差异,以不同的单位来表示.例如:日,小时,分钟,秒.它们可以是正值,也可以是负值.可以使用各种参数创建Timedelta对象,如下所示 - 字符串 通过传递字符串 ...
- Linux中一些命令的区别
1. yum provides 和 yum search provides是在文件中查找软件,类似于rpm -qf: search是查找软件包或其描述的关键字. 2. gzip 和 bzip2 对 ...