CSDN话题挑战赛第2期
参赛话题:万家争鸣的云计算修罗场
我想分享的云计算技能/知识点
- Pod技术点
该技能/知识点的背景介绍
Pod控制器类型
ReplicationController & ReplicaSet & Deployment
> HPA(HorizontalPodAutoScale)
StatefullSet
DaemonSet
Job,Cronjob
该技能/知识点实际运用
RC:可以维护目标期望值,比如数量
RS:功能与RC相同,但是多了集合式的标签选择器,在生产环境中较有意义,建议使用RS取代RC
Deployment:通过创建不同的RS来实现滚动更新以及回滚的机制,如果有需要滚动更新可以使用Deployment取代RS,不需要滚动更新则使用RS
4)HPA(Horizontal Pod Autoscaling): 仅适用于 Deployment 和 ReplicaSet ,在 V1 版本中仅支持根据 Pod 的 CPU 利用率扩所容,在 v1alpha 版本中,支持根据内存和用户自定义的 metric 扩缩容
总结:HPA不能够独立存在,必须依赖于RC、RS、Deployment控制器之上
5)StatefulSet: 是为了解决有状态服务的问题(对应 Deployments 和 ReplicaSets 是为无状态服务而设计),其应用场景包括:
* 稳定的持久化存储,即 Pod 重新调度后还是能访问到相同的持久化数据,基于 PVC 来实现
* 稳定的网络标志,即 Pod 重新调度后其 PodName 和 HostName 不变,基于 Headless Service (即没有 Cluster IP 的 Service )来实现
* 有序部署,有序扩展,即 Pod 是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从 0 到 N-1,在下一个 Pod 运行之前所有之前的 Pod 必须都是 Running 和 Ready 状态),基于 init containers 来实现
* 有序收缩,有序删除(即从 N-1 到 0)
6)DaemonSet :确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod
使用 DaemonSet 的一些典型用法:
* 运行集群存储 daemon,例如在每个 Node 上运行 glusterd、ceph。
* 在每个 Node 上运行日志收集 daemon,例如fluentd、logstash。
* 在每个 Node 上运行监控 daemon,例如 Prometheus Node Exporter
7)Job :负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束
8)Cron Job :管理基于时间的 Job,即:
* 在给定时间点只运行一次
* 周期性地在给定时间点运行
总结
对于不同的服务、进程、节点使用不同的控制器:
1、守护进程、无状态服务:RC RS Deployment 例:Apache、Nginx
2、守护进程、有状态的服务:statefulSet 例:MySQL
3、每个物理节点有且只有一个 Pod 运行:DaemonSet 例:zabbix-agent
4、专门处理批处理任务、运行成功即退出:Job 例:脚本
5、轮询计划:CronJob 例:定时备份数据库、日志