pod控制器

k8s——pod控制器 服务发现:就是应用服务之间相互定位的过程。动态性强:Pod会飘到别的node节点更新发布频繁:互联网思维小步快跑,先实现再优化,老板永远是先上线再慢慢优化,先把idea变成产品挣到钱然后再慢慢一点一点优化支持自动伸缩:一来大促,肯定是要扩容多个副本K8S里服务发现的方式—DNS,使K8S集群能够自动关联Service资源的“名称”和“CLUSTER-IP”,从而达到服务被集群自动发现的目的。一个完整的 StatefulSet 控制器由。 阅读详情

一、前言

    在 Kubernetes 中,Pod 控制器是一种控制器对象,负责管理一组相关联的 Pod,并确保它们按照用户定义的规范进行运行。Pod 控制器负责 Pod 的创建、更新和删除,并确保它们的副本数保持在用户指定的范围内,Kubernetes 中常见的几种 Pod 控制器有以下几种ReplicaSet、Deployment、StatefulSet、DaemonSet、Job 和 CronJob

二、使用

deployment

Deployment 构建在 ReplicaSet 之上,提供了对 Pod 的声明式部署和更新。Deployment 允许用户定义应用程序的期望状态,并处理部署的滚动更新。它还支持回滚操作,以便在更新过程中发生问题时回滚到先前的稳定状态,用于部署无状态服务

apiVersion: apps/v1
kind: Deployment
metadata: 
  labels:
    app: api-gateway
  name: api-gateway
  namespace: java-service
spec:
  replicas: 2
  progressDeadlineSeconds: 600
  minReadySeconds: 10
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  selector:
    matchLabels:
      app: api-gateway
  template:
    metadata:
      labels:
        app: api-gateway
    spec:
      containers:
      - name: api-gateway
        image: harbor.apex.com/jdk/api-gateway:1.0.6
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8888
        readinessProbe:
          tcpSocket:
            port: 8888
          initialDelaySeconds: 30
          periodSeconds: 10
          timeoutSeconds: 2
          successThreshold: 1
          failureThreshold: 2
        livenessProbe:
          tcpSocket:
            port: 8888
          initialDelaySeconds: 30
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 2
          failureThreshold: 2 
      restartPolicy: Always

daemonset

DaemonSet 用于在 Kubernetes 集群的每个节点上运行一个副本的 Pod。它通常用于部署运行系统级任务的 Pod,如日志收集、监控、网络代理等。DaemonSet 中的 Pod 在节点加入和离开集群时会自动调度和删除

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: elk
  labels:
    app: filebeat
spec:
  selector:
    matchLabels:
      app: filebeat
  template:
    metadata:
      labels:
        app: filebeat
    spec:
      serviceAccountName: filebeat
      terminationGracePeriodSeconds: 30
      containers:
      - name: filebeat
        image: elastic/filebeat:7.17.10
        args: [
          "-c", "/etc/filebeat.yml",
          "-e",
        ]
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        securityContext:
          runAsUser: 0
        resources:
          limits:
            cpu: 200m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 100Mi

statefulset

StatefulSet 用于管理有状态应用程序,如数据库。与 ReplicaSet 不同,StatefulSet 中的每个 Pod 都有唯一的标识符和稳定的网络标识符。StatefulSet 确保 Pod 的创建和删除顺序,并提供持久性存储,以便在 Pod 重新调度或故障转移时保留数据

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  namespace: rabbitmq
spec:
  podManagementPolicy: Parallel   #所有pod并行执行
  serviceName: rabbitmq-headless    #使用无头服务的svc
  selector:
    matchLabels:
      app: rabbitmq  
  replicas: 3  #副本数3
  template:
    metadata:
      labels:
        app: rabbitmq
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - rabbitmq
              topologyKey: "kubernetes.io/hostname"
      serviceAccountName: rabbitmq
      terminationGracePeriodSeconds: 10
      containers:
      - name: rabbitmq
        image: rabbitmq:3.10-management
        securityContext:
          runAsUser: 1000
        resources:
          limits:
            cpu: 2
            memory: 2Gi
          requests:
            cpu: 1
            memory: 1Gi
        volumeMounts:
          - name: config-volume
            mountPath: /etc/rabbitmq
          - name: rabbitmq-data
            mountPath: /var/lib/rabbitmq/mnesia
        ports:
          - name: http
            protocol: TCP
            containerPort: 15672
          - name: amqp
            protocol: TCP
            containerPort: 5672
        livenessProbe:
          exec:
            command: ["rabbitmq-diagnostics", "status"]
          initialDelaySeconds: 60
          periodSeconds: 60
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command: ["rabbitmq-diagnostics", "status"]
          initialDelaySeconds: 20
          periodSeconds: 60
          timeoutSeconds: 5
        imagePullPolicy: Always
      volumes:
      - name: config-volume
        configMap:
          name: rabbitmq-config
          items:
          - key: rabbitmq.conf
            path: rabbitmq.conf
          - key: enabled_plugins
            path: enabled_plugins
  volumeClaimTemplates:
  - metadata:
      name: rabbitmq-data
    spec:
      storageClassName: "rabbitmq-pv"
      accessModes: [ "ReadWriteMany" ]
      resources:
        requests:
          storage: 30Gi

