副本机制和其他控制器

第三章:副本机制和控制器 在上一节中,学会了如何创建、监控和管理pod,但在实际应用中,我们希望部署能自动保持运行,并且保持健康,无需手动干预任何东西,而要做到以上几点,我们需要创建或Deployment这类资源,由他们来创建并管理实际的pod。 阅读详情

每个节点上运行一个pod

pod执行系统级别的与基础结构相关的操作,比如希望在每个节点上运行日志收集器和资源监控器时需要每个节点上都运行一个这样的pod

使用DaemonSet在每个节点上运行一个pod

DaemonSet对象没有期望副本数的概念,它的工作是确保一个pod匹配它的选择器并在每个节点上运行,DaemonSet创建的pod,已经有一个指定的目标节点并跳过Kubernetes调度器,不是随机分配在集群上。

使用DaemonSet在特定节点上运行pod

DaemonSet可以通过在pod模板中的nodeSelector属性指定pod要运行的节点,即使节点设置为不可调度,因为DaemonSet管理的pod完全绕过调度器。

创建DaemonSet
  1. 创建一个DaemonSet YAML文件
    apiVersion: apps/v1beta2 #DaemonSet在apps的API组中,版本是v1beta2
    kind: DaemonSet          #定义类型
    metadata:
        name: ssd-monitor    #DaemonSet名
    spec:
        selector:
            matchLabels:
                app: ssd-monitor  #定义匹配pod标签选择器
        template:
            metadata:
                labels:
                    app: ssd-monitor #pod标签
            spec:
                nodeSelector:
                    disk: ssd   #节点选择器
                containers:
                -   name: main  #容器名
                    image: luksa/ssd-monitor #指定pod运行镜像
  1. 创建DaemonSet
    kubectl create -f ssd-monitor-daemonset.yaml
  1. 查看创建的DaemonSet
    kubectl get ds
节点添加标签
  1. 查询所有节点
    kubectl get nods
  1. 给节点添加标签
    kubectl label node 节点名 disk=ssd
  1. 查看DaemonSet在节点上创建pod
    kubectl get po
  1. 修改节点标签
    kubectl label node 节点名 disk=hdd --overwrite
  1. DaemonSet将从该节点终止pod
    kubectl get po

执行单个任务的pod

在一个可完成任务中,进程终止后,不应该再重新启动,不同于ReplicationController、ReplicaSet和DaemonSet会持续运行任务,没有完成状态。

Job资源简介

Kubernetes通过Job资源提供了对可完成任务的支持。Job资源允许你运行一种pod,该pod在内部进程成功结束时,不重启容器,一旦任务完成,pod就被认为处于完成状态。如果节点发生故障,Job管理的pod将按照ReplicaSet的pod方式重新安排在其他节点上,如果该进程本身异常退出,可以将pod配置为重新启动容器。

定义Job资源

    apiVersion: batch/v1    #Job属于batch API组,版本为v1
    kind: Job
    metadata:
        name: batch-job
    spec:
        template:
            metadata:
                labels: 
                    app: batch-job  #指定pod标签(没有指定pod选择器将根据pod模板中的标签创建)
            spec:
                restartPolicy: OnFailure #Job不能使用Always为默认的重新启动策略
                containers:
                -   name: main
                    image: luksa/batch-job

pod通过restartPolicy指定进程结束是Kubernetes会做什么,默认为Always。对于Job资源需明确将重启策略设置为OnFailure或Never

查看Job运行pod

  1. 创建Job
    kubectl create -f exporter.yaml
  1. 查看Job资源
    kubectl get jobs
  1. 查看pod状态
    kubectl get po

pod执行完任务之后将会标记为完成不在出现在pod列表中,可通过–show-all(或-a)查看所有pod
4. 查看执行完成Job日志

    kubectl logs pod名

在Job中运行多个pod实例

Job可以创建多个pod实例,并以并行或串行方式运行

顺序运行pod

需要一个Job运行多次,则可以将completions设置为你希望作业的pod运行多少次

    apiVersion: batch/v1
    kind: Job
    metadata:
        name: multi-completion-batch-job
    spec:
        completions: 5 #串行运行5个pod
        tempalte:
        ....
并行运行Job pod

通过parallelism Job配置属性,指定允许多少个pod并行执行

    apiVersion: batch/v1
    kind: Job
    metadata:
        name: multi-completion-batch-job
    spec:
        completions: 5
        parallelism: 2
        template:
        .....
