欢迎各位读者评论留言,共同学习,共同进步。
《kubernetes权威指南》笔记
上一节见1.4kubernetes基本概念和术语(2)
5. Deployment
- Deployment是1.2版本之后引入,为了更好的解决pod编排问题。
- Deployment相对于RC的一个最大升级是我们可以随时知道当前Pod“部署”的进度。实际上由于一个Pod的创建、调度、绑定节点及在目标Node上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动N个Pod副本的目标状态,实际上是一个连续变化的“部署过程”导致的最终状态。
RC 、RS、Deployment的区别:
Replication Contoller: 支持Pod扩缩,只支持Equal条件
Replica Set: 支持模糊包含条件,其他与RC相同
Deployment: 相对RC,在内部使用了Replica Set来实现目的,同时它可以随时知道当前Pod部署进度。
- 应用场景:
◎ 创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建。
◎ 检查Deployment的状态来看部署动作是否完成(Pod副本数量是否达到预期的值)。
◎ 更新Deployment以创建新的Pod(比如镜像升级)。
◎ 如果当前Deployment不稳定,则回滚到一个早先的Deployment版本。
◎ 暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后再恢复Deployment,进行新的发布。
◎ 扩展Deployment以应对高负载。
◎ 查看Deployment的状态,以此作为发布是否成功的指标。
◎ 清理不再需要的旧版本ReplicaSets。
6.Horizontal Pod Autoscaler (HPA)
- HPA(Pod横向自动扩容)目的是为了使分布式系统要能够根据当前负载的变化自动触发水平扩容或缩容。
- 实现原理:通过追踪分析指定RC控制的所有目标Pod的负载变化情况,来确定是否需要有针对性地调整目标Pod的副本数量。
- Pod负载的度量指标:
◎ CPUUtilizationPercentage。
1). 指目标Pod所有副本自身的CPU利用率的平均值,一个Pod自身的CPU利用率是该Pod当前CPU的使用量除以它的Pod Request的值。
2).如果目标Pod没有定义Pod Request的值,则无法使用CPUUtilizationPercentage实现Pod横向自动扩容。
◎ 应用程序自定义的度量指标,比如服务在每秒内的相应请求数(TPS或QPS)。
除了可以通过直接定义YAML文件并且调用kubectrl create的命令来创建一个HPA资源对象的方式,还可以通过下面的简单命令行直接创建等价的HPA对象。
$ kubectl autoscale deployment .. ..
7.Stateful Set
- 用于管理有状态的集群:
(1)每个节点都有固定的身份ID,通过这个ID,集群中的成员可以相互发现并通信。
(2)集群的规模是比较固定的,集群规模不能随意变动。
(3)集群中的每个节点都是有状态的,通常会持久化数据到永久存储中。
(4)如果磁盘损坏,则集群里的某个节点无法正常运行,集群功能受损。 - Stateful Set的特性:
(1) StatefulSet里的每个Pod都有稳定、唯一的网络标识,可以用来发现集群内的其他成员。假设StatefulSet的名称为kafka,那么第1个Pod叫kafka-0,第2个叫kafka-1,以此类推。(有序命名)
(2)StatefulSet控制的Pod副本的启停顺序是受控的,操作第n个Pod时,前n-1个Pod已经是运行且准备好的状态。(有序启停)
(3)StatefulSet里的Pod采用稳定的持久化存储卷,通过PV或PVC来实现,删除Pod时默认不会删除与StatefulSet相关的存储卷(为了保证数据的安全)。()
(4)StatefulSet除了要与PV卷捆绑使用以存储Pod的状态数据,还要与Headless Service配合使用,使得每个pod要生成对应的DNS域名。(实现稳定持久化存储状态数据)
${podname}.${headlesss service name}
网友评论