K8s Pod調度基礎——2

目錄

一、Deployment

?一、Deployment 原理?

?二、核心特性?

?三、意義與場景?

?四、示例與逐行解釋?

?五、總結?

StatefulSet

?一、StatefulSet 原理?

?二、核心特性?

?三、意義與場景?

?四、示例與逐行解釋?

?五、總結?

?彼此的區別

一、本質區別?

?二、核心特性對比?

1. ?Pod 標識與網絡?

2. ?存儲管理?

3. ?擴縮容與更新?

4. ?服務發現?

?三、運維約束對比?

?四、強制使用 StatefulSet 的場景?

?五、總結?


一、Deployment

?一、Deployment 原理?

  1. ?核心功能?:

    • 管理 ?無狀態應用? 的 Pod 副本集(通過控制 ReplicaSet 實現),支持聲明式更新、滾動升級和回滾。
    • 通過 ?控制器模式? 監聽集群狀態,確保實際 Pod 數量與期望值一致。
  2. ?工作流程?:

    • ?版本控制?:每次更新會創建新的 ReplicaSet,逐步替換舊 Pod(滾動更新)或直接全量替換(重建更新)。
    • ?回滾機制?:記錄歷史版本,可快速回退到任意修訂版本。

?二、核心特性?

?特性??說明?
?多副本管理?通過?replicas?字段維持指定數量的 Pod,自動擴縮容。
?滾動更新?支持逐步替換舊 Pod(可配置?maxUnavailable?和?maxSurge)。
?版本回滾?使用?kubectl rollout undo?回退到歷史版本。
?健康檢查?集成 Liveness/Readiness 探針,確保服務可用性。
?暫停與恢復?暫停更新(kubectl rollout pause)以手動調試。

?三、意義與場景?

  • ?意義?:
    • 實現應用發布的?零停機更新?,提升 DevOps 效率。
    • 為微服務提供高可用、自愈的底層支撐。
  • ?典型場景?:Web 服務、API 后端、無狀態計算任務等。

?四、示例與逐行解釋?

apiVersion: apps/v1 
kind: Deployment 
metadata:name: nginx-deploymentlabels:app: nginxspec:replicas: 3selector:matchLabels:app: nginxstrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.19ports:- containerPort: 80livenessProbe:httpGet:path: /port: 80initialDelaySeconds: 5periodSeconds: 10 

?逐行解釋?:

  1. apiVersion: apps/v1:使用?apps?組的 API 版本。
  2. kind: Deployment:聲明資源類型為 Deployment。
  3. replicas: 3:維持 3 個 Pod 副本。
  4. selector.matchLabels:選擇標簽為?app=nginx?的 Pod 管理。
  5. strategy:定義滾動更新策略,最多允許 1 個 Pod 不可用(maxUnavailable)和 1 個臨時超額 Pod(maxSurge)。
  6. template:Pod 模板,包含容器配置(Nginx 1.19 鏡像)和健康檢查(每 10 秒檢測 80 端口)。

?五、總結?

Deployment 是 Kubernetes 管理無狀態應用的?核心控制器?,通過自動化副本管理、滾動更新和回滾機制,顯著提升應用部署的可靠性和靈活性。

StatefulSet

?一、StatefulSet 原理?

  1. ?核心功能?:

    • 管理?有狀態應用?(如數據庫、消息隊列),為每個 Pod 提供?穩定的唯一標識?(有序編號、持久化存儲、固定網絡標識)。
    • 通過 ?Headless Service? 為每個 Pod 分配唯一的 DNS 記錄(如?pod-name.svc-name.namespace.svc.cluster.local)。
  2. ?工作流程?:

    • ?有序部署/擴縮容?:Pod 按順序創建(從 0 到 N-1)或刪除(從 N-1 到 0),確保依賴關系(如主從數據庫)。
    • ?持久化存儲?:通過?volumeClaimTemplates?為每個 Pod 動態綁定獨立的 PersistentVolume(PV)。

?二、核心特性?

