k8s控制器

K8s控制器有几种?它们的作用有哪些? k8s的常见控制器 阅读详情

目录

一、控制器简介

二、控制器类型

1、RC和RS

2、Deployment

3、DaemonSet

4、Job

5、CronJob

6、StateFulSet

7、HPA


一、控制器简介

在kubernetes中,按照Pod的创建方式可以将其分为两类:

  • 自主式:kubernetes直接创建出来的Pod,这种Pod删除后就没有了,也不会重建。
  • 控制器创建pod:通过Pod控制器创建的Pod,这种Pod删除之后还会自动重建。

Pod控制器是管理Pod的中间层,使用了Pod控制器之后,我们只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它就会创建出满足条件的Pod并确保每一个Pod处于用户期望的状态,如果Pod在运行中出现故障,控制器会基于指定的策略重启或重新创建pod。

二、控制器类型

控制器分为以下类型:

  • ReplicationController 和 ReplicaSet
  • Deployment (最常用)
  • DaemonSet
  • StateFulSet
  • Job/CronJob
  • Horizontal Pod Autoscaling

1、RC和RS

RC目前不太采用,都采用RS方式。

RC用来控制pod维持一个正常稳定的数量

RS支持集合式的selector,可以根据标签匹配

样例:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myRS
spec:
  selector:
    matchLabels:
      auth: myAuth
  replicas: 3
  template:
    metadata:
      labels:
        auth: myAuth
    spec:
      containers:
        - name: myAuth
          image: icepear/dendalion-auth:2.0.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080

2、Deployment

提供声明式的定义方法,用来替代RC

  • 定义deployment来创建pod和replicaSet
  • 提供滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续 deployment

deployment跟replicaSet以及pod的关系

声明式的创建建议要用kubectl apply····,不要使用kubectl create··· --record参数可以记录命令,可以方便查看每次reversion的变化

1)部署简单的应用

比如我要开启三个 Nginx 的pod 应用

样例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myNginx
  labels:
    app: myNginx
spec:
  replicas: 3
  template:
    metadata:
      name: myNginx
      labels:
        app: myNginx
    spec:
      containers:
        - name: myNginx
          image: nginx:1.7.9
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
  selector:
    matchLabels:
      app: myNginx

2)扩容

样例:

kubectl scale deployment myNginx --replicas=10

3)高可用扩容

集群如果支持HPA,还可以设置条件,当cpu到达某种程度,开启多少个,最低开启多少个

kubecl autoscale deployment myNginx --min=10 --max=15 --cpu-percent=80

4)更新镜像

kubectl set image deployment/myNginx nginx:1.8.0
  • 25%-25%的策略,首先会在新的replicas中新建25%,旧的replicas中删除25%。按照这种规律更新
  • rollover 策略,当还在创建的时候就更新新的版本,deployment会直接干掉之前创建的rs,直接生成新的

5)版本回滚

kubectl rollout undo deployment/myNginx --to-version=2 #回滚操作,设置回退的版本号

kubectl rollout status deployment myNginx #查看回滚状态

kubectl rollout history deployment/myNginx #查看历史版本信息

kubectl rollout pause deployment/myNginx #暂停回滚更新

3、DaemonSet

DaemonSet确保全部node上运行一个pod的副本,新增或删除node时,node上对应的pod也会被新增或删除,删除DaemonSet将删除它创建的pod

  • 运行集群存储daemon,例如在每个node上运行glusterd、ceph
  • 在每个node上运行日志收集daemon、例如logstash、fluentd
  • 在每个node上运行监控daemon、例如Promethenus node exporter

创建使用kubectl create

4、Job

Job负责批处理任务,可以理解为就是用来运行脚本的控制器

  • spec.template格式同pod
  • RestartPolicy仅支持Never或Onfailure
  • 单个Pod时,默认Pod成功运行后Job即结束
  • spec.completions 标志job结束需要成功运行的Pod个数,默认为1
  • spec.parallelism 标志并行运行的Pod的个数,默认为1
  • spec.activeDeadlineSeconds 标志失败Pod的重试最大时间,超过不再重试

例如:创建一个使用perl语言,计算圆周率打印2000位

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    metadata:
      name: pi
    spec:
      containers:
        - name: pi
          image: perl
          command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

