一、StatefulSet 基础概念

1. 与 Deployment 的关键区别

特性StatefulSetDeployment
网络标识稳定的 DNS 名称随机生成
存储每个 Pod 独立 PVC,数据持久化 共享存储或无状态
启停顺序严格按序号顺序(0→N-1 启动,N-1→0 停止)并行
适用场景数据库、消息队列(如 MySQL, Kafka)Web 服务等无状态应用

2. 核心组件

  • Headless Service:提供稳定的 DNS 域名解析(无 ClusterIP),格式:svc.cluster.local
  • volumeClaimTemplates:动态为每个 Pod 创建 PVC,确保存储与 Pod 绑定。
  • Pod 标识规则:名称固定为 <StatefulSet 名称>-<序号>(如 web-0web-1)。

二、StatefulSet 核心特性解析

1. 有序部署与扩缩容

  • 扩容:从序号 0 开始顺序创建,前一个 Pod 进入 Running 状态后才创建下一个 。
  • 缩容:逆序终止(从最高序号开始),确保前置 Pod 完全终止后再处理下一个。

kubectl scale statefulset web-nginx --replicas=5  # 扩容至 5 个副本
kubectl scale statefulset web-nginx --replicas=3  # 缩容至 3 个副本

2. 持久化存储机制

  • 每个 Pod 通过 volumeClaimTemplates 自动创建独立 PVC,会为每个Pod分配并创建唯一的pvc编号,每个pvc绑定对应pv,从而保证每个Pod都有独立的存储。
# 定义卷申请模板
volumeClaimTemplates:
- metadata:name: data-volumespec:accessModes: - ReadWriteManystorageClassName: managed-nfs-storageresources:requests:storage: 2Gi

三、 StatefulSet 完整示例

1.编写配置文件

#部署nginx服务
[root@master-1 yaml]# cat sts-nginx.yaml 
apiVersion: v1
kind: Service
metadata:name: nginx-headless
spec:clusterIP: None  # Headless Service 配置无头服务selector:app: nginxports:- port: 80
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: web
spec:serviceName: "nginx-headless"replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.22.1imagePullPolicy: IfNotPresentvolumeMounts:- name: data-volumemountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: data-volumespec:accessModes:- ReadWriteManystorageClassName: managed-nfs-storage   #采用动态存储类resources:requests:storage: 1Gi#查看动态存储类
[root@master-1 yaml]# kubectl get sc
NAME                  PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storage   fuseim.pri/ifs   Delete          Immediate           false                  6m59s

2.部署验证

#部署
[root@master-1 yaml]# kubectl apply -f sts-nginx.yaml
#验证
[root@master-1 yaml]# kubectl get pods -w -o wide  | grep web#查看存储
[root@master-1 yaml]# kubectl get pvc,pv#进入容器查看网络
[root@master-1 yaml]# kubectl  exec -it web-0 -- sh

   根据以下图片发现每个pod都有独立的存储,唯一的网络标识。

       掌握 StatefulSet 的核心在于理解有序性、稳定存储与网络标识的协同设计。StatefulSet一般用于有状态服务,常用于MySQL, Kafka等场景,kafka可参考链接使用StatefulSet部署kafka服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86265.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86265.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86265.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis ①②-事务

Redis 事务 先来看看 MySQL 事务的四大特性&#xff1a; 原子性&#xff1a;将事务里的多个操作打包成一个整体&#xff0c;要么全部成功&#xff0c;要么全部失败&#xff0c;失败后会进行回滚操作。一致性&#xff1a;确保事务执行前后&#xff0c;其数据的整体变化一致。隔…

Leetcode+JAVA+回溯

39.组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复…

嘉讯科技:医院电子病历系统的关键性作用

电子病历系统在现代医疗领域发挥着至关重要的作用。 电子病历系统极大地提高了医疗效率。以往&#xff0c;医生需要翻阅大量的纸质病历&#xff0c;耗费时间和精力去查找关键信息。而电子病历系统通过数字化的存储和检索方式&#xff0c;使得医生能够在短时间内获取患者的完整病…

解决 Docker 里 DrissionPage 无法连接浏览器的问题,内含直接可用的Docker镜像(DrissionPage 浏览器链接失败 怎么办?)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 报错现象与诊断 📒📑 源码🐞 DrissionPage 报错内容🐞 手动启动 Chrome 测试📒 原因分析与解决方案 📒🔍 为什么会这样?🔧 解决办法🔧 推荐方案🎯 测试🐳 可直接使用的Docker镜像 🐳📦 镜像下载地址…

Mysql 数据库中设备实时状态表水平分表

一、 需求概述 在使用 Mysql 数据库存储设备上报日志时&#xff0c;存在一张设备实时状态表&#xff0c;随着时间推移&#xff0c;数据量变得十分庞大。为了更好地管理和查询数据&#xff0c;提高数据库性能&#xff0c;需要对该表进行水平分表操作。同时&#xff0c;存在分页…

nginx的下载与安装 mac

1. 下载 方法一&#xff1a;本地下载 链接&#xff1a;https://nginx.org/en/download.html&#xff08;可直接搜官网&#xff09; 下载到本地后&#xff0c;上传到linux的某个文件夹中 方法二&#xff1a;直接linux上下载&#xff08;推荐&#xff09; wget -c http://ngi…

在 Mac 上配置 Charles,抓取 iOS 手机端接口请求

