Pod概念
Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(container)、存储资源(volume)、一个独立的网络IP以及管理控制容器运行方式的策略选项。
非官方
自助式Pod 不是被控制器管理的Pod 一旦死亡 无法拉起来也无法重新创建Pod副本
控制器管理的Pod 是被控制器管理的Pod
Pod基本概念
只要有Pod Pause就会启动
在同一个Pod的端口不能重复
共用Pause的网络栈
共享存储卷
Pod控制器类型
RC/RS/D
滚动更新
Deployment会创建RS 然后创建Pod
如果滚动更新 会新建一个RS 启动V2 第一个RS退出一个
StatefullSet
主要解决有状态服务问题(对应Depoyments和ReplicaSets是为无状态服务设计)应用场景如下
1 稳定的持久化存储。即Pod重新调度后还是能访问相同的持久化数据基于PVC
2稳定的网络标识,即Pod重新调度后PodName和HostName不变
3有序部署,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行
4有序收缩,有序删除 是有序的反向
DaemonSet
DaemonSet确保全部或者一些(污点不被调度)Node上运行一个Pod。
当有Node加入集群时,也会为他们新增一个Pod。
当有Node从集群中移除时,这些Pod也会被回收。
删除DaemonSet将会删除他创造的所有Pod
使用DaemonSet的一些典型用法
1运行集群存储Daemon,例如在每个Node上运行gluserd,ceph
2在每个Node上运行日志收集工具
3在每个Node上运行监控daemon
Job,CronJob
Job负责批处理任务,即仅执行一次的任务,他保证批处理任务的一个或多个Pod结束
CronJob 管理基于时间的Job:
在给定的时间只执行一次
周期性的在给定的时间点运行
服务发现
同一组POD想通过同一个Service访问 要么有同一个标签 要么被同一个deploeyment创建
service收集Pod通过标签选择的
客户端通过访问service的端口和IP从而访问到Pod