5、CronJob

在Job的基础上,提供了定时执行,周期执行的方案

  • spec.schedule 运行周期,格式采用Cron
  • spec.jobTemplate Job模板,格式采用Job
  • spec.startingDeadlineSeconds 启动Job的期限,秒
  • spec.concurrencyPolicy 并发策略,因为有可能在第一个job没完成的时候,第二个job又被创建了,就会形成并发
  • Allow 允许
  • Firbid 禁止
  • Replace 取消当前的,用新的替换
  • sper.suspend 挂起
  • spec.successfulJobHistoryLimit和failedJobsHistoryLimit 设置job成功或失败的保留的pod数,默认成功是3个,失败是1个

例子:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: myCronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: myCronjob
              image: busybox
              args:
                - /bin/sh
                - -c
                - date; echo Hello k8s
          restartPolicy: OnFailure

CronJob 运行的结果应该是幂等的,就是每次运行的结果应该一样

6、StateFulSet

StateFulSet解决了有状态的服务运行的问题

  • 稳定的持久化存储,即pod重新调度之后依然能访问到相同的持久化数据,基于PVC实现
  • 稳定的网络标志,即pod重新调度之后,podName和HostName不变,基于Headless service实现
  • 有序部署,有序扩展,pod启动是有序的,依据顺序依次进行,只有前一个pod启动成功之后,下面才能继续进行
  • 有序收缩,有序删除,从后往前删除

7、HPA

用于pod的自动扩展,在高峰时扩容,低谷时删除一些资源,提高系统稳定性

Kubernetes K8S之资源控制器RC、RS、Deployment详解 Kubernetes的资源控制器ReplicationController(RC)、ReplicaSet(RS)、Deployment(Deploy)详解与示例 阅读详情

相关推荐

k8s中控制器使用详解

k8s控制器

congge 7335

Kubernetes(k8s)中的五种控制器

一般情况下,我们并不直接创建 Pod,而是通过 Deployment 来创建 Pod,由Deployment 来负责创建、更新、维护其所管理的所有 Pods。

justlpf的专栏 3161

K8s Pod控制器(第三章)完整详细总结

掌握K8s六大Pod控制器的分类、各自定位精通Deployment无状态控制器:创建、自愈、扩缩容、滚动升级、版本回退全套实操精通DaemonSet节点常驻控制器:运行逻辑、YAML编写、Master节点污点容忍配置六大控制器各有专属场景,日常运维最常用是Deployment、DaemonSet;Deployment专门管理无状态业务,底层依赖ReplicaSet,独有滚动升级、版本回退能力,支持自动扩缩容、Pod自愈;

老韩的Linux云计算架构师进阶之路 119

linux高级---k8s中的五种控制器

深入浅出的理解k8s的五种控制器

m0_54232496的博客 4580

【K8S】在 Kubernetes 上配置安装 Nginx Ingress 控制器指南

生产环境建议:使用Helm部署并启用ValidatingWebhookDNS配置:通配符域名简化路由管理安全加固限制Controller权限(RBAC)定期轮转Webhook证书性能优化:通过ConfigMap调整Nginx参数# 示例:调优keepalive连接metadata:data:完整配置参考Nginx Ingress官方文档。

qq_40205510的博客 2130

VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法

1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..

Nemuel的博客 3万+

【Kubernetes】k8s集群的Pod控制器

k8s集群的Pod控制器

weixin_68840588的博客 1394

安卓7.0+抓包难题:雷电模拟器9.0+Charles系统证书安装全攻略

HTTPS协议通过SSL/TLS加密保障网络通信安全,其核心机制依赖于证书信任链。在Android系统中,自7.0版本起,谷歌收紧了证书信任策略,默认仅信任系统预置的CA证书,这直接导致了传统抓包方法失效。理解这一原理对于移动开发、测试及安全研究至关重要,它揭示了应用层安全策略与系统底层机制的关联。通过将用户证书安装至系统信任区,可以突破此限制,实现HTTPS流量的解密与分析。这一技术在App调试、接口测试、安全审计等场景中具有广泛的应用价值。本文以雷电模拟器9.0和Charles抓包工具为例,详细演示了如