?特性??說明?
?穩定標識?Pod 名稱(如?web-0web-1)和 DNS 記錄在生命周期內保持不變。
?有序管理?支持順序啟停(OrderedReady)或并行(Parallel)策略。
?持久化存儲?每個 Pod 綁定獨立的 PV,數據不受 Pod 重建影響。
?網絡穩定性?通過 Headless Service 提供固定網絡端點。

?三、意義與場景?

  • ?意義?:
    • 解決有狀態應用的?數據持久性?和?拓撲穩定性?問題,填補 Deployment 的不足。
  • ?典型場景?:MySQL 集群、MongoDB 副本集、ZooKeeper 等分布式系統。

?四、示例與逐行解釋?

apiVersion: apps/v1
kind: StatefulSet 
metadata:name: mysql 
spec:serviceName: mysql-headlessreplicas: 3selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec: containers:- name: mysqlimage: mysql:5.7ports:- containerPort: 3306volumeMounts:- name: mysql-datamountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: mysql-dataspec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 10Gi 

?逐行解釋?:

  1. apiVersion: apps/v1:使用?apps?組 API。
  2. kind: StatefulSet:聲明資源類型。
  3. serviceName: mysql-headless:關聯的 Headless Service 名稱。
  4. replicas: 3:創建 3 個有序 Pod(mysql-0mysql-1mysql-2)。
  5. volumeMounts:將名為?mysql-data?的卷掛載到容器路徑?/var/lib/mysql
  6. volumeClaimTemplates:為每個 Pod 動態創建 10Gi 的 PVC(名稱格式為?mysql-data-mysql-X)。

?五、總結?

StatefulSet 是 Kubernetes 管理有狀態應用的?核心控制器?,通過唯一標識、有序管理和持久化存儲,為分布式系統提供穩定運行環境。

?彼此的區別

一、本質區別?

?維度??Deployment??StatefulSet?
?設計目標?管理?無狀態應用?(Pod 可任意替換)管理?有狀態應用?(Pod 需唯一標識與持久存儲)
?典型場景?Web 服務、API 后端、無狀態計算任務數據庫(MySQL/MongoDB)、消息隊列(Kafka)

?二、核心特性對比?

1. ?Pod 標識與網絡?
  • ?Deployment?:
    • Pod 名稱隨機生成(如?nginx-5f76c6cb6d-hx8vp),重啟后改變。
    • 通過 Service 負載均衡訪問,無固定網絡端點。
  • ?StatefulSet?:
    • Pod 名稱有序固定(如?mysql-0mysql-1),生命周期內不變。
    • 每個 Pod 有獨立 DNS 記錄(pod-name.service-name.namespace.svc.cluster.local)。
2. ?存儲管理?
  • ?Deployment?:
    • Pod 共享存儲卷或無持久化存儲,數據隨 Pod 銷毀丟失。
  • ?StatefulSet?:
    • 通過?volumeClaimTemplates?為每個 Pod 動態綁定獨立 PV,數據持久化。
    • 存儲與 Pod 嚴格綁定,重建后自動關聯原數據。
3. ?擴縮容與更新?
  • ?Deployment?:
    • 并行擴縮容,無順序限制。
    • 支持滾動更新(RollingUpdate),可配置?maxSurge/maxUnavailable
  • ?StatefulSet?:
    • ?順序操作?:擴容從 0→N-1,縮容從 N-1→0。
    • 滾動更新默認逐個替換 Pod,保障數據一致性。
4. ?服務發現?
  • ?Deployment?:
    • 通過 ClusterIP Service 實現負載均衡。
  • ?StatefulSet?:
    • 依賴 ?Headless Service?(無 ClusterIP),直接暴露 Pod DNS。

?三、運維約束對比?

?特性??Deployment??StatefulSet?
?Pod 唯一性???(固定名稱/DNS)
?持久化存儲獨占性???(每 Pod 獨立 PVC)
?有序啟停???(順序保障)
?復雜度?高(需配置 Headless Service + PVC)

?四、強制使用 StatefulSet 的場景?

  1. ?需穩定網絡標識?:如數據庫主從節點需固定域名通信。
  2. ?獨立持久化存儲?:每個 Pod 需專屬數據卷(如 MySQL 主備數據分離)。
  3. ?依賴啟動順序?:集群初始化需嚴格按序(如 ZooKeeper 選舉)。

