当前位置: 首页 > news >正文

【Kubernetes】k8s集群Pod控制器

目录

一.Pod控制器作用

二.Pod控制器类型

1.Deployment(简称deploy) + ReplicaSet(简称rs)

2.StatefulSet(简称sts)

创建SatefulSet控制器

3.DaemonSet(简称ds)

4.Job

5.CronJob(简称cj)


一.Pod控制器作用

Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预

期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的

资源

二.Pod控制器类型

1.Deployment(简称deploy) + ReplicaSet(简称rs)

Deployment

  • 部署无状态应用(没有实时数据需要存储)
  • 负责创建和管理ReplicaSet,维护Pod副本数与预期状态保持一致
  • 负责创建和删除控制器管理的Pod资源,有多个Pod副本时是并行创建启动的,升级策略默认为滚动更新的方式

应用场景:web服务

#获取创建资源的命令
kubectl create deployment XXX  --image   --dry-run=client -o yaml  >  XXX.yaml
kubectl get deployment XXX  -o yaml >  XXX.yaml
kubectl edit deployment XXX ;手动复制#更新资源
kubectl set deployment XXX  容器=镜像名
kubectl edit deployment XXX
kubectl apply -f XXX.yaml#回滚资源
kubectl rollout history  deployment XXX
kubectl rollout undo  deployment XXX  --to-revision=N#发布资源
kubectl expose deployment XXX  --port   --target-port   --type

ReplicaSet

代用户创建指定数量的pod副本,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩

容功能。

ReplicaSet主要三个组件组成:

  • 用户期望的pod副本数量
  • 标签选择器,判断哪个pod归自己管理
  • 当现存的pod数量不足,会根据pod资源模板进行新建

帮助用户管理无状态的pod资源,精确反应用户定义的目标数量,但是RelicaSet不是直接使用的控

制器,而是使用Deployment

2.StatefulSet(简称sts)

部署有状态应用(有实时数据需要存储,且数据有上下文的关系)

需要提前创建一个Headless Service资源(无头服务,ClusterIP为None的service资源),在sts资

源配置中使用serviceName字段指定Headless Service资源名称

每个Pod名称标识都是唯一且固定不变的(标识为 0 到 n-1)

每个Pod都可以有自己专属的持久化存储(基于PVC模板 volumeClaimTemplates 实现的)

K8S集群内的Pod可以通过 <Pod名称>.<Headless Service资源名称>.<命名空间> 格式解析出sts控

制器管理的Pod资源的PodIP(基于Headless Service和CoreDNS实现的)

创建、滚动升级、扩容、缩容Pod副本时默认都是有序进行的(由sts.spec.podManagementPolicy

字段决定的,默认为OrderedReady,如果设置为Parallel则并行的管理Pod)

创建、扩容是升序进行的(顺序为Pod标识从0到n-1),滚动升级、缩容是倒序进行的(顺序为

Pod标识从n-1到0)

Service资源的类型:4个常规类型(ClusterIP、NodePort、LoadBalancer、ExternalName)+

1个特殊类型(Headless Service)

常见的应用场景:数据库

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

创建SatefulSet控制器

创建SatefulSet控制器,必须先创建Headless Service
vim demo1-svc.yaml 
apiVersion: v1
kind: Service
metadata:labels:app: demo1-svcname: demo1-svcnamespace: xy101
spec:ports:- name: httpport: 8080protocol: TCPtargetPort: 80selector:app: myapptype: ClusterIPclusterIP: None                 #设置为none即创建Headless Servicekubectl apply -f demo1-svc.yaml 
kubectl get svc -n xy101

vim demo2-sts.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: demo2-stsname: demo2-stsnamespace: xy101
spec:serviceName: demo1-svc           #此处名字必与创建的svc资源名称一致replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}kubectl apply -f demo2-sts.yaml
kubectl get pod -n xy101

扩容
kubectl scale -n xy101 statefulset demo2-sts --replicas=6
SatefulSet控制器创建资源、扩容都是有序创建
缩容
kubectl scale -n xy101 statefulset demo2-sts --replicas=3
SatefulSet控制器缩容是倒序进行
删除
当删除-个 Statefulset 时,该 Statefulset 不提供任何终止 Pod 的保证。为了实现 Statefulset 中的 Pod 可以有序且体面地终止,可以在删除之前将 Statefulset 缩容到 0kubectl delete -n xy101 pod demo2-sts-1 #删除前后pod名称不会发生改变