weixin_42521843的博客 279

Kubernetes—K8S的Pod控制器

帮助用户管理无状态的pod资源,精确反应用户定义的目标数量,但是RelicaSet不是直接使用的控。字段决定的,默认为OrderedReady,如果设置为Parallel则并行的管理Pod)创建、扩容是升序进行的(顺序为Pod标识从0到n-1),滚动升级、缩容是倒序进行的(顺序为。一次性的部署短期任务的Pod资源,Pod容器不会持续运行,并要求任务执行完毕后容器成功退出。周期性的部署短期任务的Pod资源,Pod容器不会持续运行,并要求任务执行完毕后容器成功退出。制器,而是使用Deployment。

aran2002的博客 1042

OpenCV实战:5分钟搞定图像拼接(附Python代码)

本文通过OpenCV实战教程,详细讲解如何使用Python在5分钟内完成图像拼接。重点介绍`findHomography`函数和单应性矩阵的应用,提供完整的代码示例和常见问题解决方案,帮助开发者快速掌握图像拼接技术。

weixin_26833503的博客 120

(6)NUC980 SPI Nand 启动

方式一:下载到SPI-NAND-Flash中,这种方式可以将程序固化到SPIflash中,可以掉电保存。第二种方式下载到DDR中程序掉电丢失,但是DDR调试方便,时候调试的时候使用。之前的设置都是基于SD卡启动,今天测试一下是用SPI flash启动。方式二: 下载到DDR中,①设置为USB启动②下载到DDR中③运行。1:烧写BootLoader。

卤煮小鱼的博客 1752

【Kubernetes】k8s集群Pod控制器

理论是将简单的东西复杂化,理念是将复杂的东西简单化

F12138X的博客 2134

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 287

【kubernetes】关于k8s集群的pod控制器

1、statefulset用于部署有状态的应用(有实时数据需要存储的应用)2、部署statefulset之前,需要先创建一个headless service(表示clusterip为node的特殊service类型),statefulset的配置清单模板需要去指定servicename为headless service的名称。3、statefulset创建的pod名称是固定不变的,且唯一的。

liu_xueyin的博客 1675

论文解读--Phase Noise in FMCW Radar Systems

相位噪声是现代雷达、通信、光谱和计量系统的基本性能参数之一。本文提出了一种适用于FMCW雷达系统的相位噪声理论。导出了一个新的设计方程,用于确定雷达系统中允许的源相位噪声电平的最大界。分析了在传输延迟小于参考振荡器相干时间时,相干混频引起的非线性相位噪声去相关函数;讨论了在传输延迟大于参考振荡器相干时间时,目标响应的频谱展宽。提出了收发链中各子系统的影响,并讨论了一种新的ADC相位噪声模型。介绍了相位噪声建模技术,然后将锁相环频率合成器与低噪声频率合成器进行比较,以演示减少相位噪声边带以改善检测和跟踪性能。

奔袭的算法工程师 3766

电能质量仿真:电能质量改善措施仿真_(12).电能质量改善措施综合仿真案例

假设我们有一个微电网系统,该系统包含分布式电源(如光伏板、风力发电机)、储能设备、负荷和电网连接。电压波动:由于负荷的波动和分布式电源的间歇性输出,系统电压出现了不稳定的情况。谐波污染:非线性负荷和逆变器的运行导致系统中出现了显著的谐波污染。频率偏差:分布式电源的波动和负荷的突变导致系统频率出现了偏差。我们需要通过仿真来评估这些问题的影响,并提出相应的改善措施。

2401_87715305的博客 1360

快速入门Kubernetes(K8S)——资源控制器

一、什么是控制器 Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为 二、控制器类型 ReplicationController 和 ReplicaSet Deployment DaemonSet StateFulSet Job/CronJob Horizontal Pod Autoscaling 2.1 ReplicationController 和 ReplicaSet ReplicationController(RC)用

大数据记录 3618

Python爬虫:招聘网站岗位要求、薪资与求职者数据爬取与分析

通过本文的教程,我们学习了如何通过 Python 编写招聘数据爬虫,爬取招聘网站上的岗位要求、薪资和求职者数据,并通过数据存储、清洗、分析和可视化,获取有价值的信息。网站如智联招聘、猎云网、前程无忧等,都提供了大量的招聘信息,包括岗位要求、薪资范围、工作经验、学位要求、招聘公司等。本文将介绍如何通过 Python 编写爬虫,爬取招聘网站上的岗位要求、薪资、求职者数据,并通过数据存储、分析和可视化等手段,为求职者或招聘者提供实用的信息和决策支持。通过循环抓取多个页面的数据,可以获取不同岗位的信息。

2201_76125261的博客 722

kubernetes(k8s)—控制器

1.控制器的类型 Pod的分类 自主式Pod: Pod退出后不会被创建 控制器管理的Pod: 在控制器的生命周期里,始终要维持Pod的副本数目。 控制器的类型 <1> Replication Controller和ReplicaSet ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet。 ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持 新的基于集合的选择器需

xy_的博客 505

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【云原生_K8S系列】Kubernetes 控制器简介

Kubernetes是一个开源的容器编排平台,旨在自动化部署、扩展和管理容器化应用。Kubernetes 的核心组件之一是控制器(Controller),它负责确保集群中的实际状态与用户定义的期望状态一致。控制器是Kubernetes控制平面的一个重要组成部分,通过持续监控集群的状态并执行必要的操作来维护集群的健康和稳定。

didiplus 1918

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

K8s控制器Replicaset

实际生产环境一般采用蓝绿发布,原来有一个rs1,再创建一个rs2(控制器),通过修改service标签,修改service可以匹配到rs2的控制器,这样才是蓝绿发布,这个也需要我们精心的部署规划,我们有一个控制器就是建立在rs之上完成的,叫做Deployment。template: pod资源模板:如果集群中现存的pod数量不够我们定义的副本中期望的数量怎么办,需要新建pod,这就需要pod模板,新建的pod是基于模板来创建的;手动杀死一个pod,让其重新生成pod,镜像地址也换成新的了。

abcy071213的博客 822

【云原生_K8S系列】Kubernetes 控制器之 Deployment

Deployment 是 Kubernetes 中的一个控制器,它管理 Pod 的副本集(ReplicaSet)。通过定义 Deployment,用户可以描述一个应用的期望状态,例如需要多少个副本、使用什么镜像以及如何进行滚动更新。Deployment 会根据这些定义自动创建和管理 Pod,确保应用始终处于期望状态。动态创建和销毁 Pod查看升级进度和状态升级回滚,并具有版本记录暂停和恢复升级滚动重启Kubernetes Deployment 是管理应用生命周期的强大工具。

didiplus 2725

【k8s应用管理】kubernetes Pod控制器

作用:用于管理 Pod 的中间层,确保 Pod 资源符合预期状态。当 Pod 出现故障时,控制器会尝试重启或重建 Pod。常见类型ReplicaSet:确保指定数量的 Pod 副本运行。Deployment:管理无状态应用,支持滚动更新和回滚。DaemonSet:确保每个节点运行一个 Pod 副本。:管理有状态应用,支持稳定的网络标识和持久化存储。Job:运行一次性任务。CronJob:运行周期性任务。

Karoku的博客 1316

Kubernetes(k8s)之控制器

控制器控制器类型rs控制器DeploymentDaemonSetJobCronJobHPAStatefulSet 控制器类型 Pod 的分类: 自主式 Pod:Pod 退出后不会被创建 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目 控制器类型: Replication Controller和ReplicaSet Deployment DaemonSet StatefulSet Job CronJob HPA全称Horizontal Pod Autoscaler Stateful

Tuki来了 276

Kubernetes(K8s)Pod控制器详解-06

Pod控制器详解

qq_36255346的博客 6355

【Kubernetes知识点问答题】kubernetes 控制器

说明 K8s 控制器的作用 ReplicaSet,说明它的主要用途 Deployment 控制器的工作原理,举例说明其常见用途 解释 DaemonSet,列举其使用场景 StatefulSet 及其主要作用 Job 与 CronJob 的功能

Songyaxuan075118的博客 1095
上一篇: yaml文件详解
下一篇: Helm工具安装
梅比乌斯N
博客等级 码龄4年 287粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值