Kubernetes1.6新特性-不回收静态POD
一、静态POD介绍
在Kubernetes中有一个DaemonSet类型的POD,这种类型的POD可以在某个节点上长期运行,这种类型的POD就是静态POD。
静态POD直接由某个节点上的kubelet程序进行管理,不需要api server介入,静态POD也不需要关联任何RC,完全是由kubelet程序来监控,当kubelet发现静态POD停止掉的时候,重新启动静态POD。
二、Kubernetes回收策略
当kubernetes集群中某个节点上可用资源比较小时,kubernetes提供了资源回收策略来保证节点上POD正常运行。因为如果节点上的内存或者CPU资源耗尽时,这个节点上运行的POD就会变成不稳定。
Kubernetes通过kubelet来进行回收策略控制,保证节点上POD在节点资源比较小时可以稳定运行。
Kubelet提供QoS服务质量管理,支持系统级别的OOM控制。
在Kubernetes中,POD的QoS服务质量一共有三个级别,如下图所示:
这三个QoS级别介绍,可以看下面表格:
QoS级别 |
QoS介绍 |
BestEffort |
POD中的所有容器都没有指定CPU和内存的requests和limits,那么这个POD的QoS就是BestEffort级别 |
Burstable |
POD中只要有一个容器,这个容器requests和limits的设置同其他容器设置的不一致,那么这个POD的QoS就是Burstable级别 |
Guaranteed |
POD中所有容器都必须统一设置了limits,并且设置参数都一致,如果有一个容器要设置requests,那么所有容器都要设置,并设置参数同limits一致,那么这个POD的QoS就是Guaranteed级别 |
对于kubernetes来说,通过cgroup就可以给POD设置QoS级别,当资源不够使用时,先kill优先级低的POD,在实际使用时,是通过OOM(Out of Memory)分数值来实现的,OOM分数值从0到1000。OOM分数值是根据OOM_ADJ参数计算出来的,对于Guaranteed级别的POD,OOM_ADJ参数设置成了-998,对于BestEffort级别的POD,OOM_ADJ参数设置成了1000,对于Burstable级别的POD,OOM_ADJ参数取值从2到999,对于kube保留的资源,比如kubelet,OOM_ADJ参数设置成了-999。OOM_ADJ参数设置的越大,通过OOM_ADJ参数计算出来的OOM分数越高,OOM分数越高,这个POD的优先级就越低,在出现资源竞争的时候,就越早被kill掉,对于OOM_ADJ参数是-999的代表kubernetes永远不会因为OOM而被kill掉。如下图所示:
kubelet可以提前监控到节点上资源减少,并且及时做出控制操作,可以停止某些POD,然后让调度来在其他节点上启动这些POD,这样就可以保证节点上资源足够POD使用。
三、1.6阿尔法版本新特性-不回收静态POD
在kubernetes1.6第一个阿尔法版本中提供了一个新特性,不回收静态POD。
在代码eviction_manager.go中可以看到
for i := range activePods {pod := activePods[i]+ ifkubepod.IsStaticPod(pod) {+ //The eviction manager doesn't evict static pods. To stop a static+ //pod, the admin needs to remove the manifest from kubelet's+ //--config directory.+ //TODO(39124): This is a short term fix, we can't assume static pods+ //are always well behaved.+ glog.Infof("evictionmanager: NOT evicting static pod %v", pod.Name)+ continue+ }status := v1.PodStatus{Phase: v1.PodFailed,Message: fmt.Sprintf(message,resourceToReclaim),
如果判断POD属于静态POD,那么跳过处理步骤,通过这种方式来保证静态POD只能运行在对应的kubernetes集群某个节点上。
Kubernetes1.6新特性-不回收静态POD相关推荐
- Kubernetes1.7 新特性:日志审计变化
背景概念 出于安全方面的考虑,Kubernetes提供了日志审计记录,用来记录不同普通用户.管理员和系统中各个组件的日志信息. Kubernetes日志审计是Kube-apiserver组件的一部分功 ...
- kubernetes1.4新特性:支持两种新的卷插件
背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes, ...
- Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器
背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一 ...
- Kubernetes1.4新特性前瞻:设置JOB执行计划
(一) 核心概念 Kubernetes在新版中会新增了一个设置JOB执行计划的功能,在1.3中已经可以初见端倪了,从进度上来看会在1.4版本中进行发布,下面我们先睹为快. Kubernetes通过这 ...
- Kubernetes1.5新特性(一):Kubelet API增加认证和授权能力
2019独角兽企业重金招聘Python工程师标准>>> 背景介绍 在Kubernetes1.5中,对于kubelet新增加了几个同认证/授权相关的几个启动参数,分别是: 认证相关参数 ...
- JDK5.0新特性系列---目录
JDK5.0新特性系列---目录 JDK5.0新特性系列---1.自动装箱和拆箱 JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列--- ...
- ABP Framework 5.0 RC.1 新特性和变更说明
.Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 5 ...
- 黑马程序员————高新技术————JDK1.5新特性
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! JDK1.5新特性 一:静态导入 l Import语 ...
- C#未来新特性:静态委托和函数指针
C#每发布一次新版本,都会增加一些底层相关的新特性, 这些特性对大多数商业程序来说并没什么实际用处,主要用于那些对性能有很高要求的代码,如图形处理.机器学习以及数学工具包,等等. 接下来的两个提案,主 ...
最新文章
- 自己动手生成评论RSS
- linux下find(文件查找)命令的用法总结
- PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短
- HJ106 字符逆序
- html禁止手机页面放大缩小
- NYOJ 267 郁闷的C小加(二)
- 【机器学习基础】超全汇总!机器学习常用术语词汇表(建议收藏)
- 华为故事,李一男,任正非
- 使用SAP iRPA Studio创建的本地项目,如何部署到SAP云平台上?
- 怎么批量选择目标_全日制专升本一次可以报几个学校?目标院校应该怎么选择?...
- GET POST方法长度限制
- mysql age字段类型_mysql 列类型
- 微信小程序实现仿美团外卖饿了么左右联动页面
- 电脑正常联网,提示无法登录微信
- 少有人走的路--心智成熟的旅程
- uni.app开发物联网小程序
- 关于python数字的一种下划线奇怪写法
- Python 接入飞书端口API - 实现共享空间的Excel更新
- arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片
- 把时间当作朋友 读后感
热门文章
- 关于盒子大小和文字大小相同时,里面的文字会超出文本框的问题
- 05【继承、抽象、权限修饰符、final】
- 博士申请 | 新加坡国立大学金玥明组招收医学影像处理方向全奖博士/博后/RA
- Java、JSP俱乐部会员管理设计与实现
- 腾讯API安全公测重磅开启,你的API安全吗?
- 分享一种超简单的js解密方法
- 清华向勇《操作系统》学习笔记13:I/O子系统
- 淘宝比你自己还了解你?大数据分析就是这么神奇
- 国外被疯赞的一篇神文:你该增加人生技能了(转)
- mysql smallint范围_mysql中的int smallint 取值范围