微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

k8s——2.Pod概念

Pod的分类:自主式Pod和控制器管理的Pod

pod的特点:

1.一个pod中可以由多个容器,但是只要运行pod,一个叫pause的容器就会被启动

2.pod中的其他容器可以共享pause这个容器的网络站和存储,也代表在同一个pod里,容器的端口不能冲突

 

控制器管理的Pod

多种控制器介绍:

①RelicationController:用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动吸收。

在新版本的kubenetes中建议使用@R_502_3163@来取代RelicationController

②@R_502_3163@:跟RelicationController没有本质的不同,只是名字不一样,并且@R_502_3163@支持集合式的selector(因为创建Pod时,会被打标签),但是RS不支持滚动更新,Deployment支持,并且还可以回滚

③Deployment:虽然@R_502_3163@可以独立使用,但是一般建议使用Deployment来自动管理@R_502_3163@,这样就无需担心跟其他机制的不兼容问题(比如@R_502_3163@不支持rolling-update,但Deployment支持),

Deployment创建时,会去创建一个RS,当滚动更新后,会有一个新的RS,老的RS就会停用,但是回滚时,老的RS会重新启用

 

 

HPA:仅适用于Deployment和@R_502_3163@,在V1版本中仅支持根据Pod的cpu利用率扩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容

下图意思是,HPA会去监控Pod的资源利用率,当利用率大于80%时,会去新建新的Pod,直到达到最大值,当新建到第三个时,利用率达不到80%了,就不会去新建了

 

 

StatefulSet:是为了解决有状态服务的问题(对应Deployment和@R_502_3163@是为无状态服务而设计),其应用场景包括

 ①稳定的持久化储存,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现

 ②稳定的网络标志,即Pod重新调度后其Podname和Hostname不变,基于Headless Service来(即没有Cluster IP 的Service)实现

 ③有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行(即从0到N-1,在下一个Pod运行之前的Pod都必须是Running和Ready状态),基于init containers实现

 ④有序收缩,有序删除(即从N-1到0)

 

DaemonSet:确保全部(或者一些)Node上运行一个Pod的副本,当有Node加入集群时,也会为它们新增一个Pod,当有Node从集群移除时,这些Pod也会被回收,删除DaemonSet将会删除它创建的所有Pod

使用DaemonSet的一些典型用法

①运行集群存储daemon,例如在每个Node上运行glusterd,ceph

②在每个Node上运行日志收集daemon,例如fluentd,logstash

③在每个Node上运行监控daemon,例如Prometheus,Node Exporter

 

Job:是负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或者多个Pod成功结束

Cron Job管理基于时间的的Job,即:在给定时间点只运行一次 

                 周期性的在给定时间点运行

 

 

服务发现

service收集Pod是通过标签去选择到的,service有自己的一个IP+端口,那个客户端就能访问到service,间接访问到这些Pod,并且有个轮询机制

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