设为首页 收藏本站
查看: 976|回复: 0

[经验分享] Kubernetes1.6新特性

[复制链接]

尚未签到

发表于 2018-1-5 19:39:55 | 显示全部楼层 |阅读模式
一、静态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服务质量一共有三个级别,如下图所示:
DSC0000.jpg

  


  这三个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掉。如下图所示:
DSC0001.jpg

  


  kubelet可以提前监控到节点上资源减少,并且及时做出控制操作,可以停止某些POD,然后让调度来在其他节点上启动这些POD,这样就可以保证节点上资源足够POD使用。

三、1.6阿尔法版本新特性-不回收静态POD
  在kubernetes1.6第一个阿尔法版本中提供了一个新特性,不回收静态POD。
  在代码eviction_manager.go中可以看到
  

for i := range activePods {  

  pod := activePods
  

  
+            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集群某个节点上。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-432013-1-1.html 上篇帖子: docker学习笔记(k8s) 《转》 下篇帖子: k8s入门系列之guestbook快速部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表