Kubernetes(K8S第三部分之资源控制器)

news2025/1/4 19:38:23

资源控制器

什么是控制器

Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为。

控制器类型

ReplicationController和ReplicaSet

Deployment

DaemonSet

StateFulSet

Job/CronJob

Horizontal Pod Autoscaling

ReplicationController和ReplicaSet

ReplicationController(RC)用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出。会自动创建新的Pod来替代。而如果异常多出来的容器也会自动回收。

在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController。ReplicaSet跟ReplicationController没有本质的不同。只是名字不一样。并且ReplicaSet支持集合式的selector;

标签

Deployment

Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法。用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括;

定义Deployment来创建Pod和ReplicaSet

滚动升级和回滚应用

扩容和缩容

暂停和继续Deployment

DaemonSet

DaemonSet确保全部(或者一些)Node上运行一个Pod的副本。当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod使用DaemonSet的一些典型用法。

运行集群存储daemon,例如在每个Node上运行glusterd。ceph。

在每个Node上运行日志收集deamon,例如fluentd,logstash

在每个Node上运行监控daemon,例如Prometheus Node,Exporter,coolectd,Datadog代理。

New Relic代理。或Ganglia gmond

滚动更新。回滚操作。

Job

Job负责批处理任务。即仅执行一次的任务。它保证批处理任务的一个或多个Pod成功结束。

CronJob   在特定的时间循环创建Job

Cron Job管理基于时间的Job,即

在给定时间点只运行一次。

周期性地在给定时间点运行。

使用前提条件:当前使用的Kubernetes集群,版本>=1.8(对CronJob)。对于先前版本的集群,版本<1.8,启动APIServer时,通过传递选项 --runtime-config=batch/v2alpha1=true  可以开启batch/v2alpha1   API**

典型的用法如下图。

在给定的时间点调度Job运行

创建周期性运行的Job,例如:数据库备份,发送邮件。

StatefulSet

StatefulSet作为Controller为Pod提供唯一的标识。它可以保证部署和scale的顺序。

StatrfulSet是为了解决有状态服务的问题。(对应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)

Horizontal Pod Autoscaling

应用的资源使用率通常有高峰和低谷的时候。如何削峰填谷,提高集群的整体资源利用率,让service中的Pod个数自动调整呢?这就有赖于Horizontal Pod Autoscaling了,顾名思义,使Pod水平自动缩放。

RS与RC与Deployment关联

RC(ReplicationController)主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数。即如果容器异常退出。会自动创建新的Pod来代替。而如果异常多出来的容器也会自动回收。

Kubernetes官方建议使用RS(ReplicaSet)替代RC(ReplicationController)进行部署。RS跟RC没有本质的不同。只是名字不一样。并且RS支持集合式的selector。

RS与Deployment的关联

Deployment

Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法。用来替代以前的ReplocationController来方便的管理应用。典型的应用场景包括。

1,定义Deployment来创建Pod和ReplicaSet

2,滚动升级和回滚应用

3,扩容和缩容。

4,暂停和继续Deployment

1,部署一个简单的Nginx应用

apiVersion:extensions/v1beta1

kind:Deployment

metadata:

  name: nginx-deployment

spec:

replicas: 3

template:

metadata:

labels:

app: nginx

spec:

containers:

-name: nginx

image:nginx:1.7.9

ports:

- containerPort: 80

kubectl create -f https://kubernets.io/docs/user-guide/nginx-deployment.yaml --record

## --record参数可以记录命令。我们可以很方便的查看每次revision的变化

二。扩容

kubectl scale deployment nginx-deployment --replicas 10

三。如果集群支持horizontal pod autoscaling的话,还可以为Deployment设置自动扩展

kubectl autoscale deploument nginx-deployment --min=10 --max=15 --cpu-percent=80

四。更新镜像也比较简单

kubectil set image deployment/nginx-deployment nginx=nginx:1.9.1

五。回滚

kubectl rollout undo deployment/nginx-deployment

Deployment更新策略

deployment可以保证在升级时只有一定数量的Pod是down的。默认的,他会确保至少有比期望的Pod数量少一个是up状态(最多一个不可用)

Deployment同时也可以确保只创建出超过期望数量的一定数量的Pod。默认的,他会确保最多比期望的Pod数量多一个的Pod是up的(最多一个surge)

未来的Kuberentes版本中,将从1-1变成25%-25%

$kubectl describe deployments

Rollover (多个rollout并行)

假如您创建了一个有5个nginx:1.7.9replica的Deployment,但是当还只有3个nginx:1.7.9的replica创建出来的时候您就开始更新含有5个nginx:1.9.1replica的Deployment。在这种情况下。Deployment会立即杀掉已创建的3个nginx:1.9.1的Pod,并开始创建nginx:1.9.1的Pod。它不会等到所有的5个nginx:1.7.9的Pod都创建完成后才开始改变航道。