工具官网&#xff1a;https://www.charlesproxy.com/ Charles 激活码 一、简介 Charles 是一款强大的网络抓包工具&#xff0c;支持 HTTP 和 HTTPS 协议&#xff0c;适用于调试手机 App、微信小程序、H5 页面等网络请求。 它能作为代理服务器&#xff0c;转发并记录本机及其他…

较大项目 git(gitee, github) 拉取失败解决方法

问题描述 近期遇到了一个拉取一个比较大项目失败的问题&#xff0c;229M这么大 每次都失败 我在自己的PC上&#xff0c;只有极好的环境才能拉取&#xff0c;笔记本办公热点怎么都不行 解决办法 后面通过https链接 首次会报错&#xff0c;因为我输入错了gitee的username&am…

爬虫中网络知识基础

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是互联网上用于传输网页内容等数据的两种主要协议&#xff0c;以下是它们的定义和基本工作原理&#xff1a; HTTP 定义 &#xff1a;HTTP 是一种…

安全工具-二进制安全-testssl.sh

1 需求 --openssl <PATH> &#xff1a;use this openssl binary (default: look in $PATH, $RUN_DIR of testssl.sh) --quiet&#xff1a;dont output the banner. By doing this you acknowledge usage terms normally appearing in the banner --severity <severity…

WHAT - 组件库与 Storybook

文章目录 什么是 Storybook&#xff1f;使用场景举例快速上手教程&#xff08;React 为例&#xff09;1. 安装 Storybook2. 创建一个 Story&#xff08;组件故事&#xff09;3. 启动 Storybook 常用功能常见生态扩展示例&#xff1a;用 Args 和 Controls 动态控制 Props推荐资料…

魔音音乐 5.0.2 | 无损下载 同步网易云歌单UI美观

魔音音乐是一款功能丰富的音乐播放软件&#xff0c;提供高保真音质、智能推荐系统和用户友好界面。其丰富的音乐库几乎覆盖了所有类型的音乐&#xff0c;无论是流行歌曲还是小众音乐&#xff0c;都能在这里找到。这款应用非常适合音乐爱好者使用&#xff0c;它不仅让你享受高品…

云原生时代的中国答案:OLARDB、OceanBase与PostgreSQL的共生革命

以下是对阿里自研数据库的全景式技术调查,重点梳理其产品体系、与PostgreSQL的技术关联及发展历程: 一、阿里自研数据库全景图谱 ​​1. 核心自研产品​​ ​​数据库名称​​​​类型​​​​技术定位​​​​与PostgreSQL关系​​​​PolarDB​​云原生分布式数据库存储计…

HTTP 请求方法与状态码

前言&#xff1a;构建可靠前端应用的 HTTP 通信基础 在当今复杂的 Web 应用生态中&#xff0c;前端开发已远超简单的页面构建&#xff0c;转而成为与后端系统紧密交互的复杂体系。作为这一交互的核心机制&#xff0c;HTTP 协议承载着几乎所有的前后端数据交换&#xff0c;其设…

WIFI原因造成ESP8266不断重启的解决办法

一、报错 报错信息如下&#xff1a; 21:37:21.799 -> ets Jan 8 2013,rst cause:2, boot mode:(3,7) 21:37:21.799 -> 21:37:21.799 -> load 0x4010f000, len 3424, room 16 21:37:21.799 -> tail 0 21:37:21.799 -> chksum 0x2e 21:37:21.799 -> loa…

13.5-13.8. 计算机视觉【2】

文章目录 13.5. 多尺度目标检测13.5.1. 多尺度锚框13.5.2. 多尺度检测13.5.3. 小结 13.6. 目标检测数据集13.6.2. 读取数据集13.6.3. 演示 13.7. 单发多框检测&#xff08;SSD&#xff09;13.7.1. 模型13.7.1.1. 类别预测层13.7.1.2. 边界框预测层13.7.1.3. 连结多尺度的预测13…

RSS解析并转换为JSON的API集成指南

RSS解析并转换为JSON的API集成指南 引言 随着互联网的发展&#xff0c;信息的传播和共享变得越来越重要。RSS&#xff08;简易信息聚合&#xff09;作为一种广泛采用的格式&#xff0c;用于发布经常更新的内容&#xff0c;如博客文章、新闻头条或播客等。它允许用户订阅这些内…

java数据类型详解篇

1、8种基本数据类型 数据类型分类字节数内存位数是否最高位为符号位&#xff08;0正数1负数&#xff09;取值范围&#xff08;数值形式&#xff09;取值说明byte整数类型18是-128 ~ 127-2^7 ~ 2^7 - 1 &#xff08;幂形式&#xff09;short整数类型216是-32,768 ~ 32,767-2^15…

vue 浏览器样式警告:“unknown property name“

浏览器样式警告&#xff1a;"unknown property name"&#xff0c;但在部分电脑上的浏览器又是没有问题的。 这个问题因为没有安装sass或者less&#xff0c;却直接使用了他的语法&#xff0c;比如嵌套样式&#xff1a; body {/* 按钮 */.el-button {background: lin…

postgresql DDL脚本

在PostgreSQL中&#xff0c;数据定义语言&#xff08;DDL&#xff09;脚本用于定义、修改或删除数据库的结构。DDL 操作包括创建表、修改表结构、删除表等。以下是几种常见的DDL操作示例以及如何在脚本中实现它们。 1. 创建表 CREATE TABLE employees (employee_id SERIAL PR…