解析pod的ip

kubectl run -n xy101 demo-pod --image=soscscs/myapp:v1  #测试pod
kubectl exec -it -n xy101 demo-pod -- sh
cat /etc/resolv.conf
nslookup pod名称.svc名称.统一的域名
nslookup demo2-sts-0.demo1-svc.xy101.svc.cluster.local

kubectl scale -n xy101 statefulset demo2-sts --replicas=0
kubectl scale -n xy101 statefulset demo2-sts --replicas=3
kubectl exec -it -n xy101 demo-pod -- sh
nslookup demo2-sts-0.demo1-svc.xy101.svc.cluster.local

滚动升级

kubectl set image -n xy101 sts demo2-sts myapp=soscscs/myapp:v2  #倒序进行升级

持久化存储

vim demo2-sts.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: demo2-stsname: demo2-stsnamespace: xy101
spec:serviceName: demo1-svcreplicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:- name: demo2-sts-pvcmountPath: /mntvolumeClaimTemplates:- metadata:name: demo2-sts-pvcspec:accessModes:- ReadWriteOnceresources:requests:storage: 2GistorageClassName: nfs-client-storageclasskubectl apply -f demo2-sts.yaml 
kubectl get pod -n xy101
kubectl get pv,pvc -n xy101
kubectl exec -it -n xy101 demo2-sts-0 -- sh
/ # cd /mnt
/mnt # echo '123' > x.txt
/mnt # exit
kubectl exec -it -n xy101 demo2-sts-1 -- sh
/ # cd /mnt
/mnt # echo '234' > y.txt
/mnt # exit
kubectl delete -n xy101 pod demo2-sts-0
kubectl delete -n xy101 pod demo2-sts-1
pod "demo2-sts-1" deleted
kubectl get pod -n xy101 #无论怎么删除pod,数据都不会丢失

3.DaemonSet(简称ds)

通常用于部署需要在每个node节点上都要部署的daemon(守护进程)级别的无状态应用

理论上可以在K8S集群的所有node节点上都创建一个相同的Pod副本,无论node节点何时加入到

K8S集群(需要考虑到taint污点和cordon不可调度的影响)

ds资源配置不需要设置Pod副本数量replicas

应用场景:Agent

vim demo3-ds.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata:labels:app: myappname: myapp-dsnamespace: xy101
spec:selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}

4.Job

一次性的部署短期任务的Pod资源,Pod容器不会持续运行,并要求任务执行完毕后容器成功退出

且不再重启

Job资源配置的容器重启策略要求不能设置为Always,一般设置为 Never(推荐)或 OnFailure

如果任务执行失败导致Pod容器异常退出,Job会根据backoffLimit字段的值决定重建Pod来重试任

务的次数(默认为6)

应用场景:数据库迁移、批处理脚本、kube-bench扫描、离线数据处理,视频解码等业务

https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

vim demo4-job.yaml 
apiVersion: batch/v1
kind: Job
metadata:labels:app: demo4-jobname: demo4-jobnamespace: xy101
spec:template:metadata:labels:app: myappspec:volumes:- name: scj-volhostPath:path: /data/volumestype: DirectoryOrCreatecontainers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80command:- sh- -c- "for i in $(seq 1 10); do echo scj like xjj on $(data) >> /mnt/scj.txt; sleep 1; done; exit 0"                    #只执行十次每隔一秒volumeMounts:- name: scj-volmountPath: /mntresources: {}restartPolicy: Never

vim demo4-job.yaml
apiVersion: batch/v1
kind: Job
metadata:labels:app: demo4-jobname: demo4-jobnamespace: xy101
spec:backoffLimit: 2      #设置job失败后进行重试的次数template:metadata:labels:app: myappspec:volumes:- name: scj-volhostPath:path: /data/volumestype: DirectoryOrCreatecontainers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80command:- sh- -c- "for i in $(seq 1 10); do echo scj like xjj on $(data) >> /mnt/scj.txt; sleep 1; done; exit 1"volumeMounts:- name: scj-volmountPath: /mntresources: {}restartPolicy: Neverkubectl apply -f demo4-job.yaml

