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. RHEL7开机不能正常进入系统(图形化界面)

    今天在重启RHEL7的虚拟机后一直无法正常开机,一直提示输入管理员密码,如下图所示: 输入密码后进入命令行模式,经排查出现此现象的问题是在挂载银盘的时候文件格式写错,在格式化硬盘的时候格式化的是xfs ...

  2. fatal: HttpRequestException encountered

    报错:fatal: HttpRequestException encountered 解决方法 Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器,才行. ...

  3. spring boot tomcat 部署

    前几天springboot项目部署到linux中,整个过程就是个坑啊.踩坑的过程中也学到了许多.spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8. 所以部署的话就分为两 ...

  4. 面试再问ThreadLocal,别说你不会!

    ThreadLocal是什么  以前面试的时候问到ThreadLocal总是一脸懵逼,只知道有这个哥们,不了解他是用来做什么的,更不清楚他的原理了.表面上看他是和多线程,线程同步有关的一个工具类,但其 ...

  5. Java连载87-酒店管理系统练习、哈希表、函数

    一.创建一个酒店的房间管理系统 需求:这个酒店有五层,并且1-2层是标准间,3-4层是双人间,5层是豪华间:我们需要实时的显现各个房间的使用状态,并且我们可以预定某一个房间. package com. ...

  6. IE浏览器中IFrame被加载两次问题的解决-sunziren

    本文为作者sunziren原创,首发博客园,转载请注明出处. 昨天遇到了一个问题,先上代码. var content = '<iframe src="www.baidu.com&quo ...

  7. 洛谷P4526 【模板】自适应辛普森法2

    P4526 [模板]自适应辛普森法2 洛谷传送门 题目描述 计算积分 保留至小数点后5位.若积分发散,请输出"orz". 输入格式 一行,包含一个实数,为a的值 输出格式 一行,积 ...

  8. PTA 汉诺塔的非递归实现(C 语言)

    借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c), 即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”), 并保证每个移动符合汉诺塔问题的要求 ...

  9. Python_基础数据类型

    一,首先介绍一下变量 1. 变量是什么 在Python中,变量的概念基本上和初中代数的方程变量是一致的. 2. 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止 ...

  10. linux查找含有xxx内容的文件

    find . -name *.json |xargs grep "6379" |awk '{print $1}'|uniq