job、cronjob

Job 用于一次性任务的批处理作业,而 CronJob 用于周期性执行任务的作业。它们负责创建一个或多个 Pod 来执行任务,并在任务完成后终止 Pod。CronJob 可以按照预定的时间表周期性地执行 Job

apiVersion: batch/v1
kind: Job
metadata:
  name: data-backup-job
spec:
  template:
    spec:
      containers:
      - name: backup-container
        image: backup-image
        # 填写容器的其它配置
      restartPolicy: OnFailure

使用cronjob需要注意,二进制部署的k8s可以使用正常的时间,但是kubeadm部署的k8s会有时区问题,填写时间时需要在正常的时间减掉8小时,包括执行的程序里面包含时间的也需要减掉8小时,例如早上八点执行只需要填写0点

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: data-cleanup-cronjob
spec:
  schedule: "0 0 * * *"   #每天凌晨执行数据清理任务
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cleanup-container
            image: cleanup-image
            # 填写容器的其它配置
          restartPolicy: OnFailure
  # 设置 CronJob 的执行计划为每天凌晨执行

k8s 中 Pod 的控制器 Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元。所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了。Pod 控制器由 master 的组件提供,常见的此类控制器有和 CronJob 等,它们分别以不同的方式管理 Pod 资源对象。关于 pod 中的几个控制器最常用的就是 Deployment 和 ReplicaSet;使用 Deployment 来管理 RS,来实现服务的部署,更新和滚动升级;StatefulSet 主要用来管理无状态应用; 阅读详情

相关推荐

彻底解决0x80070005错误代码:全面分析与实战指南

0x80070005错误代码虽然令人头疼,但通过上述方法,我们完全有能力将其攻克。从检查磁盘空间、设置账号权限,到运行疑难解答和系统文件检查器,再到调整相关服务状态,每一步都是解决这一问题的关键。希望本文能为你提供有力的帮助,让你在使用Windows系统的过程中更加顺畅无忧。

nntxthml的博客 6938

K8S—Pod控制器

Pod控制器是 Kubernetes 中用于管理和控制 Pod 的重要资源,包括 ReplicaSet 和 Deployment 等。它们通过定义 Pod 模板来创建和管理 Pod 副本,实现自动扩缩容、滚动更新、故障恢复等功能。Pod 控制器负责监控 Pod 的运行状态,确保其符合用户定义的规则和策略。Pod 控制器是 Kubernetes 应用生命周期管理的关键组件,提供了丰富的功能和灵活的配置选项,帮助用户轻松管理和运维应用程序的 Pod 资源。

qq_64441401的博客 1466

检索增强世界模型(R-WoM)原理与应用实践

世界模型是AI系统理解环境的核心技术,通过构建环境的内部表示实现状态预测和行动规划。传统方法基于RNN或VAE等神经网络,而检索增强世界模型(R-WoM)创新性地引入检索机制,结合外部记忆库提升系统性能。这种架构突破模型参数限制,使AI能像人类一样利用历史经验解决问题,在游戏AI、虚拟助手等场景表现优异。关键技术包括FAISS相似性搜索、分层记忆管理和动态检索策略,其中Transformer编码器和GRU动态模型的组合实现高效环境建模。实践表明,该方法可提升47%的战术多样性,加快32%的应急响应速度。