5.CronJob(简称cj)

周期性的部署短期任务的Pod资源,Pod容器不会持续运行,并要求任务执行完毕后容器成功退出

且不再重启

Job资源配置的容器重启策略要求不能设置为Always,一般设置为 Never(推荐)或 OnFailure

Job会根据schedule字段设置的周期表去执行任务,格式为"分  时  日  月  周",支持 - / , 符号

应用场景:通知,备份

https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

vim demo5-cj.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:labels:app: demo5-cjname: demo5-cjnamespace: xy101
spec:schedule: "*/1 * * * *"           #周期性执行任务concurrencyPolicy: Allow          #CronJob 允许并发任务执行startingDeadlineSeconds: 20       #过了截止时间20秒,CronJob 就不会开始任务successfulJobsHistoryLimit: 3     #保留的成功完成的任务数failedJobsHistoryLimit: 3         #保留已完成和失败的任务数jobTemplate:spec:#backoffLimit: 2template:metadata:labels:app: myappspec:volumes:- name: scj-volhostPath:path: /data/volumestype: DirectoryOrCreatecontainers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80command:- sh- -c- "for i in $(seq 1 10); do echo scj like xjj on $(data) >> /mnt/scj.txt; sleep 1; done; exit 0"volumeMounts:- name: scj-volmountPath: /mnt

相关文章:

【Kubernetes】k8s集群Pod控制器

目录 一.Pod控制器作用 二.Pod控制器类型 1.Deployment&#xff08;简称deploy&#xff09; ReplicaSet&#xff08;简称rs&#xff09; 2.StatefulSet&#xff08;简称sts&#xff09; 创建SatefulSet控制器 3.DaemonSet&#xff08;简称ds&#xff09; 4.Job 5.Cron…...

什么是NLP实体识别?

目录 1. 实体识别的基本概念 1.1 什么是实体识别&#xff1f; 1.2 实体识别的应用场景 2. 实体识别的常用方法 2.1 基于规则的方法 2.1.1 规则定义与模式匹配 2.2 基于机器学习的方法 2.2.1 特征工程与传统机器学习模型 2.3 基于深度学习的方法 2.3.1 神经网络模型 …...

掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘

Jenkins自动化部署是现代软件开发中不可或缺的一部分&#xff0c;它不仅简化了代码的发布过程&#xff0c;还为整个团队带来了无与伦比的效率和协作力。想象一下&#xff0c;开发者们可以专注于编写高质量的代码&#xff0c;而不是为繁琐的手动部署所烦恼&#xff1b;测试人员能…...

糟糕界面集锦-控件篇09

目前我们还无法确定该把这个问题划到哪个类别中&#xff0c;但是如图所示&#xff0c;在一个列表框中只显示3 个项目无疑是愚蠢的。 这是微软的文件管理器提供的文件关联界面&#xff0c;用户需要把某一个特定类型的文件与一个应用程序关联时会弹出该对话框。如示例&#xff1a…...

喵喵蓝牙热敏打印机(下)

目录 前言一、电量、温度、缺纸检测1.电量检测2.针头温度检测3.缺纸检测 二、蓝牙APP通信打印1.蓝牙初始化2.APP通信打印 三、FreeRTOS任务整合 前言 喵喵蓝牙热敏打印机&#xff08;上&#xff09; 内容有点多&#xff0c;就分为了上下两篇。 一、电量、温度、缺纸检测 先启…...

软件测试第1章 软件测试是什么

目录​​​​​​​ 内容说明 一、软件测试与质量概览需要熟悉什么 二、如何理解质量保证 三、软件测试的误区-程序员和测试的关系 四、软件测试是什么&#xff1f; 五、软件测试的目的 六、软件测试与软件质量保证 七、软件测试的必要性 八、软件测试的基本概念分析 …...

【技术分享】 hysteria2从服务端到客户端部署教程

hysteria2从服务端到客户端部署教程 前言 在如今的网络环境中&#xff0c;尤其是涉及跨国访问的场景中&#xff0c;hysteria2作为一个新兴的传输协议工具&#xff0c;凭借其高效的传输能力和灵活的配置方式&#xff0c;受到了越来越多用户的青睐。本教程将带您一步步完成hyst…...

