Kubernetes 從入門到精通-StatefulSet控制器

一、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-0,?web-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…