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

【Kubernets】Deployment 和 StatefulSet 有什么区别?什么时候用 StatefulSet?

Deployment 和 StatefulSet 的区别

在 Kubernetes 中,DeploymentStatefulSet 都用于管理 Pod,但它们适用于不同的场景。


1. Deployment:管理无状态应用

特点

  • 无状态:Pod 之间相互独立,不需要保持顺序和唯一性。
  • 滚动更新:支持平滑升级和回滚。
  • 负载均衡:通过 Service 轻松实现流量分发。
  • Pod 名称动态生成:例如 nginx-deployment-xxxxx,每次重启 Pod 名称会变化。
  • 场景:适用于 Web 应用、API 网关、微服务等。

示例

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latest

2. StatefulSet:管理有状态应用

特点

  • 有状态:每个 Pod 都有唯一的标识(如 web-0, web-1, web-2)。
  • 稳定的网络标识:每个 Pod 的 DNS 名称保持不变。
  • 持久存储:使用 PersistentVolumeClaim (PVC),即使 Pod 被销毁,数据仍然保留。
  • 顺序启动与终止:按照顺序创建和删除 Pod(web-0 -> web-1 -> web-2)。
  • 场景:适用于数据库(MySQL、PostgreSQL)、消息队列(Kafka、RabbitMQ)等。

示例

apiVersion: apps/v1
kind: StatefulSet
metadata:name: web
spec:serviceName: "web"replicas: 3selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:latest

3. Deployment 与 StatefulSet 的核心区别