C++入门基础知识16

C 的关键字&#xff08;接上一篇博文&#xff01;&#xff01;&#xff01;&#xff09; 54. typeid 指出指针或引用指向的对象的实际派生类型。 55. typename typename&#xff08;类型名字&#xff09;关键字告诉编译器把一个特殊的名字解释成一个类型。在下列情况下必须对一…...

浏览器调试工具-Chrome Dev Tools

浏览器调试模式下的各个调试工具是常用的工具集&#xff0c;能够帮助开发者理解、调试和优化网页。 1.打开方式 直接在浏览器中按下F12键右键点击页面上的任一元素&#xff0c;选择“检查”&#xff08;Inspect&#xff09;在浏览器右上角点击菜单按钮&#xff0c;选择“更多…...

基于车联网大数据平台的用户驾驶习惯行为画像分析

近年来&#xff0c;新能源汽车行业的迅速发展推动了汽车智能化的趋势。新能源汽车上配备了成千上万的传感器&#xff0c;这些传感器采集了大量的行车数据被用于车辆运行状况的监控与分析。另一方面&#xff0c;采集到的大量行车数据&#xff0c;也能很好地体现用户的驾驶习惯。…...

Ubuntu24.04搭建maxkb开发环境

接上文&#xff1a;windows10搭建maxkb开发环境&#xff08;劝退指南&#xff09; 上文在windows10环境搭建maxkb开发环境遇到各种坑&#xff0c;后面就转战ubuntu平台&#xff0c;果然比较顺利的完成开发环境搭建。当然遇到相关的问题还是可以参考上文《windows10搭建maxkb开发…...

C++ 指针和引用的区别

1.引用在定义时必须初始化&#xff0c;而指针没有要求 2.引用一旦引用了一个实体就不能在引用其它实体&#xff0c;指针可以在任何时候指向同一类型的指针 3.没有空引用&#xff0c;但是有空指针 4.在sizeof中含义不同&#xff1a;引用结果为引用类型的大小&#xff0c;但指…...

python绘制蕨菜叶分形

一花一叶一世界,一草一木一浮生. 使用了四个不同的线性变换&#xff0c;根据概率选择其中一个变换并更新 x 和 y 坐标。然后将生成的绿色点绘制出来&#xff0c;形成一片蕨菜叶。 import numpy as np import matplotlib.pyplot as pltdef fern_fractal(num_points):# 初始化坐…...

1分钟了解pandas

Pandas 是一个强大的 Python 库&#xff0c;用于数据分析和数据处理。它为 Python 提供了高效的数据结构和数据分析工具&#xff0c;使得数据操作变得简单而直观。Pandas 由 Wes McKinney 在 2008 年创建&#xff0c;并迅速成为数据科学领域中最受欢迎的库之一。 安装 Pandas …...

django-celery应用-定时执行测试cases

1、celery周期性任务 简介-----celery beat 是一个调度程序&#xff0c;它定期启动任务&#xff0c;然后由集群中的可用工作节点执行这些任务。 django-celery-beat celery默认的调度程序是 celery.beat.PersistentScheduler &#xff0c;它简单地跟踪本地 shelve 数据库文件中…...

【C++深度探索】unordered_set、unordered_map封装

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;C从入门至进阶 这里将会不定期更新有关C/C的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目录…...

CSS——字体背景(Font Background)

一、字体族 1、字体的相关样式&#xff1a; ① color 用来设置字体颜色&#xff08;前景颜色&#xff09; ② font-size 字体的大小 和font-size相关的单位&#xff1a; em 相对于当前元素的一个font-size rem 相对于根元素的一个font-size ③ font-family 字体族&#x…...

秋招突击——8/15——知识补充——Socket通信

文章目录 引言正文基于TCP协议的Socket通信基于UDP协议的Socket通信服务端如何接收更多项目多进程多线程IO多路复用select轮询IO多路复用epoll事件通知 使用Socket实现同一个机器上的多线程通信服务端创建对应socket监听端口客户端发起对应的连接请求 总结 引言 上次面试腾讯的…...

Qt第十四章 模型视图

