一、静态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相关推荐

  1. Kubernetes1.7 新特性:日志审计变化

    背景概念 出于安全方面的考虑,Kubernetes提供了日志审计记录,用来记录不同普通用户.管理员和系统中各个组件的日志信息. Kubernetes日志审计是Kube-apiserver组件的一部分功 ...

  2. kubernetes1.4新特性:支持两种新的卷插件

    背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes, ...

  3. Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器

    背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一 ...

  4. Kubernetes1.4新特性前瞻:设置JOB执行计划

    (一)  核心概念 Kubernetes在新版中会新增了一个设置JOB执行计划的功能,在1.3中已经可以初见端倪了,从进度上来看会在1.4版本中进行发布,下面我们先睹为快. Kubernetes通过这 ...

  5. Kubernetes1.5新特性(一):Kubelet API增加认证和授权能力

    2019独角兽企业重金招聘Python工程师标准>>> 背景介绍 在Kubernetes1.5中,对于kubelet新增加了几个同认证/授权相关的几个启动参数,分别是: 认证相关参数 ...

  6. JDK5.0新特性系列---目录

    JDK5.0新特性系列---目录 JDK5.0新特性系列---1.自动装箱和拆箱 JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列--- ...

  7. ABP Framework 5.0 RC.1 新特性和变更说明

    .Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 5 ...

  8. 黑马程序员————高新技术————JDK1.5新特性

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! JDK1.5新特性 一:静态导入 l  Import语 ...

  9. C#未来新特性:静态委托和函数指针

    C#每发布一次新版本,都会增加一些底层相关的新特性, 这些特性对大多数商业程序来说并没什么实际用处,主要用于那些对性能有很高要求的代码,如图形处理.机器学习以及数学工具包,等等. 接下来的两个提案,主 ...

最新文章

  1. 自己动手生成评论RSS
  2. linux下find(文件查找)命令的用法总结
  3. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短
  4. HJ106 字符逆序
  5. html禁止手机页面放大缩小
  6. NYOJ 267 郁闷的C小加(二)
  7. 【机器学习基础】超全汇总!机器学习常用术语词汇表(建议收藏)
  8. 华为故事,李一男,任正非
  9. 使用SAP iRPA Studio创建的本地项目,如何部署到SAP云平台上?
  10. 怎么批量选择目标_全日制专升本一次可以报几个学校?目标院校应该怎么选择?...
  11. GET POST方法长度限制
  12. mysql age字段类型_mysql 列类型
  13. 微信小程序实现仿美团外卖饿了么左右联动页面
  14. 电脑正常联网,提示无法登录微信
  15. 少有人走的路--心智成熟的旅程
  16. uni.app开发物联网小程序
  17. 关于python数字的一种下划线奇怪写法
  18. Python 接入飞书端口API - 实现共享空间的Excel更新
  19. arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片
  20. 把时间当作朋友 读后感

热门文章

  1. 关于盒子大小和文字大小相同时,里面的文字会超出文本框的问题
  2. 05【继承、抽象、权限修饰符、final】
  3. 博士申请 | 新加坡国立大学金玥明组招收医学影像处理方向全奖博士/博后/RA
  4. Java、JSP俱乐部会员管理设计与实现
  5. 腾讯API安全公测重磅开启,你的API安全吗?
  6. 分享一种超简单的js解密方法
  7. 清华向勇《操作系统》学习笔记13:I/O子系统
  8. 淘宝比你自己还了解你?大数据分析就是这么神奇
  9. 国外被疯赞的一篇神文:你该增加人生技能了(转)
  10. mysql smallint范围_mysql中的int smallint 取值范围