weixin_42676876的博客 341

Kubernetes的pod控制器

Pod 控制器(工作负载workload)是 Kubernetes 中用于管理 Pod 的中间层资源,其主要职责是确保 Pod 的运行状态符合用户的期望。在 Pod 出现异常时,控制器会根据设定的策略尝试恢复 Pod 的运行(会先重启,当重启策略无效的时候,重新创建新的pod资源,再删除旧的不好用的pod)。

2301_80613136的博客 1016

华为eNSP实战:手把手教你配置DHCP全局地址池(含AP固定IP分配)

本文通过华为eNSP模拟器,详细演示了如何配置DHCP全局地址池,为不同业务VLAN动态分配IP地址,并重点讲解了如何通过MAC地址绑定为接入点(AP)分配固定IP。文章涵盖了从拓扑设计、基础网络搭建到地址池精细配置、验证测试及常见故障排查的全流程,是网络工程师掌握企业级DHCP部署与AP管理的实用指南。

weixin_29235923的博客 600

解决RK3566 USB OTG模式识别问题:从原理图分析到otg_mode文件操作全解析

本文深入解析RK3566 USB OTG模式识别问题,从硬件原理图设计到Linux内核的otg_mode文件操作,提供全面的调试方案。针对USB_OTG0_ID引脚电路设计、电源管理关联及内核驱动交互等关键点,给出实战调试技巧和常见问题解决方案,帮助开发者高效解决USB OTG模式切换难题。

eee77的博客 866

Pod控制器详解

自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建控制器创建的pod:kubernetes通过控制器创建的pod,这种pod删除了之后还会自动重建什么是Pod控制器Pod控制器是管理pod的中间层,使用Pod控制器之后,只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod资源在运行中出现故障,它会基于指定策略重新编排Pod。

wuke165的博客 1387

ALTERA MAX10 FPGA 串口远程升级实战:从原理到烧录的避坑指南

本文详细解析了ALTERA MAX10 FPGA如何通过串口实现远程升级。文章从工程师实战经验出发,深入剖析了MAX10片内Flash的双镜像备份原理、CONFIG_SEL引脚启动机制,并重点介绍了使用On-Chip Flash IP核进行擦写操作的核心流程。同时,提供了从Quartus工程配置、RPD文件生成、串口协议设计到驱动代码编写的完整避坑指南,旨在帮助开发者稳定、高效地完成远程升级功能部署。

weixin_29197699的博客 274

《Kubernetes》Pod详解+Pod控制器

本文深入介绍Kubernetes中的Pod资源及其控制器: Pod详解 结构:包含用户容器和根容器(pause) 工作方式:自主式Pod和控制器管理Pod(推荐) 配置:详细解析YAML文件各字段 生命周期:创建/终止过程、5种状态 Pod调度 定向调度:NodeName/NodeSelector 亲和性调度:Node/Pod亲和性与反亲和性 污点与容忍:节点排斥机制 Pod控制器 ReplicaSet:保证副本数量 Deployment:管理ReplicaSet,支持滚动升级 StatefulSet:管理

2301_80348933的博客 930

微信小程序 - 苹果ios无法播放视频、安卓android手机可以播放,使用video播放MP4视频时安卓正常播放视频iOS无法播放出现黑屏、加载失败或一片黑没反应等(uniapp微信小程序也能解决)

微信小程序ios无法播放视频,微信小程序 video标签 ios不能播放视频或视频黑屏,ios无法播放视频,android手机可以播放,视频格式为mp4,uniapp微信小程序安卓设备android可以播放在线网络视频 ,苹果ios设备无法播放视频,微信小程序 video标签 ios不能播放视频或视频黑屏,安卓手机正常播放iPhone手机却黑屏,如何解决这个问题,在线播放视频URL链接,iOS无法播放MP4视频文件的解决方案,在Android设备上可以正常播放,但在iOS设备上却出现黑屏、无法加载或无法播放

🏆 前端领域优质创作者 1万+

