Kubernetes(k8s)1.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中可以看到
本文转自中文社区-Kubernetes(k8s)1.6新特性-不回收静态POD
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用YAML创建一个 Kubernetes Depolyment
在之前的文章中,我们已经提到过如何使用Kubernetes去创建资源。到目前为止,我们一直仅仅通过命令行去 执行,但是这里有一个更加简单有效的方式去创建资源:通过使用YAML创建一个配置文件。在这篇文章,我们将会关注YAML的工作方式以及如何使用YAML创建一个Kubernetes Pod,然后使用Kubernetes创建一个Depolyment。当然您如果是新手可以先了解Kubernetes上运行你的第一个容器。 YAML 基础 如果你正在做的事与很多软件领域相关,那么将很难不涉及到YAML,特别是Kubernetes,SDN,和OpenStack。YAML,它代表着另一种标志语言,或者YAML不是标志语言(取决于你问谁)而是特定配置类型基于人类可读的文本格式的信息,例如,在本文中,我们将会分开说说明YAML定义创建Pod和使用Kubernetes创建一个Depolyment。 使用YAML用于k8s的定义将给你一些好处,包括: 便捷性:你将不再需要添加大量的参数到命令行中执行命令 可维护性:YAML文件可以通过源头控制,可以跟踪每次的操作 灵活性:通过YAML你将可以创建比命令行更...
- 下一篇
看Kubernetes 1.5之后如何称霸容器编排管理界
2016 年 12 月, Kubernetes 1.5 的发布,上述 Linux 和 Windows 一起运行的梦想终于得以实现。 微软宣布支持 Kubernetes Kubernetes 眼下已成为众多容器管理系统核心——比如 CoreOS 公司的商务平台 Tectonic。最近,微 软也宣布已将 Kubernetes 整合到其公有云上。 “现在,我们支持 Kubernetes,它会比原来更加好用,并且宣布 Azure 容器服务的预发布版本,”Azure 的计算总监,Corey Sanders 在微软 Azure 发布的时候说道,“对 Kubernetes 本地有更高等级的支持,会为容器编排引擎提供了另外一个开源选择。” 微软也支持 Docker Swarm 和 Mesosphere 的 DC/OS,但是似乎 Kubernetes 更加有掌控容器编排界的趋势。随着事物的发展速度变快,Kubernetes 可能并非容器界的唯一一匹快马,但是它确实是很多厂商的选择。它的地位至此,值得深思。 开源软件公司 Red Hat 的高级产品经理,同时也是决定将 Red Hat 开源 OpenShi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程