k8s——pod控制器
1. 控制器与Pod对象
Pod控制器资源通过持续性地监控集群中运行着的符合其标签选择器的Pod资源对象来确保它们严格符合用户期望的状态,一个Pod控制器资源至少应该包含三个基本的组成部分:
标签选择器:匹配并关联Pod资源对象,并据此完成受其管控的Pod资源基数。
期望的副本数:期望在集群中精确运行着的Pod资源的对象数量。
Pod模板:用于新建Pod资源对象的Pod模板资源。
2. ReplicaSet
rs和rc(replicationController)的区别:rc的标签选择器只允许包含某个标签的pod,但是rs的选择器还允许匹配缺少某个标签的pod,或者包含特定标签名的pod。(rs拥有更具表达力的标签选择器)
简称RS,用于确保由其管控的Pod对象副本数任一时刻都能精确满足期望的数量。
主要功能:
确保Pod资源对象的数量精确反映期望值:RS需要确保由其控制运行的pod副本数量精确吻合配置中定义的期望值,否则就会自动补足所缺或终止所余;
确保Pod健康运行:探测到由其管控的Pod对象因其所在的工作节点故障而不可用时,自动请求由调度器于其他工作节点创建缺失的pod副本;
弹性伸缩:业务规模因各种原因时常存在明显波动,在波峰或波谷期间,可以通过RS控制器动态调整相关Pod资源对象的数量。此外,在必要时还可以通过HPA控制器实现Pod资源规模的自动伸缩。
minReadySeconds: 新建Pod对象,在启动后的长时间内如果其容器未发生崩溃等异常情况即被视为“就绪”,默认为0秒,表示一旦就绪性探测成功,即被视作可用。
3. Deployment
简称deploy,构建与ReplicaSet控制器之上。
事件和状态查看:必要时可以查看Deployment对象升级的详细进度和状态。
回滚:升级操作完成后发现问题时,支持使用回滚机制将应用返回到前一个或由用户指定的历史记录中的版本上。
版本记录:对Deployment对象的每一次操作都予以保存,以供后续可能执行的回滚操作使用。
暂停和启动:对于每一次升级,都能够随时暂停和启动。
多种自动更新方案:一是Recreate,即重建更新机制,全面停止、删除旧有的Pod后用新版本替代;另一个是RollingUpdate,即滚动升级机制,逐步替换旧有的Pod至新的版本。
StrategyType:更新策略,滚动更新(rollingUpdate)、重新创建(recreate)
RollingUpdateStrategy:maxSurge(升级期间存在的总Pod对象数量最多可超过期望值个数,可以整数或百分比)
maxUnavailable(升级期间正常可用的Pod副本数最多不能低于期望值得个数,可以整数或百分比)
revisionHistoryLimit:控制器可保存的历史版本数量
kubectl set image deployments pod_name image_name #设置镜像 kubectl rollout status deployments pod_name #打印滚动更新过程中的状态信息 kubectl get deployment pod_name --watch #监控Pod更新过程中对象的变动过程
kubectl rollout undo deployments pod_name --to-revision 1 #回滚至版本1
kubectl rollout history deployments pod_name #查看历史版本信息
4. DaemonSet
DaemonSet是Pod控制器的又一种实现,用于在集群中的全部节点上同时运行一份指定的pod资源副本,后续新加入集群的工作节点也会自动创建一个相关的pod对象,当从集群移除节点时,此类pod对象也将被自动回收而无须重建。管理员也可以使用节点选择器及节点标签指定仅在部分具有特定特征的节点上运行指定的pod对象。
DaemonSet没有副本数,其他配置跟其他pod控制器相同。
spec.updateStrategy:RollingUpdate,滚动更新
OnDelete,删除时更新
5. Job
Job控制器用于调配Pod对象运行一次性任务,容器的进程在正常运行结束后不会对其进行重启,而是将Pod对象置于“Completed”(完成)状态。
spec.parallelism:执行作业的并行度
spec.completions:串行执行任务
spec.activeDeadlineSeconds:deadline,用于为其指定最大活动的时间长度,超出此时长的作业将被终止
spec.backoffLimit:将作业标记为失败状态之前的重试次数,默认值为6。
6. CronJob
CronJob控制器用于管理Job控制器资源的运行时间。
jobTemplate:job控制器模板,用于为为CronJob控制器生成Job对象
schedule:Cron格式的作业调度运行时间点
concurrencyPolicy:并发执行策略,Allow允许,Forbid禁止,Replace替换,用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业
failedJobHistoryLimit:为失败的任务执行保留的历史记录数,默认为1
successfulJobHistoryLimit:为成功的任务执行保留的历史记录数,默认为3
startingDeadlineSeconds:因各种原因缺乏执行作业的时间点所导致的启动作业错误的超时时长,会被记入错误历史记录
suspend:是否挂起后续的执行任务,默认为false,对运行中的作业不会产生影响。