K8S集群学习记录03_基础概念及控制器简介
K8S集群学习记录03Pod概念只要有pod,pod中的pause容器就会被创建启动;pause容器是pod的根容器,1.初始化网络栈、挂载网络卷,即pod内部的其他容器共用pause容器的网络栈和存储卷。2.启动一系列的应用容器,应用容器数量在一个以上,即需要启动一个主容器在同一个pod中,容器之间的端口不能冲突服务的分类:有状态服务:例如:mysql、数据库类型无状态服务:例如:http、we
K8S集群学习记录03
Pod概念
只要有pod,pod中的pause容器就会被创建启动;pause容器是pod的根容器,1.初始化网络栈、挂载网络卷,即pod内部的其他容器共用pause容器的网络栈和存储卷。2.启动一系列的应用容器,应用容器数量在一个以上,即需要启动一个主容器
在同一个pod中,容器之间的端口不能冲突
服务的分类:
- 有状态服务:例如:mysql、数据库类型
- 无状态服务:例如:http、web服务器、ftp服务器
- 中心化服务:
- 去中心化服务:
pod类型
创建模式
-
自主式pod(自己管理自己,出现问题自生自灭)
-
控制器管理pod(控制器管理,pod出问题控制器会处理)
控制器类型:
-
为无状态服务设计的控制器:
-
ReplicationController(RC):用来确保容器应用的副本数始终保持在用户定义的副本数(期望),即如果有容器异常退出,会自动创建新的pod来代替;而如果异常多出来的容器也会被回收。需要注意副本数(期望)的值只是一个范围,具体能够达到多少副本的数量与资源相挂钩。 (在新版本K8S中建议使用RS来代替RC)
-
ReplicaSet(RS):与RC没有本质的不同,并且RS支持集合式的selector。RS虽好,但不支持滚动更新和回滚。
虽然RS可以单独使用,但一般还是建议使用Deployment来管理RS,这样就无需担心跟其他机制的不兼容问题。
-
Deployment(Deploy):支持滚动更新以及回滚。
- deployment的底层原理:
-
HPA:仅适用于deployment和RS之上,在V1版本中仅支持根据pod的CPU利用率扩容,在V1 alpha版本中支持根据内存和用户自定义的metric扩容。
说人话就是:根据pod资源使用情况,调整副本数量,依赖于RC、RS、Deployment之上。
-
-
状态服务的控制器
-
StatefulSet:解决有状态服务的问题(对应RS、Deployment是为无状态服务而设计),应用场景包括:
-
稳定的持久化存储:即pod重新调度后还是能访问到相同的持久化数据,基于PVC实现;
(每一个Pod都有自己稳定的存储)
-
稳定的网络标志:即pod重新调度后,其podName和HostName不变,基于Headless Server来实现;
( 每一个控件启动的pod都有唯一的访问地址,访问地址是不变的)
-
有序部署、有序扩容:即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
-
网络通讯方式
更多推荐
所有评论(0)