特点DeploymentStatefulSet
是否有状态无状态有状态
Pod 标识动态生成,重启后变化稳定唯一(如 web-0, web-1
存储可共享存储,但不持久持久存储(通过 PVC 绑定)
启动顺序无序启动按顺序启动
场景Web 服务、API 网关数据库、消息队列

4. 什么时候用 StatefulSet?

使用 StatefulSet 的典型场景

  1. 数据库集群(如 MySQL、PostgreSQL、MongoDB)

    • 每个节点需要持久存储数据。
    • 需要主从关系或一致性。
  2. 消息队列(如 Kafka、RabbitMQ)

    • 需要唯一节点标识和持久存储。
  3. 分布式存储系统(如 Ceph、GlusterFS)

    • 每个节点有独立的存储空间,并保持顺序性。
  4. 需要有序启动/停止的应用

    • 如 ZooKeeper 或 Consul。

使用 Deployment 的典型场景

  1. 无状态 Web 应用
  2. API 网关
  3. 微服务架构
  4. 后台任务处理

🎯 总结

如果你的应用需要持久存储唯一标识顺序启动,就选择 StatefulSet
如果只是无状态服务,部署高可用和弹性扩缩容,选择 Deployment


https://github.com/0voice

相关文章:

【Kubernets】Deployment 和 StatefulSet 有什么区别?什么时候用 StatefulSet?

Deployment 和 StatefulSet 的区别 在 Kubernetes 中,Deployment 和 StatefulSet 都用于管理 Pod,但它们适用于不同的场景。 1. Deployment:管理无状态应用 特点: 无状态:Pod 之间相互独立,不需要保持顺…...

Machine Learning: 十大基本机器学习算法

机器学习算法分类:监督学习、无监督学习、强化学习 基本的机器学习算法: 线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。 机器学习算法大致可以分为三类: 监督学习算法 (Sup…...

洛谷 P2801 教主的魔法 题解

之前学过 莫队 算法,其运用了分块思想;但是我居然是第一次写纯种的分块题目。 题意 给你一个长度为 n n n 的序列 a a a(一开始 ∀ a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ∀ai​∈[1,1000])。要求执行 q q q 次操作&…...

【八股文】ArrayList和LinkedList的区别

先讲讲两者是如何实现的 ArrayList public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {transient Object[] elementData; private int size; } 通过源码可以看出&#xff0c;ArrayLis…...

函数的引用/函数的默认参数/函数的占位参数/函数重载

函数的引用 #include<iostream> using namespace std;//引用的本质在c内部实现&#xff0c;是一个指针常量//交换函数 //1.值传递 void mySwap01(int a, int b) {int temp a;a b;b temp; }//2.地址传递 void mySwap02(int *a, int *b) {int temp *a;*a *b;*b temp…...

《鸿蒙系统下AI模型训练加速:时间成本的深度剖析与优化策略》

在当今数字化浪潮中&#xff0c;鸿蒙系统凭借其独特的分布式架构与强大的生态潜力&#xff0c;为人工智能的发展注入了新的活力。随着AI应用在鸿蒙系统上的日益普及&#xff0c;如何有效降低模型训练的时间成本&#xff0c;成为了开发者与研究者们亟待攻克的关键课题。这不仅关…...

.npy文件介绍

.npy 文件是 NumPy 库专用的二进制文件格式&#xff0c;用于高效存储和加载 NumPy 数组&#xff08;即矩阵或多维数组&#xff09;。这种格式保留了数组的维度、数据类型&#xff08;dtype&#xff09;、形状&#xff08;shape&#xff09;等元信息&#xff0c;加载时无需手动解…...

汇编语言 | 王爽 | 学习笔记

汇编语言 | 王爽 | 学习笔记 文章目录 汇编语言 | 王爽 | 学习笔记一、基础知识1、指令2、存储器3、总线1、总线2、CPU对存储器的读写3、CPU对外设的控制 4、内存地址空间 二、寄存器1、寄存器2、通用寄存器3、8086CPU给出物理地址的方法4、段寄存器1、CS和IP2、DS 和 [address…...

JumpServer基础功能介绍演示

堡垒机可以让运维人员通过统一的平台对设备进行维护&#xff0c;集中的进行权限的管理&#xff0c;同时也会对每个操作进行记录&#xff0c;方便后期的溯源和审查&#xff0c;JumpServer是由飞致云推出的开源堡垒机&#xff0c;通过简单的安装配置即可投入使用&#xff0c;本文…...

java字符串案例 //要求:将输入的字符串中的数字转换为罗马数字,长度小于9(运用方法:查表法)

package test13; import test11.S;import java.util.Scanner; public class Num {public static void main(String[] args){ // I II III IV V VI VII VIII IX//要求&#xff1a;将输入的字符串中的数字转换为罗马数字,长度小于9&#xff08;运用方法&#xff1a;查表法&#x…...

EDID读取学习

简介 Video BIOS可以被认为是一个具有独立硬件抽象层的操作系统。它不会阻止或监视操作系统、应用程序或设备驱动程序对硬件的直接访问。虽然不推荐,但一些DOS应用程序确实可以改变基本的硬件设置,而根本不需要通过视频BIOS。大多数现代应用程序和操作系统都避免直接使用硬件…...

【笔记】深度学习模型训练的 GPU 内存优化之旅:综述篇

开设此专题&#xff0c;目的一是梳理文献&#xff0c;目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化&#xff0c;所以最初思考的专题名称是“显存突围&#xff1a;深度学习模型训练的 GPU 内存优化之旅”&#xff0c;英文缩写是 “MLSys_GPU_Memory_Opt”。…...

车载以太网测试-13【网络层-IGMP协议】

目录 1 摘要2 IGMP协议概述2.1 IGMP 在 TCP/IP 协议栈中的位置2.2 IGMP 与以太网的关系2.3 为什么需要IGMP协议&#xff1f;2.4 IGMP报文结构2.4.1 IGMPv1 报文结构2.4.2 IGMPv2 报文结构2.4.3 IGMPv3 报文结构 3 IGMP通信原理3.1 GMP 的通信流程3.2 IGMP协议完整流程示例 4 总…...

2024山东大学计算机复试上机真题

2024山东大学计算机复试上机真题 2024山东大学计算机复试机试真题 历年山东大学计算机复试上机真题 历年山东大学计算机复试机试真题 在线评测&#xff1a;传动门&#xff1a;pgcode.cn 最长递减子序列 题目描述 输入数字 n&#xff0c;和 n 个整数&#xff0c;输出该数字…...

Vue 计算属性与 Data 属性同名问题深度解析

文章目录 1. 问题背景与核心概念1.1 Vue 响应式系统架构1.2 核心概念定义 2. 同名问题的技术分析2.1 同名场景示例2.2 问题发生机制 3. 底层原理剖析3.1 Vue 初始化流程3.2 响应式系统关键代码 4. 问题解决方案4.1 最佳实践建议4.2 错误处理机制 5. 性能影响分析5.1 递归调用性…...

深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)

在 ESP32 及其他 Xtensa 架构 MCU 中&#xff0c;内存被划分为不同的区域&#xff0c;以优化性能和存储管理。这些内存区域包括 SRAM, IRAM, DRAM, IROM, DROM&#xff0c;它们各有用途。 1. 内存区域总览 ESP32 的内存架构主要由&#xff1a; SRAM&#xff08;Static RAM&am…...

每日一题——63. 不同路径 II

题目链接&#xff1a;63. 不同路径 II - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();…...

如何配置 Docker 以实现无需 sudo 使用

1. 背景知识&#xff1a;为什么需要 sudo&#xff1f; Docker 是一个容器化平台&#xff0c;其核心组件包括&#xff1a; Docker 守护进程&#xff08;dockerd&#xff09;&#xff1a;负责管理容器的创建、运行和销毁。Docker CLI&#xff1a;用户通过命令行工具&#xff08…...

[文献阅读] 可变形卷积DCN - Deformable Convolutional Networks

**文献信息&#xff1a;**Deformable Convolutional Networks arxiv.org/abs/1703.06211 发表于ICCV 2017&#xff0c;提出了可变形卷积DCN&#xff08;Deformable ConvNets&#xff09; 摘要 卷积神经网络&#xff08;CNN&#xff09;由于其构建模块固定的几何结构天然地局限…...

【统计学相关笔记】2. 多元正态的Cochran定理

fisher 引理 如何说明一个线性变换和二次型独立&#xff1a; 二次型矩阵和线性变换阵乘积0即可。...

蓝桥杯刷题——第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

一、0握手问题 - 蓝桥云课 算法代码&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;题意很清晰&#xff0c;累加即可。 二、0小球反弹 - 蓝…...

Canoe Panel常用控件

文章目录 一、Panel 中控件分类1. 指示类控件2. 功能类控件3. 信号值交互类控件4. 其他类控件 二、控件使用方法1. Group Box 控件2. Input/Output Box控件3. Static Text控件4. Button控件5. Switch/Indicator 控件 提示&#xff1a;Button 和 Switch 的区别参考 一、Panel 中…...

【软考-架构】11.3、设计模式-新

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 项目中的应用设计模式创建型设计模式结构型设计模式行为型设计模式 &#x1f4af;考试真题题外话 项目中的应用 在实际项目中&#xff0c;我应用过多种设计模式来解决不同…...

【后端】【django】Django 自带的用户系统与 RBAC 机制

Django 自带的用户系统与 RBAC 机制 Django 自带的用户系统&#xff08;django.contrib.auth&#xff09;提供了 身份验证&#xff08;Authentication&#xff09; 和 权限管理&#xff08;Authorization&#xff09;&#xff0c;能够快速实现 用户管理、权限控制、管理员后台…...

洛谷每日1题-------Day20__P1401 [入门赛 #18] 禁止在 int 乘 int 时不开 long long

题目描述 在比赛中&#xff0c;根据数据范围&#xff0c;分析清楚变量的取值范围&#xff0c;是非常重要的。int 类型变量与 int 类型变量相乘&#xff0c;往往可能超出 int 类型可以表示的取值范围。 现在&#xff0c;给出两个 int 类型变量 x,y 及其取值范围&#xff0c;请…...

【大模型(LLMs)RAG 检索增强生成 面经】

1 RAG 基础面 1.1 为什么大模型需要外挂 (向量) 知识库? 如何将外部知识注入大模型,最直接的方法:利用外部知识对大模型进行微调。 思路: 构建几十万量级的数据,然后利用这些数据 对大模型进行微调,以将 额外知识注入大模型 优点: 简单粗暴 缺点: 这几十万量级的数据…...

Centos 7 安装达梦数据库

一、环境准备 1. 确认操作系统的版本和数据库的版本是否一致 cat /etc/redhat-release 2. 关闭防火墙 查看防火墙状态 firewall-cmd --state 停止firewall systemctl stop firewalld.service 禁止firewall开机启动 systemctl disable firewalld.service 3. 修改文件l…...

@Autowired 注解在构造器上的使用规则(字段注入也挺好的)

背景 在看Spring Framework官方文档时&#xff0c;看到这样一段描述&#xff1a; As of Spring Framework 4.3, an Autowired​ annotation on such a constructor is no longer necessary if the target bean defines only one constructor to begin with. However, if seve…...

深度学习视觉2D检测算法综述

目录 一、两阶段目标检测算法 1.1 R-CNN&#xff08;Region-based CNN&#xff0c;2014&#xff09; 1.2 Fast R-CNN&#xff08;Fast Region-based CNN&#xff0c;2015&#xff09; 1.3 Faster R-CNN&#xff08;Faster Region-based CNN&#xff0c;2016&#xff09; 1…...

复试不难,西电马克思主义学院—考研录取情况

01、马克思主义学院各个方向 02、24马克思主义学院近三年复试分数线对比 PS&#xff1a;马院24年院线相对于23年院线增加15分&#xff0c;反映了大家对于马克思主义理论学习与研究的热情高涨&#xff0c;也彰显了学院在人才培养、学科建设及学术研究等方面的不断进步与成就。 6…...