基于opencv的鱼群检测和数量统计识别鱼群密度带界面

摘要:本项目利用OpenCV图像处理技术实现了视频鱼类自动检测计数系统。通过背景减除、形态学处理和轮廓检测等方法,在视频帧中标记鱼类并统计数量。系统包含视频读取、前景提取、轮廓分析、中心点跟踪等核心功能,可实时显示计数结果。适用于水产养殖、生态监测等领域,具有实用价值。未来可通过参数优化、引入深度学习和多目标跟踪技术进一步提升准确性。(147字)

1720

pod控制器的类型、job控制器

对基于控制器创建的pod,delete pod相当于对pod重启,并不能删除pod,必须要把控制器删除,pod也会自动删除。有状态的部署,pod的名称是固定的,一旦创建永久不变,增加副本数,也是有序的递增。有状态的副本需要持久化存储,因为每一个pod都要有一个自己的独立的挂载卷。使用场景:主要用于数据库,数据库必须要有指定的编号,比如redis和ELK中的ES。使用场景:需要在每个节点都部署,或者是需要在后台运行的pod。定时任务 Cronjob:使用场景:需要定期执行的任务,比如环境扫描,健康检查。

Hai990218的博客 1191

lammps案例:堆垛层错能的计算

大家好,我是小马老师。 本文介绍如何使用lammps计算晶体的堆垛层错能。 正常晶体中的原子按照一定的规律排列,原子面按ABCABC……的顺序排列,如下图所示: 当某个原子面被抽出后会形成堆垛层错,如图中的蓝色原子层被抽出,原子面排列变为ABCBCA……: 可通过计算堆垛层错能形成前后的能量差计算堆垛层错能,计算公式为: E0为初始能量 Ef为删除一个原子面后的能量 A为界面面积 下面分享一个lammps计算堆垛层错能的in代码,本代码由Richard Glaze完成,本文稍作修改并进行了注释,以供初

lammps_jiayou的博客 5436

Kubernetes——Pod控制器详解

Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类:自主式podkubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建控制器创建的podkubernetes通过控制器创建的pod,这种pod删除了之后还会自动重建什么是Pod控制器?Pod控制器是管理pod的中间层,使用Pod控制器之后,只需要告诉Pod控制器,想要多少个什 么样的Pod。

wzpny的博客 932

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Pod 控制器

如上所述,一个完整的 StatefulSet 控制器由一个 Headless Service、一个 StatefulSet 和一个 volumeClaimTemplate 组成。

fhjtg的博客 1094

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Kubernetes Pod控制器

Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。如上所述,一个完整的 StatefulSet 控制器由一个 Headless Service、一个 StatefulSet 和一个 volumeClaimTemplate 组成。

Kiryu7的博客 1187

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Kubernetes集群Pod控制器

Pod 控制器是一种 K8s 对象,设计用于管理和维护 Pod 实例。它们不是直接操作 Pod,而是通过与 K8s API 交互来间接控制 Pod,从而保证即使面对节点故障、Pod 终止或其他意外情况,也能维持应用的高可用性和期望的部署配置。自动扩缩容根据预设策略自动增加或减少Pod副本的数量,以应对负载变化或确保服务的高可用性。自我修复当检测到Pod由于各种原因(如节点故障、容器崩溃)不再运行时,控制器会自动创建新的Pod副本以替换故障实例,保持预期的Pod数量和配置。滚动更新。

wys_jj的博客 1213

Pod控制器

由于 StatefulSet 资源依赖于一个实现存在的 Headless 类型的 Service 资源,所以需要先定义一个名为 myapp-svc 的 Headless Service 资源,用于为关联到每个 Pod 资源创建 DNS 资源记录。当有 Node 加入集群时,也会为他们新增一个 Pod。Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。

asdfg___xiaobai的博客 774

K8S中POD的控制器

Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。pod控制器有多种类型: 1、ReplicaSet: 代用户创建指定数量的pod副本,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能。 ReplicaSet主要三个组件组成: (1)用户期望的pod副本数量 (2)标签选择器,判断哪个pod归自己管理 (3)当现存的pod数量不足,会根据pod资

m0_65299341的博客 933
上一篇: pod介绍
下一篇: docker-compose使用
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值