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控制器的更多相关文章

  1. k8s控制器资源(五)

    Pod pod在之前说过,pod是kubernetes集群中是最小的调度单元,pod中可以运行多个容器,而node又可以包含多个pod,关系如下图: 在对pod的用法进行说明之前,有必要先对docke ...

  2. k8s控制器资源

    k8s控制器资源   Pod pod在之前说过,pod是kubernetes集群中是最小的调度单元,pod中可以运行多个容器,而node又可以包含多个pod,关系如下图: 在对pod的用法进行说明之前 ...

  3. k8s控制器和Pod Template的关系

    Pod 本身并不能自愈(self-healing).如果一个 Pod 所在的 Node (节点)出现故障,或者调度程序自身出现故障,Pod 将被删除:同理,当因为节点资源不够或节点维护而驱逐 Pod ...

  4. k8s控制器理解

    DaemonSet 一个DaemonSet对象能确保其创建的Pod在集群中的每一台(或指定)Node上都运行一个副本.如果集群中动态加入了新的Node,DaemonSet中的Pod也会被添加在新加入N ...

  5. 还不会用 K8s 集群控制器?那你会用冰箱吗?(多图详解)

    作者 | 阿里云售后技术专家 声东 导读:当我们尝试去理解 K8s 集群工作原理的时候,控制器(Controller)肯定是一个难点.这是因为控制器有很多,具体实现大相径庭:且控制器的实现用到了一些较 ...

  6. k8s 中 Pod 的控制器

    k8s 中 Pod 的控制器 前言 Replication Controller ReplicaSet Deployment 更新 Deployment 回滚 deployment StatefulS ...

  7. k8sDeployment控制器

    简写为deploy,是k8s控制器的另一种实现,它构建于ReplicaSet之上,可为pod和rs资源提供声明式更新. deploy控制器资源的大部分功能均可通过调用rs来实现,同时,还增添了部分特性 ...

  8. 2020年必须掌握的硬核技能k8s

    Kubernetes 是一个软件系统,使你在数以万计的电脑节点上运行软件时就像 所有节点是以单个大节点一样, 它将底层基础设施抽象,这样做同时简化了应用开发.部署,以及对开发和运维团队的管理. Kub ...

  9. 浅谈 kubernetes service 那些事(上篇)

    一.问题 首先,我们思考这样一个问题: 访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态.那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知? 二.k8 ...

随机推荐

  1. Lua实现的八皇后问题

    来自<Lua程序与设计>第二节- 八皇后问题 输出所有解的解法 书中提供的源代码,加注了自己的注释. N = 8 --[[ N为棋盘规模 a为一维数组,保存第i个皇后所在的列数 ]] -- ...

  2. android中关于时间的控件

    1.日期选择器 <DatePicker android:layout_width="wrap_content" android:layout_height="wra ...

  3. 吴裕雄--天生自然 R语言数据可视化绘图(4)

    par(ask=TRUE) # Basic scatterplot library(ggplot2) ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_poin ...

  4. matlab中的输出显示函数

    matlab中的输出显示函数 在matlab中使用的显示函数有disp.sprintf.fprintf比较常用.下面来介绍一下他们的用法. 1.disp()函数: disp(x)主要是用来输出变量x的 ...

  5. 初识OpenSSH--1

    note:保护你的报文(communique)安全 !  最安全!!! 简介:OpenSSH使用SSH协议进行远程登录的主要连接工具.它对传输数据进行加密,以消除窃听,连接劫持和其他攻击.此外,Ope ...

  6. vue(六)--计算属性(computed)

    计算属性关键词: computed demo1: <div id="app"> <p>原始字符串: {{ message }}</p> < ...

  7. tensorflow 中的L1和L2正则化

    import tensorflow as tf weights = tf.constant([[1.0, -2.0],[-3.0 , 4.0]]) >>> sess.run(tf.c ...

  8. 安装Kubernetes到CentOS(Minikube)

    运行环境 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:Docker-ce-18.06.0.Kubectl-1.15.0.Kubernetes-v1.1 ...

  9. Spring Aop和Spring Ioc(二)

    Spring IOC: DI注入集合类型: 实体类: package cn.spring.entity; import java.util.*; public class Dientity { pri ...

  10. JavaSE学习笔记(8)---常用类

    JavaSE学习笔记(8)---常用类 1.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类 ...