Job的缩放

在Job运行时可以更改Job的parallelism属性让Job增加或减少pod

    kubectl scale job multi-completion-batch-job --replicas 3
限制Job pod完成任务时间

通过activeDeadlineSeconds属性可以限制pod的时间,如果pod运行时间超过此时间,系统将尝试终止pod,并将Job标记为失败。spec.backoffLimit配置Job被标记为失败后重试次数,默认6次

定期运行或在将来运行一次pod

Kubernetes中的cron任务通过创建CronJob资源进行配置

创建一个CronJob
    apiVersion: batch/v1betal   #API组是batch,版本是v1beta1
    kind: CronJob                   
    metadata:
        name: batch-job-every-fifteen-minutes
    spec:
        schedule: "0,15,30,45 * * * *" #这项任务在每天每小时0、15、30和45分钟运行
        jobTemplate:
            spec:
                template:
                    metadata:
                        labels:
                            app: periodic-batch-job
                    spec:
                        restartPolicy: OnFailure
                        containers:
                        -   name: main
                            image: luksa/batch-job

了解计划任务运行方式

在计划时间内,CronJob资源会创建Job资源,然后Job创建pod。可能存在Job或pod创建并运行相对较晚,可以通过startingDeadlineSeconds字段指定截止日期

    apiVersion: batch/v1beta1
    kind: CronJob
    spec:
        schedule: "0,15,30,45 * * * *"
        startingDeadlineSeconds: 15 #pod最迟必须在预定时间后15秒开始运行

如果任务超过预定时间任务将不会运行,并将显示为Failed。CronJob总是为计划中配置的每个执行创建一个Job,但也可能会同时创建俩个Job,或根本不创建,因此你的任务应该是幂等的,确保下一个任务运行完成本应该由上一次(错过的)运行完成的任何工作

