【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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898011.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

R語言零基礎系列教程-03-RStudio界面介紹與關鍵設置

代碼、講義、軟件回復【R語言03】獲取。 設置位置: 菜單欄 - Tools - Blobal Options 設置 通用設置 設置面板左側General選項 版本選擇: 一般只用一個版本即可 默認工作目錄設置: 你希望RStudio打開時是基于哪個目錄進行工作可以不設置, 因為腳本一般都是放置在特定項目路…

車載以太網測試-9【網絡層】-子網劃分的子網掩碼VLAN

目錄 1 摘要2 子網劃分2.1 子網掩碼2.2 VLAN(虛擬局域網)2.2.1 IEEE 802.1Q VLAN標簽2.2.1.1 VLAN標簽的結構2.2.1.2 VLAN標簽的插入2.2.1.3 VLAN標簽的處理2.1.2.4 PVID(Port VLAN Identifier) 和 VID(VLAN Identifie…

微信小程序刷題邏輯實現:技術揭秘與實踐分享

頁面展示: 概述 在當今數字化學習的浪潮中,微信小程序以其便捷性和實用性,成為了眾多學習者刷題備考的得力工具。今天,我們就來深入剖析一個微信小程序刷題功能的實現邏輯,從代碼層面揭開其神秘面紗。 小程序界面布局…

JVM--垃圾回收

垃圾回收的概念 垃圾回收主要針對的是堆中的對象,堆是一個共享的區域,創建的對象和數組都放在這個位置。但是我們不能一直的創建對象,也不是所有的對象能一直存放,如果不進行垃圾回收,內存遲早會耗盡,及時…

【教程】繼承中的訪問控制 C++

目錄 簡介public,protected 和 private繼承中的 public,protected 和 private示例 簡介 在 C 中派生類可以通過 public,protected 和 private 三種修飾符決定基類成員在派生類中的訪問級別 public,protected 和 private 公有成…

【2025】基于python+django的駕校招生培訓管理系統(源碼、萬字文檔、圖文修改、調試答疑)

課題功能結構圖如下: 駕校招生培訓管理系統設計 一、課題背景 隨著機動車保有量的不斷增加,人們對駕駛技能的需求也日益增長。駕校作為駕駛培訓的主要機構,面臨著激烈的市場競爭和學員需求多樣化等挑戰。傳統的駕校管理模式往往依賴于人工操作…

要登錄的設備ip未知時的處理方法

目錄 1 應用場景... 1 2 解決方法:... 1 2.1 wireshark設置... 1 2.2 獲取網口mac地址,wireshark抓包前預過濾掉自身mac地址的影響。... 2 2.3 pc網口和設備對接... 3 2.3.1 情況1:... 3 2.3.2 情…

一.ffmpeg打開麥克風,錄制音頻并重采樣

一.windows windows下使用msys編譯ffmpeg,先編譯libx264和libx265,然后編譯ffmpeg的時候需要添加這兩個庫的路徑才能--enable;為什么ffplay--enable了還是沒有呢,仔細看編譯打印,可能剛有一段報錯提示SDL找不到&#…

go 安裝swagger

1、依賴安裝: # 安裝 swag 命令行工具 go install github.com/swaggo/swag/cmd/swaglatest# 安裝 gin-swagger 和 swagger 文件的依賴 go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files 2、測試 cmd中輸入: swag -v 如果…

網絡安全反滲透 網絡安全攻防滲透

網絡滲透防范主要從兩個方面來進行防范,一方面是從思想意識上進行防范,另一方面就是從技術方面來進行防范。 1.從思想意識上防范滲透 網絡攻擊與網絡安全防御是正反兩個方面,縱觀容易出現網絡安全事故或者事件的公司和個人,在這些…

java泛型通配符?及上下界(extends,super)保證安全性、靈活性、可讀性

在 Java 中,泛型通配符(?)用于表示未知類型,通常用于增強泛型的靈活性。通配符可以與上下限結合使用,以限制泛型的范圍。以下是通配符及上下限的使用示例: 1. 無界通配符 (?) 無界通配符表示可以接受任意…

技術視界|構建理想仿真平臺,加速機器人智能化落地

在近期的 OpenLoong 線下技術分享會 上,松應科技聯合創始人張小波進行了精彩的演講,深入探討了仿真技術在機器人智能化發展中的關鍵作用。他結合行業趨勢,剖析了現有仿真平臺的挑戰,并描繪了未來理想仿真系統的設計理念與實現路徑…

uniapp-x 之useAttrs只讀

數據類型: useAttrs在web端拿到的是obj,app拿到的是map 是否可以修改內部元素: 否,只讀 這意味著你想這樣寫代碼將會無效 let attrsuseAttrs();console.log("attrs",attrs, attrs instanceof Map)//appif(attrs ins…

Python 正則表達式模塊 re

Python 正則表達式模塊 re flyfish 一、正則表達式基礎 1. 什么是正則表達式? 正則表達式(Regular Expression, RE)是一種用于匹配、查找和替換文本模式的工具,由普通字符(如字母、數字)和特殊字符&…

【商城實戰(33)】解鎖版本迭代與更新策略

【商城實戰】專欄重磅來襲!這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建,運用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用戶、商品、訂單等核心模塊開發,再到性能優化、安全加固、多端適配&#xf…

環境配置 | 5分鐘極簡Git入門:從零上手版本控制

你是否剛接觸Git?別擔心!這篇指南將用最簡單的步驟帶你掌握Git核心操作,快速開啟版本控制之旅!? 1.git在win10上的下載安裝 1.1.下載git 打開官方網站 Git - Downloadshttps://git-scm.com/downloads ? ?? 1.2.git安裝 …

計算機網絡——DNS

一、什么是DNS? DNS(Domain Name System,域名系統) 是互聯網的核心服務,負責將人類可讀的域名(如 www.baidu.com)轉換為機器可識別的 IP地址(如 14.119.104.254)。它像一…

SQLark 實戰 | 如何從Excel、csv、txt等外部文件進行數據導入

數據導入導出是應用開發者在平時開發中最常用的操作之一,SQLark 里提供了方便的圖形化界面來完成導入導出。本文先和大家分享如何從 Excel、csv、txt 等外部文件導入數據到數據庫表中。 👉 前往 SQLark 官網:www.sqlark.com 下載全功能免費版…

docker無法正常拉取鏡像問題的解決

目錄 1.前言 2.解決方案 1.前言 安裝docker后拉取鏡像,遇見了如下問題: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded whil…

k8s系統學習路徑

學習 Kubernetes(K8s)需要循序漸進,結合理論知識和實踐操作。以下是學習 Kubernetes 的推薦步驟: 1. 先決條件 ? 掌握容器基礎:先學習 Docker,理解容器化概念(鏡像、容器、倉庫)、…