💡 ?例外?:若僅需共享存儲(非獨占),可使用 Deployment + 共享 PVC。


?五、總結?

  • ?無狀態服務選 Deployment?:強調彈性伸縮、簡易運維(如 Web 服務)。
  • ?有狀態服務選 StatefulSet?:需穩定標識、持久存儲、順序保障(如數據庫集群)。
  • ?慎用 StatefulSet?:若非必要,優先用 Deployment(簡化架構)。

通過此對比,可根據應用特性精準選擇控制器,避免過度設計或功能缺失。

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

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

相關文章

Java 大視界 -- Java 大數據在智能醫療健康管理中的慢性病風險預測與個性化干預(330)

Java 大視界 -- Java 大數據在智能醫療健康管理中的慢性病風險預測與個性化干預(330) 引言:正文:一、Java 構建的醫療數據融合平臺(多源數據安全打通)1.1 分布式醫療數據集成系統(符合 HIPAA 與…

beego打包發布到Centos系統及國產麒麟系統完整教程

1、先清除go緩存,用下面命令 go clean -cache go clean -modcache 2、更新庫文件 go mod tidy 3、安裝beego go install github.com/beego/bee/v2latest 4、查看bee版本 5、進行打包然后傳到Centos和麒麟服務器如下代碼 bee pack -be GOOSlinux -be GOARCHa…

Instagram和facebook廣告對比解析

一、平臺用戶畫像對比 用戶基礎數據 (1)活躍用戶規模 Instagram:20億MAU,以年輕群體為主力 Facebook:29億MAU,覆蓋全年齡段用戶 (2)核心用戶特征 Instagram: ? 25-3…

[MIA 2025]CLIP in medical imaging: A survey

論文網址:CLIP in medical imaging: A survey - ScienceDirect 項目頁面:github.com 英文是純手打的!論文原文的summarizing and paraphrasing。可能會出現難以避免的拼寫錯誤和語法錯誤,若有發現歡迎評論指正!文章偏…

Python通訊錄系統實戰教程

具體介紹見 通訊錄管理系統設計與實現(C)-CSDN博客 class Person:def __init__(self, name"", sex0, age0, phone"", addr""):self.m_name name # 姓名self.m_Sex sex # 性別(1-男,2-女…

蝦米壁紙分類頁面代碼

<template> <view class"wallpaper-category"> <custom-nav-bar title"分類列表"></custom-nav-bar> <!-- 分類展示 --> <scroll-view scroll-y class"category-scroll-view"> <view cl…

K8s-pod 調度基礎

目錄 Replication Controller&#xff08;RC&#xff09; 概念 關鍵字段 Replica Set&#xff08;RS&#xff09; 概念 關鍵字段 RC 與 RS 的區別 無狀態應用管理Deployment 無狀態應用&#xff08;Stateless Application&#xff09; 什么是無狀態&#xff1f; 無狀…

Vue + RuoYi 前后端分離入門手冊

Vue RuoYi 前后端分離技術棧是一個非常流行且成熟的企業級后臺管理系統開發方案&#xff0c;尤其在國內 Java 開發社區中廣泛應用。它結合了現代化的前端框架 Vue.js 和基于 Spring Boot 的后端框架 RuoYi&#xff0c;提供了開箱即用的權限管理、代碼生成、監控等功能&#xf…

JSON 安裝使用教程

一、JSON 簡介 JSON&#xff08;JavaScript Object Notation&#xff09;是一種輕量級的數據交換格式&#xff0c;易于人閱讀和編寫&#xff0c;同時也易于機器解析和生成。它廣泛應用于前后端數據通信、配置文件、API 傳輸等場景。 二、JSON 是否需要安裝&#xff1f; 不需要…

十大網絡協議

十大網絡協議 標題1. HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本傳輸協議&#xff09;標題2. HTTPS&#xff08;Secure Hypertext Transfer Protocol&#xff0c;安全超文本傳輸協議&#xff09;標題3. HTTP/3標題4. TCP&#xff08;Transmission Control…

【語音告警】博靈智能語音報警燈Modbus TCP觸發告警實例-語音報警燈|聲光報警器|網絡信號燈

功能說明 本文將以Python代碼為例&#xff0c;講解如何通過Python代碼調用博靈語音通知終端A4實現聲光語音告警。 本代碼實現Python觸發Modbus寫多寄存器和寫單寄存器實現調用通知終端模板播報功能&#xff08;通知終端內置TTS語音合成技術&#xff0c;本案例不講解如何文本轉…

攝像頭 rtsp數據量 和正常數據流有什么區別

攝像頭RTSP數據流和正常數據流&#xff08;如HTTP傳輸的普通文件或網頁數據&#xff09;在多個方面存在顯著差異&#xff0c;主要體現在協議特性、數據量、實時性、應用場景等方面。以下是具體對比&#xff1a; 1. 協議與傳輸方式 RTSP流&#xff1a; 實時流協議&#xff08;R…

深入理解裝飾器模式:動態擴展對象功能的靈活設計模式

深入理解裝飾器模式&#xff1a;動態擴展對象功能的靈活設計模式 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用代碼丈量世界…

141.在 Vue 3 中使用 OpenLayers Link 交互:把地圖中心點 / 縮放級別 / 旋轉角度實時寫進 URL,并同步解析顯示

本文分享一個前端小技巧&#xff1a;借助 OpenLayers 的 Link 交互 在瀏覽器地址欄實時記錄地圖狀態&#xff0c;同時把這些參數解析出來展示在頁面上。 ? 雙向同步&#xff1a;拖動、縮放、旋轉地圖時&#xff0c;URL 自動更新&#xff1b;手動修改 URL 或后退 / 前進&#x…

數字人的形象與內容,虛擬形象背后的權益暗戰

&#xff08;首席數據官高鵬律師數字經濟團隊創作&#xff0c;AI輔助&#xff09; 當某科技公司的虛擬偶像在直播間收獲百萬打賞時&#xff0c;當某品牌的數字代言人形象被篡改成表情包全網傳播時&#xff0c;當網紅博主的AI分身開始替代真人直播帶貨時&#xff0c;一場關于數…

【python】pdf拆成圖片,加中文,再合成pdf

前期搞了個pdf加頁腳&#xff0c;但是搞了半天中文加不了&#xff0c;就換了個思路。 直接說結論&#xff0c;pdf拆成圖片&#xff0c;加中文&#xff0c;再合成pdf&#xff0c;會導致pdf模糊。 import os import fitz # PyMuPDF from PIL import Image, ImageDraw, ImageFon…

分布式爬蟲數據存儲開發實戰

分布式爬蟲存儲的核心矛盾在于&#xff1a;既要高吞吐又要強一致性&#xff0c;還要避免重復。比如Kafka雖然吞吐高但無法去重&#xff0c;Redis去重快但容量有限。所以我們可能低估了狀態同步的復雜度——比如暫停爬蟲時如何保證內存中的URL狀態不丟失。 分布式爬蟲的數據存儲…

探秘阿里云Alibaba Cloud Linux:云時代的操作系統新寵

引言&#xff1a;云時代的操作系統變革 在云計算技術蓬勃發展的當下&#xff0c;企業的數字化轉型進程被極大地加速&#xff0c;而作為云計算底層支撐的操作系統&#xff0c;也迎來了前所未有的變革與挑戰。傳統操作系統在應對云計算環境中的大規模資源調度、高彈性擴展以及安…

使用pyflink進行kafka實時數據消費

目錄 背景 代碼demo 踩坑記錄 1、kafka連接器&#xff0c;kafka客戶端jar包找不到 2、java模塊系統訪問限制 3、執行demo任務&#xff0c;一直報錯連接kafka topic超時 總結 背景 實際項目中經常遇到source是kafka&#xff0c;需要實時消費kafka某個topic中的數據&#x…

軟件測試理論框架與發展:分類、原則與質量保障策略

第一章 一、計算機軟件的發展分類 早期軟件開發的特點&#xff1a; 軟件規模小、復雜程度低、開發過程不規范 測試的情況&#xff1a; 測試等同于調試 目的糾正軟件的已經知道的故障 投入少&#xff0c;介入晚 成為一種發現軟件的活動&#xff08;1957&#xff09; 測試不等于…