回退Deployment

kubectl set image deployment/nginx-deployment nginx=nginx:1.91

kubectl rollout status deployments nginx=deployment

清理Policy

您可以通过设置  .spec.revisonHistroyLimit  项来制定deployment最多保留多少revision历史记录。默认的会保留所有的revision;如果将该项设置为0,Deployment就不允许回退了。

什么是DaemonSet

DaemonSet确保全部(或者一些)Node上运行一个Pod副本。当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收,删除DaemonSet将会删除它创建的所有Pod,使用DaemonSet的一些典型用法。

1,运行集群存储daemon,例如在每个Node上运行glusterd,ceph

2,在每个Node上运行日志收齐daemon,例如fluentd,logstash

3,在每个Node上运行监控daemon,例如Prometheus Node Exporter,collectd,Datadog代理。New Relic代理,或Ganglia gmond

CronJob Spec

1,spec.template格式同Pod

2,RestartPolicy仅支持Never或OnFailure

3,单个Pod时,默认Pod成功运行后Job即结束。

4,    .spec.completions标志Job结束需要成功运行的Pod个数。默认为1.

5,    .spec.parallelism标志并行运行的Pod的个数,默认为1.

6,    .spec.activeDeadlineSeconds标志失败Pod的重试最大时间。超过这个时间不会继续重试。

CronJob

Cron Job 管理基于时间的Job,即:

在给定时间点只运行一次。

周期性地在给定时间点运行。

使用条件:当前使用的Kubernetes集群。版本>=1.8(对CronJob)

典型的用法如下所示:

1,在给定的时间点调度Job运行

2,创建周期性运行的Job,例如:数据库备份。发送邮件。

CronJob Spec

.spec.schedule:调度,必需字段,制定任务运行周期,格式同Cron。

.spec.jobTemplate:Job模版,必需字段,指定需要运行的任务,格式同Job。

.spec.startingDeadlineSconds:启动Job的期限(秒级别),该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的。如果没有指定。则没有期限

CrondJob本身的一些限制

创建Job操作应该是幂等的

无法判断他的成功状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javascript学习快速入门

JavaScript 基本语法 快速入门 数据类型 123 // 整数123 123.1 //浮点数123.1 1.123e3 //科学计数法-99//复数 NaN// not a numberInfinity //表示无限大注意点 NaNNaN&#xff0c;这个与所有的数值都不相等&#xff0c;包括自 己 只能通过isNaN(NaN)来判断这个数是否是Na…

Behavioral Verilog

行为Verilog Vivado synthesis支持行为Verilog硬件描述语言&#xff08;VHDL&#xff09;&#xff0c;除了如另外指出的。 行为Verilog中的变量 •行为Verilog中的变量声明为整数。 •这些声明仅用于测试代码。Verilog提供诸如reg和用于实际硬件描述的导线。 •reg和wire之…

华为od机试C卷-最长表达式求值

1 题目描述 提取字符串中的最长合法简单数学表达式子串&#xff0c;字符串长度最长的&#xff0c;并计算表达式的值&#xff0c;如果没有返回0。简单数学表达式只能包含以下内容0-9 数字&#xff0c;符号* 说明: 1.所有数字&#xff0c;计算结果都不超过 long 2.如果有多个长…

mysql学习笔记5——对表的修改操作

对表的列进行操作 对表可以进行创建create与删除drop&#xff0c;同时可以对表进行修改alter 修改字段 添加字段 删除具体的某一列 添加列时可以指定添加位置 对表的数据进行操作 select查询操作可以指定查询条件 删除具体数据&#xff08;而非删除表中某一列某一行&#xf…

简单聊聊http协议头参数之Content-Type和http状态码 415错误

大家好&#xff0c;我是G探险者。 今天聊一下http的状态码&#xff0c;415错误&#xff0c;因为项目里面使用了httpclient进行了远程服务调用&#xff0c;调用发送时&#xff0c;会有一个http header的参数设置。由于参数设置的问题经常会出现错误&#xff0c;导致调用失败&am…

Linux的进程的概念

目录 1.冯诺依曼体系结构&#xff08;硬件&#xff09; 2.操作系统(软件) 2.1概念 2.2设计os(操作系统)的目的 2.3如何理解管理 2.4系统调用和库函数概念 3.进程 3.1基本概念 3.2描述进程-PCB和组织进程 3.3ps axj指令 3.4查看进程 3.5通过系统调用获取进程表示符(P…

一篇了解电阻的使用

目录 一、电阻理论基础 1.电阻的定义 2.欧姆定律 3.电阻决定式 4.电阻的串并联​编辑 5.电阻的功率 6.温度对电阻的影响 二、电阻的选型 1.安装方式 2.电阻值 &#xff08;1&#xff09;电阻值的标称 &#xff08;2&#xff09;电阻值的确定 &#xff08;3&#x…

