K8s控制器
K8s控制器
POD分类
#自主式pod:退出后,不会被创建
#控制器管理的pod:在控制器的生命周期内,始终位置pod的副本数
控制器类型
ReplicationController和ReplicaSet Rc被Rs取代
Deployment
DeamonSet
StateFulSet
Job/Cronjob
Horizontal Pod Autoscaling
ReplicationController和ReplicaSet
RC确保用户指定的Pod副本数
新版本的k8s,Rs取代了Rc,RC与RS没有本质不同,只是RS支持集合式的selecor,通过标签label
Deployment
#命令式编程:侧重如何实现程序,需要按逻辑一步步把代码写出来
#声明式编程:侧重于定义想要什么,然后告诉计算机引擎,让他帮你实现;具有冪等性。(也就是给程序一份配置文件,它自动按照配置去执行任务,类似的引用如sql语句)
Deployment为pod和ReplicaSet提供了声明式的定义方法,(RC,RS是命令式的)
声明式编程 (Deployment) apply(最优) create(可以执行,但不是最优)
命令式编程 (RS) create(最优) apply(可以执行,但不是最优)
应用场景
1. 定义Deployment创建Pod和ReplicaSet
#如:如果创建名为nginx-deploy的deployment,那么deployment就会创建nginx-deploy-xxxx的rs,然后由rs去创建pod
2. 滚动升级与回滚应用
#通过控制rs的数目或版本实现
#如:滚动升级就是通过创建一个新版本的rs,旧版rs删除一个pod,新版本rs新建一个pod,从而实现滚动升级;如果发现新版本的pod有问题,就可以启动旧版本的rs,新版rs删除一个pod,旧版pod新建一个pod,从而实现了回滚
3. 扩容与缩容
通过rs自身的机制实现
4. 暂停与继续Deployment
#通过控制rs实现pod的挂起与继续
DaemonSet
1.确保全部或一部分node上运行一个Pod副本(也就是指定那些node上运行pod)。当有Node加入集群时,也会为它们新增一个pod。当有Node移出集群时,这些pod也会被回收。
# 画外音:DaemonSet生命周期内,这些node上都会维持一个pod副本,注意只能有一个不能多余一个pod。如果真的需要一个node上运行多个pod,需要通过定义多个DaemonSet的方式实现
2.删除DaemongSet时,也会删除它所创建的所有pod
典型用法
#主要是运行一个守护性的pod
1. 运行集群存储daemon
2. 在每个Node上运行日志收集daemon
3. 在每个node上运行监控程序daemon
Job
负责批处理任务,仅执行一次的任务,job中的脚本成功执行退出的次数,达到指定次数后就成功退出,不在执行
#画外音:如果job中的脚本没有以0结束就会重新执行。
CronJob 在特定的时间循环创建Job
基于时间的Job,即 跟crontab一样 分 时 日 月 年
# 在给定时间点只执行一次
# 周期性的在给定时间点运行
使用前提: k8s版本》=1.8
典型的用法
# 在给定的时间点调度Job
# 创建周期性的Job,如:数据库备份,发送邮件
StatefulSet
为了解决有状态服务的问题(对应Deployment和RS是为无状态服务而设计)
K8s控制器的更多相关文章
- k8s控制器资源(五)
Pod pod在之前说过,pod是kubernetes集群中是最小的调度单元,pod中可以运行多个容器,而node又可以包含多个pod,关系如下图: 在对pod的用法进行说明之前,有必要先对docke ...
- k8s控制器资源
k8s控制器资源 Pod pod在之前说过,pod是kubernetes集群中是最小的调度单元,pod中可以运行多个容器,而node又可以包含多个pod,关系如下图: 在对pod的用法进行说明之前 ...
- k8s控制器和Pod Template的关系
Pod 本身并不能自愈(self-healing).如果一个 Pod 所在的 Node (节点)出现故障,或者调度程序自身出现故障,Pod 将被删除:同理,当因为节点资源不够或节点维护而驱逐 Pod ...
- k8s控制器理解
DaemonSet 一个DaemonSet对象能确保其创建的Pod在集群中的每一台(或指定)Node上都运行一个副本.如果集群中动态加入了新的Node,DaemonSet中的Pod也会被添加在新加入N ...
- 还不会用 K8s 集群控制器?那你会用冰箱吗?(多图详解)
作者 | 阿里云售后技术专家 声东 导读:当我们尝试去理解 K8s 集群工作原理的时候,控制器(Controller)肯定是一个难点.这是因为控制器有很多,具体实现大相径庭:且控制器的实现用到了一些较 ...
- k8s 中 Pod 的控制器
k8s 中 Pod 的控制器 前言 Replication Controller ReplicaSet Deployment 更新 Deployment 回滚 deployment StatefulS ...
- k8sDeployment控制器
简写为deploy,是k8s控制器的另一种实现,它构建于ReplicaSet之上,可为pod和rs资源提供声明式更新. deploy控制器资源的大部分功能均可通过调用rs来实现,同时,还增添了部分特性 ...
- 2020年必须掌握的硬核技能k8s
Kubernetes 是一个软件系统,使你在数以万计的电脑节点上运行软件时就像 所有节点是以单个大节点一样, 它将底层基础设施抽象,这样做同时简化了应用开发.部署,以及对开发和运维团队的管理. Kub ...
- 浅谈 kubernetes service 那些事(上篇)
一.问题 首先,我们思考这样一个问题: 访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态.那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知? 二.k8 ...
随机推荐
- springboot整合WebService简单版
一.什么是webservice 关于webservice的介绍摘自百度百科,上面的介绍很详细.(链接:https://baike.baidu.com/item/Web%20Service/121503 ...
- 到2029年MRAM收入将增长170倍
一份新市场报告预计,从2018年到2029年,独立MRAM和STT-MRAM的收入将增长170倍,达到近40亿美元的收入.下一代内存技术的增长将主要由取代效率较低的内存技术(例如NOR闪存和SRAM) ...
- HTML单词
html超文本标记语言 head 头部font 字体 字形i(italic) 倾斜,斜体字big 大的,字体加大hr 水平线Pre(predefined)预定义h5标题5Div(division)区隔 ...
- ADO.NET事务封装
在数据库工具类编写的过程中,对事务的处理操作想避免各个原子操作的事务对象赋值重复操作,想对外暴露的方法为如下形式 public bool ExecuteTransition(Action Transi ...
- C#面向对象详解
//封装就是将数据或函数等集合在一个个的单元中,我们称之为类,被封装的对象通常被称为抽象数据类型, //封装的意义在于保护或防止代码被我们无意中破坏, //封装既可以封装成员变量,又可以封装成员方法, ...
- docker配置搭建gogs
参考文献: https://www.yeboyzq.com/linux/ruanjiananzhuangweihu/1012.html https://www.jianshu.com/p/d92fd4 ...
- 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification
论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...
- Redis缓存数据库(一)
先导知识:Memcache Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash. 已经有了Memcache,为什么还要用Redis呢? 下面Memcache的缺点: 不支持数据持 ...
- linux服务基础之编译安装nginx
nginx源码下载地址: http://nginx.org/download/nginx-1.16.0.tar.gz //根据需要下载其他版本 1. 下载nginx # wget http://ngi ...
- Java第二节课总结
Java的基本运行单位是类.类由数据成员和函数成员组成.变量的类型之间可以相互转换.String是一个类.static代表静态变量. 运行结果: false false ...