Model/View(模型/视图&#xff09;结构 文章目录 Model/View(模型/视图&#xff09;结构简介视图组件Model/View结构的一些概念项目控件组&#xff08;item Widgets&#xff09;模型/视图 如何使用项目视图组设置行的颜色交替变换拖拽设置编辑操作其他操作 选择模型自定义选择多…...

硬件工程师必须掌握的MOS管详细知识

MOS管&#xff0c;全称为金属-氧化物半导体场效应晶体管&#xff08;Metal-Oxide-Semiconductor Field-Effect Transistor&#xff0c;MOSFET&#xff09;&#xff0c;是一种重要的半导体器件&#xff0c;广泛应用于电子工业中各种电路的开关、放大、调制、数字电路和模拟电路等…...

电子商务设计师软考备战:特别篇 - 综合模拟与备考策略

1. 考试形式与内容结构1.1 考试基本信息考试科目与时间基础知识考试&#xff1a;上午9:00-11:30&#xff08;150分钟&#xff09;应用技术考试&#xff1a;下午2:00-4:30&#xff08;150分钟&#xff09;题型与分值分布上午考试&#xff08;基础知识&#xff09;&#xff1a; -…...

LangGraph状态机工程:构建复杂AI工作流的完整指南

传统RAG&#xff08;检索增强生成&#xff09;在处理简单的"单跳"问题时表现良好——“文章里提到了什么” “这个概念是什么意思”——但当问题涉及多个实体之间的关系、需要跨多个文档推理时&#xff0c;传统RAG就显得力不从心。GraphRAG&#xff08;Graph-based R…...

用图神经网络做缺陷定位,准确率比传统方法高出30%

在现代软件工程的复杂迷宫中&#xff0c;缺陷定位始终是测试团队面临的核心挑战。想象这样一个场景&#xff1a;一个电商系统在特定压力条件下偶发订单丢失&#xff0c;日志中只留下泛泛的超时错误&#xff0c;问题可能深藏在上百个微服务的调用链、分布式事务的竞态条件或某个…...

从NLP到RAG:AI标书生成系统的技术架构与落地路径深度剖析

引言2026年2月&#xff0c;国家发改委等八部门联合印发《关于加快招标投标领域人工智能推广应用的实施意见》&#xff0c;明确到2026年底招标文件检测、智能辅助评标、围串标识别等重点场景在部分省市实现全覆盖。同一时期&#xff0c;《招标投标法》修订草案经国务院常务会议原…...

Unity开发者速查手册:Sora 2模型权重量化适配指南(INT8精度损失<0.3%,已验证于RTX 4090/Apple M3 Ultra)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Sora 2与Unity整合概述 Sora 2 是 OpenAI 推出的下一代视频生成模型&#xff0c;具备高保真时序建模与物理感知能力&#xff1b;而 Unity 作为主流实时3D开发引擎&#xff0c;广泛用于游戏、仿真与数字孪生场…...

Android Compose 图层的合成 : BlendMode

1. 图形的合成是什么 ? Compose中&#xff0c;图层的合成&#xff0c;通过BlendMode来控制 “显示谁、保留哪部分”&#xff0c;常用于裁剪、遮罩、图层叠加。 1.1 初始界面 Preview Composable fun MyBlendModeTest() {Box {Box(Modifier.size(100.dp).background(Color.R…...

2023B卷,最佳植树距离

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:华为OD面试 文章目录 一、🍀前言 1.1 ☘️题目详情 1.2 ☘️参考解题答案 一、🍀前言 2023B卷,最佳植树距离。 1.1 ☘️题目详情 题目: 小明在直…...

抖音内容自动化采集与管理的技术实现方案

抖音内容自动化采集与管理的技术实现方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具&am…...

Wand-Enhancer:3步解锁WeMod专业版功能的完整用户指南

Wand-Enhancer&#xff1a;3步解锁WeMod专业版功能的完整用户指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否厌倦了WeMod免费版的种种限制&a…...

Seraphine:英雄联盟玩家的5大核心功能终极助手,一键提升游戏体验

Seraphine&#xff1a;英雄联盟玩家的5大核心功能终极助手&#xff0c;一键提升游戏体验 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款专为《英雄联盟》玩家设计的智能游戏辅助工具&#xf…...