管家婆订货易在线商城 VshopProcess 任意文件上传漏洞复现

0x01 产品简介 管家婆订货易,帮助传统企业构建专属的订货平台,PC+微信+APP+小程序+h5商城5网合一,无缝对接线下的管家婆ERP系统,让用户订货更高效。支持业务员代客下单,支持多级推客分销,以客带客,拓展渠道。让企业的生意更轻松。 0x02 漏洞概述 管家婆订货易在线商城…

Fastwhisper + Pyannote 实现 ASR + 说话者识别

文章目录 前言一、faster-whisper简单介绍二、pyannote.audio介绍三、faster-whisper pyannote.audio 实现语者识别四、多说几句 前言 最近在研究ASR相关的业务&#xff0c;也是调研了不少模型&#xff0c;踩了不少坑&#xff0c;ASR这块&#xff0c;目前中文普通话效果最好的…

Java多态性的作用及解析

多态性是 Java 面向对象编程的一个重要特性,它的主要作用包括以下几个方面: 提高代码的可扩展性:多态性使得我们可以在不修改现有代码的情况下,通过继承和重写方法来添加新的行为。这意味着我们可以在不影响现有功能的前提下,对代码进行扩展和修改。 增强代码的可读性:使…

基础真空技术外国文献Fundamentals of Vacuum Technology

基础真空技术外国文献Fundamentals of Vacuum Technology

Maven构建MapReduce程序上传至虚拟机运行找不到jdbc.Driver

问题前置&#xff1a; Maven构建MapReduce程序&#xff0c; pom中已经写入jdbc驱动&#xff0c; 上传至虚拟机运行扔找不到jdbc.Driver, 具体报错&#xff1a;java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 第一步&#xff1a;确认pom…

2024022701-信息安全(二)——密码学

密码学的基本概念 密码学(Cryptology)&#xff1a; 研究信息系统安全保密的科学。 密码编码学(Cryptography)&#xff1a; 研究对信息进行编码,实现对信息的隐蔽。 密码分析学(Cryptanalytics) &#xff1a; 研究加密消息的破译或消息的伪造。 消息被称为明文(Plaintext)。 用…

LeetCode第125场双周赛个人题解

目录 100231. 超过阈值的最少操作数 I 原题链接 思路分析 AC代码 100232. 超过阈值的最少操作数 II 原题链接 思路分析 AC代码 100226. 在带权树网络中统计可连接服务器对数目 原题链接 思路分析 AC代码 100210. 最大节点价值之和 原题链接 思路分析 AC代码 10023…

【动态规划】第十一届蓝桥杯省赛第二场C++ C组《数字三角形》(c++)

1.题目描述 上图给出了一个数字三角形。 从三角形的顶部到底部有很多条不同的路径。 对于每条路径&#xff0c;把路径上面的数加起来可以得到一个和&#xff0c;你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。 …

kafka启动命令、查看topic命令、查看消息内容命令

kafka启动命令 cd /opt/kafka/kafka_2.12-3.5.1/bin ./kafka-server-start.sh ../config/server.properties Windows环境下用kafka Tool 连不上虚拟机的broker报了unable to connect broker 0&#xff0c; 但是zookeeper可以连接上 server.properties的listeners改为listene…

Oracle定时任务和存储过程

--1.声明定时任务 DECLAREjob NUMBER; BIGIN dbms_job.sumit(job, --任务ID,系统定义的test_prcedure(19)&#xff0c;--调用存储过程&#xff1f;to_date(20240305 02:00&#xff0c;yyyymmdd hh24:mi) --任务开始时间sysdate1/(24*60) --任务执行周期 [每分钟执行…

1818294-46-0,马来酰亚胺-PEG8-羧酸,能够在各种酸碱条件下保持稳定的性能

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;1818294-46-0&#xff0c;马来酰亚胺-PEG8-羧酸&#xff0c;Mal PEG8 COOH&#xff0c;Maleimide PEG8 acid 一、基本信息 【产品简介】&#xff1a;Maleimide PEG8 acid is an excellent water-soluble compound t…

【玩转数据库mysql】最全mysql数据库安装使用教程,史上最详细保姆式喂饭教程(图文结合)

安装运行mysql目录 涉及知识写在前面演示效果一、mysql是否安装检测1.1 cmd命令行1.2 查看服务进程 二、下载mysql2.1 点击下载2.2 跳过登陆直接下载 三、解压配置并安装3.1 解压安装包3.2创建my.ini3.3 编辑my.ini,3.4 在bin目录输入cmd回车3.5初始化mysql&#xff08;找密码&…