Kubernetes 实战 —— 04. 副本机制和其他控制器:部署托管的 pod 保持 pod 健康 P84 只要 pod 调度到某个节点,该节点上的 Kubelet 就会运行 pod 的容器,从此只要该 pod 存在,就会保持运行。如果容器的主进程奔溃, Kubelet 就会自动重启容器;如果应用程序奔溃, Kubelet 就会自动重启应用程序。 P84 应用程序也可能因为无限循环或死锁等情况而停止响应。为确保应用在这种情况下可以重新启动,必须从外部检查应用程序的运行状况,而不是依赖于应用的内部检测。 P84 介绍存活探测器 P84 Kubernetes 可以通过存活探测器 (live 阅读详情

相关推荐

云卓遥控器+DIY高清摄像机的方案(完美接入原系统)

发云卓H16 1080P数图控三合一10公里 其中它月

fgh00000的博客 1万+

Linux企业应用——kubernates(五)之工作负载资源、 ReplicaSet控制器、Deployment控制器、 DaemonSet控制器、Job与CronJob控制器

deploymnet控制器会去先拉取replicaset控制器,通过replicaset控制器去拉取Pod容器。可以发现只有k8s2和k8s3两个节点部署,这是因为为了保持稳定性,master节点上有一个污点。• 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目。给daemonset控制器加上容忍参数后,master节点成功部署。修改标签之后,会自动拉取一个新的符合旧标签条件的pod容器。• 自主式 Pod:Pod 退出后不会被创建。要解决这个,控制器需要设置容忍。

energylocked的博客 462

炸金花游戏(3)--基于EV(期望收益)的简单AI模型

前言:   炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章:  德州扑克AI--Programming Poker AI(译).  系列文章说来惭愧, 之前一直叫嚷着写德州AI, 不过可惜懒癌晚期, 一直没去实践, T_T. 相比而言,***简单很多, 也更偏重于运...

weixin_30377461的博客 2344

DaemonSet概念及常用操作

DaemonSet 适合发布比如日志收集,监控,分布式存储,CNI插件等需要host守护的应用.

教Linux的李老师 715

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 289

全面解析 SAP 事务码 LTMOM 的应用与实践

综上所述,事务码 LTMOM 是 SAP 系统中不可或缺的迁移对象维护工具,它不仅提供了对数据迁移对象的精细配置功能,还通过灵活的数据转换规则与异常监控机制,为企业数据从 SAP ERP 向 SAP S/4HANA 的迁移提供了坚实保障。在数据迁移过程中,并非所有的迁移对象都需要同时启用。业内专家普遍认为,未来的系统升级与数据迁移将更注重业务需求的动态变化与数据实时性的要求,而 LTMOM 作为核心工具,其在流程自动化、数据智能校验以及跨系统数据联动方面的能力,将直接影响企业整体数字化转型的成败。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1013

超实用的 Kubernetes 日常运维常用命令

k8s常用命令

sinat_41542983的博客 806

工业级Modbus ASCII实时监控系统(WinForms完整实现)

本文介绍了一个基于WinForms的工业级Modbus ASCII实时监控系统实现方案。该系统采用经典工控界面布局,包含串口配置、数据采集控制和实时数据显示三大区域。核心功能包括:串口通信参数设置、Modbus从站地址配置、寄存器数据采集、实时数据表格展示和趋势图绘制。系统通过ModbusAsciiClient类实现通信核心,采用定时器轮询机制采集数据,支持最多100个数据点的历史趋势显示。界面设计注重用户体验,配置区位于左侧,主显示区在右侧,底部为状态和日志区,符合工业控制系统的操作习惯。代码示例展示了窗

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 279

【 博客583】k8s常用集群运维操作命令汇总

k8s常用集群操作命令汇总。

qq_43684922的博客 1350

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

### 工具主要用于测试ECU的诊断功能。关于自动化诊断测试可以分为如下内容: ### -> 1、根据诊断需求规范进行cdd文件的编辑(现阶段主要是诊断问卷调查表); ### -> 2、新建Diva工程,导入对应的诊断数据库文件生成测试用例; ### -> 3、新建CANoe工程,导入CANoe.DiVa生成的Diva工程; ### -> 4、根据测试报告进行错误处理。

Soly_kun的博客 3561

边缘设备部署全攻略——ARM架构设备的OpenClaw优化(2026实测)

本文详细介绍了ARM架构设备上OpenClaw的部署与优化方案。针对边缘计算场景,文章系统分析了三类ARM设备:嵌入式设备(如Raspberry Pi 4、Jetson Nano)、工业设备(如BeagleBone、i.MX8M Plus)和服务器设备(如Marvell Armada、AWS Graviton3),并提供了详细的性能与功耗对比数据。在系统配置方面,重点推荐了Ubuntu ARM、Debian ARM和OpenWRT三种操作系统,包括内核版本、必备软件包和针对边缘环境的优化策略(如CPU频率调

博客 410

【K8S】Kubernetes 中 API 资源对象之 DaemonSet

我们在使用 deployment 对象部署服务的时候虽然可以通过 replicas 字段指定 Pod 的副本数,但是我们没办法指定Pod 的分布。但是存在这样的情况,我们只想在一个节点上部署一个服务实例,这时我们需要 DaemonSet。

Transient_的博客 440

HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:安全测试

通过对HarmonyOS应用生命周期建模和应用攻击面建模,采用静态数据流分析技术,提高漏洞发现的准确率,同时覆盖20余种攻击面,65+漏洞测试项,帮助开发者提前发现和识别漏洞隐患。在检测报告中,会针对每一项漏洞风险项给出明确的修复建议,可以帮助开发者快速修复漏洞。

斌擎科技 1183

Kubernetes——使用副本机制和控制器部署托管Pod

2、副本机制和控制器部署托管Pod 当需要pod能够自动保持运行,并且保持健康时,通常会创建ReplicationController或Deployment这样的资源来托管Pod,接着由它们来创建并管理实际的pod。 当创建未托管的pod时 ,会选择一个集群节点来运行pod, 然后在该节点上运行容器。Kubemetes会监控这些容器, 并且在它们失败的时候自动重新启动它们。 **但是如果整个节点失败,那么节点上的pod会丢失,并且不会被新节点替换。**除非这些pod被控制器托管。 2.1 保持Pod健康 在

nswdiphone6的博客 839

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

《Kubernetes in action》副本机制和其他控制器

Kubernetes资源类型

qq_36652517的博客 363

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

k8sその三 副本机制和其他控制器

写在前面:12月20号,airpods pro到了。11月27号买的,18号才发货,虽然预计时12月27号到货。说实话很期待,iphone 11很大程度也只是为了体验下这个耳机才买的。刚戴上,感觉这个世界都安静了。。然后,感觉音质就那个亚子吧,我一直觉得自己对音质还是有追求的,直到我确认我是个木耳。。。。总的来说还是挺香的,前提不考虑价格的,, 还有,就是21号开始考研结束了,我是个局外人,说实...

日上フブキのブログ 731

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

《kubernetes in action》 学习笔记——4、副本机制和其他控制器

(本文章是学习《kubernetes in action》 一书时做的笔记,由于本人是刚学习k8s,且自学方式就是把它敲一遍,然后加一些自己的理解。所以会发现很多内容是跟书中内容一模一样,如果本文是对本书的侵权,敬请谅解,告知后会删除。如果引用或转载,请注明出处——谢谢) 4、副本机制和其他控制器 livenees probe 存活探针readiness probe 可读性探针(或称为就绪探针)...

WuYuChen20的博客 484

Chapter04 副本机制和其他控制器: 部署托管的 pod

Chapter04 副本机制和其他控制器: 部署托管的 pod 书籍 kubernetes in action 摘要笔记 操作系统:centos7.6 kubernetes:v1.11.5 kb = kubectl 有些步骤只 cat file,还需要 kb apply -f file replication controller rc (replication controller)使用 lab...

Man_In_The_Night的博客 191

k8s--(3)副本机制和其他控制器:部署托管的pod

如果一个容器内的主进程挂了,也就是容器从内部挂了,kubelet自然能检测到容器的失败并重启容器,但试想一个java程序崩溃了,但JVM的程序还在运行,这个容器看起来依然在运行,但实际已经没有提供任何可用的服务了,这时候kubelet是不会重启容器的,所以要有一种从外部检测容器失败的机制,来保持pod的健康运行,即存活探针。(1)一定要检查应用程序的内部。如果将上述pod的app=kubia的标签删了,rc则认为少了一个pod,会启动一个新的打这个标签的pod,原来的pod不归任何rc管理,可以随意删除。

weston666的博客 1148

Kubernetes in Action 4 副本机制和其他控制器:部署托管的pod

Kubernetes可以通过存活探针(liveness probe)检查容器是否还在运行。可以为pod中的每个容器单独指定存活探针。如果探测失败,Kubernetes将定期执行探针并重新启动容器。

沛哥儿的专栏 911

副本机制和其他控制器(ReplicationController和ReplicaSet)

RC(ReplicationController)的三个部分 label selector 标签选择器 replica count 副本个数 pod template pod 模板 RC的好处 确保pod持续运行 pod的水平收缩 kubectl edit rc kubia //修改ReplicationController模板 kubectl get rc //显示所有ReplicationController kubectl scale rc kubia --replicas=3 // 修改副本个数

qq_42576512的博客 122

Kafka复习(二):控制器、Kafka副本机制、为什么Kafka不支持主从读写分离、高水位和Leader Epoch、Kafka重平衡

四、控制器 控制器组件(Controller)主要作用是在ZooKeeper的帮助下管理和协调整个Kafka集群。集群中任意一台Broker都能充当控制器角色,在运行过程中,只能有一个Broker成为控制器。控制器是重度依赖ZooKeeper的 1、控制器的选举 Broker在启动时,会尝试去ZooKeeper中创建/controller临时节点,第一个成功创建/controller临时节点的Broker会被指定为控制器 ZooKeeper中还有一个与控制器有关的持久节点/controller_epoch,

hxt的博客 1161

副本机制和其他控制器(DaemonSet和Job)

在每个节点上创建一个pod(守护进程)apiVersion: apps/v1 kind: DaemonSet metadata: name: ssd-monitor spec: selector: matchLabels: app: ssd-monitor template: metadata: labels: app: ssd-monitor spec: nodeSelector: disk: ssd containers: - name: main image: luksa/ssd-monitor k

qq_42576512的博客 130

副本机制和其他控制器(探活指针)

探活指针(liveness probe) 1 http get 2 尝试与容器指定端口建立tcp链接 3 exec 指针在容器内执行任意命令 `apiVersion: v1 kind: Pod metadata: name: "kubia-liveness" spec: containers: - name: "kubia" image: "luksa/kubia-unhealthy" livenessProbe: httpGet: path: "/...

qq_42576512的博客 109
上一篇: 归并排序
下一篇: 客户端发现pod并与之通信
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值