【Kubernetes】使用Deployment進行的資源調度,資源清理,伸縮與更新管控

Kubernetes Deployment 實戰:從資源清理到伸縮與更新管控

一、基礎準備:清理閑置 ReplicaSet

在使用 Deployment 時,每次更新都會生成新的 ReplicaSet(簡稱 RS),舊的 RS 會被保留但設置為 DESIRED=0。這些閑置 RS 雖然不占用運行資源,但會讓集群資源列表變得混亂,建議定期清理。

場景

通過 kubectl get rs 查看發現,除了正在運行的 nginx-deploy-6b7b64468(管理 3 個 Pod),還有多個閑置 RS:

# 清理前的 RS 列表
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-5c545b9dd5   0         0         0       42m
nginx-deploy-665f4b5c77   0         0         0       5h1m
nginx-deploy-6b7b64468    3         3         3       121m
nginx-deploy-77cddcb87f   0         0         0       137m

清理操作

直接刪除閑置 RS 即可,不會影響當前運行的 Pod(當前 Pod 由 nginx-deploy-6b7b64468 管理):

kubectl delete rs nginx-deploy-5c545b9dd5 nginx-deploy-665f4b5c77 nginx-deploy-77cddcb87f

清理后效果

資源列表變得簡潔,僅保留活躍 RS:

NAME                     DESIRED   CURRENT   READY   AGE
nginx-deploy-6b7b64468   3         3         3       124m

二、高效伸縮:用 kubectl scale 替代手動編輯

Deployment 的核心功能之一是動態調整副本數(replicas)。傳統的 kubectl edit deploy 需要手動修改配置文件,效率較低;而 kubectl scale 可以一鍵完成伸縮,更適合高頻操作。

核心命令

# 擴容:將 nginx-deploy 的副本數調整為 6
kubectl scale --replicas=6 deploy nginx-deploy# 縮容:將 nginx-deploy 的副本數調整為 3
kubectl scale --replicas=3 deploy nginx-deploy

操作驗證

  1. 擴容效果:執行擴容命令后,新 Pod 會立即創建(AGE 為幾秒),Deployment 和 RS 的副本數同步更新:

    # 擴容后 Pod 列表(新增 3 個 Pod)
    nginx-deploy-6b7b64468-2sncq   1/1     Running   0               2s
    nginx-deploy-6b7b64468-8vc5m   1/1     Running   0               2s
    nginx-deploy-6b7b64468-nptv5   1/1     Running   0               2s# 擴容后 Deployment 狀態
    NAME           READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deploy   6/6     6            6           5h6m
    
  2. 縮容效果:執行縮容命令后,多余的 Pod 會被自動刪除,最終保留 3 個運行中的 Pod:

    # 縮容后 Pod 列表(僅保留原 3 個 Pod)
    nginx-deploy-6b7b64468-h55t4   1/1     Running   0               128m
    nginx-deploy-6b7b64468-kh4wm   1/1     Running   0               124m
    nginx-deploy-6b7b64468-lq844   1/1     Running   0               127m
    

三、安全更新:Deployment 暫停與重啟機制

在更新 Deployment 配置(如鏡像版本、資源限制)時,可能需要分步驟驗證。通過 kubectl rollout pause 暫停更新,可避免配置錯誤直接生效;驗證無誤后用 kubectl rollout resume 恢復更新,大幅降低風險。

操作流程

1. 暫停 Deployment 更新
kubectl rollout pause deploy nginx-deploy

暫停后,即使通過 kubectl edit deploy 修改配置,也不會觸發新 RS 創建和舊 Pod 替換。

2. 修改配置并驗證

例如,編輯 Deployment 增加資源限制(limits.cpu=500m):

kubectl edit deploy nginx-deploy

此時查看 RS 列表,發現沒有新 RS 生成(仍為原 RS),說明暫停生效:

NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-57b68466d4   3         3         3       4m21s  # 無新 RS
3. 恢復更新并驗證

確認配置無誤后,恢復 Deployment 更新:

kubectl rollout resume deploy nginx-deploy

恢復后,新 RS 會被創建,舊 RS 會逐步縮容,最終完成更新:

# 恢復后 RS 列表(新 RS 已創建并運行 3 個 Pod)
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-57b68466d4   0         0         0       6m28s  # 舊 RS 被縮容
nginx-deploy-6c6766f6d6   3         3         3       5s     # 新 RS 生效

四、版本管理:查看更新歷史與回滾

Deployment 會自動記錄每一次更新(稱為“修訂版本”),通過 kubectl rollout history 可查看歷史記錄,必要時可回滾到指定版本(即使更新已完成)。

在暫停后,修改完yaml,可以通過查看版本歷史,發現沒有新的版本出現來印證暫停效果

核心命令

  1. 查看更新歷史

    kubectl rollout history deploy nginx-deploy
    

    輸出示例(REVISION 為修訂版本號):

    REVISION  CHANGE-CAUSE
    5         <none>
    6         <none>
    7         <none>
    
  2. 查看指定版本詳情

    kubectl rollout history deploy nginx-deploy --revision=7
    

    可查看該版本的 Pod 模板(如鏡像、資源配置等)。

  3. 回滾到指定版本(若需回滾):

    kubectl rollout undo deploy nginx-deploy --to-revision=6
    

總結

場景推薦操作優勢
清理閑置資源kubectl delete rs <閑置RS>保持集群資源列表簡潔,避免資源冗余
動態調整副本數kubectl scale deploy <名稱> --replicas=<數量>一鍵伸縮,比手動編輯更高效
安全更新配置pause → 修改 → resume分步驗證配置,降低更新風險
版本管理與回滾rollout history/undo追蹤更新記錄,支持快速回滾到穩定版本

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

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

相關文章

stm32使用USB虛擬串口,因電腦缺少官方驅動而識別失敗(全系列32單片機可用)

驅動下載地址 官網地址&#xff1a;https://www.st.com/en/development-tools/stsw-stm32102.html

枚舉中間位置基礎篇

參考資料來源靈神在力扣所發的題單&#xff0c;僅供分享學習筆記和記錄&#xff0c;無商業用途。 核心思路&#xff1a; 一&#xff1a;直接直接用數據結構記錄需要的數據&#xff0c;在枚舉右&#xff0c;維護左的循環中&#xff0c;刪除當前位置的元素即可達成一樣效果 二…

企業選擇將服務器放在IDC機房托管的優勢

在服務器作為數據存儲和傳輸的核心設備的社會環境中&#xff0c;服務器的穩定性和安全性會直接影響到企業業務的連續性和用戶的滿意程度&#xff0c;隨著云計算技術和大數據的興起&#xff0c;企業對于服務器的需求也在日益增加&#xff0c;而如何高效、安全的管理服務器則是各…

自動化UI測試工具TestComplete的AI雙引擎:即時數據集 + 自愈測試

隨著敏捷開發和持續交付模式的普及&#xff0c;傳統的軟件測試方法正面臨著前所未有的挑戰。測試團隊在追求快速迭代的同時&#xff0c;往往陷入測試數據準備和測試維護的泥潭&#xff0c;嚴重制約了交付效率和質量保障能力。 TestComplete作為業界領先的自動化測試工具&#…

用KNN實現手寫數字識別:基于 OpenCV 和 scikit-learn 的實戰教學 (超級超級超級簡單)

用KNN實現手寫數字識別&#xff1a;基于 OpenCV 和 scikit-learn 的實戰教學在這篇文章中&#xff0c;我們將使用 KNN&#xff08;K-Nearest Neighbors&#xff09;算法對手寫數字進行分類識別。我們會用 OpenCV 讀取圖像并預處理數據&#xff0c;用 scikit-learn 構建并訓練模…

數據結構自學Day15 -- 非比較排序--計數排序

一、計數排序&#xff08;Counting Sort&#xff09;計數排序是一種非比較型的排序算法&#xff0c;它的核心思想是&#xff1a;利用“元素的值”來確定它在結果數組中的位置&#xff0c;通過“統計每個數出現的次數”來完成排序。二、如何實現計數排序&#xff08;核心步驟&am…

k8s的權限

來自博客&#xff1a;25-k8s集群中-RBAC用戶角色資源權限_權限 資源 角色-CSDN博客 一.RBAC概述&#xff08;基于角色的訪問控制&#xff09; 1.圖解 用戶&#xff1a; 1.user 2.serviceAccount 3.Group 用戶角色 1.Role:局部資源角色 2.clusterRole:全局資源角色額 角色綁…

C++ - 仿 RabbitMQ 實現消息隊列--服務端核心模塊實現(三)

目錄 隊列數據管理 代碼實現 測試代碼 綁定信息(交換機-隊列)管理 代碼實現 測試代碼 隊列數據管理 當前隊列數據的管理&#xff0c;本質上是隊列描述信息的管理&#xff0c;描述當前服務器上有哪些隊列。 定義隊列描述數據類 隊列名稱是否持久化標志是否獨占標志是否自…

51c自動駕駛~合集9

自己的原文哦~ https://blog.51cto.com/whaosoft/11627386 #端到端1 說起端到端&#xff0c;每個從業者可能都覺得會是下一代自動駕駛量產方案繞不開的點&#xff01;特斯拉率先吹響了方案更新的號角&#xff0c;無論是完全端到端&#xff0c;還是專注于planner的模…

時間長了忘記jupyter的環境是哪個了

有這些但是忘記是哪個了jupyter kernelspec list查看內核路徑&#xff0c;這個內核是用來告訴jupyter 去哪找內核配置的到這個路徑下打開json文件查看使用的python環境從而確定是哪個conda環境為jupyter使用的python環境jupyter的工作原理&#xff1a;在創建conda環境后會安裝j…

PYTHON從入門到實踐-15數據可視化

數據可視化是數據分析中不可或缺的一環&#xff0c;它能夠將抽象的數據轉化為直觀的圖形&#xff0c;幫助我們更好地理解數據特征和發現潛在規律。本文將介紹如何使用Python中的Matplotlib和Plotly庫進行數據可視化&#xff0c;并通過擲骰子的概率模擬案例展示可視化的實際應用…

Spring IOC 容器 **默認注冊 Bean** 的 8 條規則

Spring IOC 容器 默認注冊 Bean 的 8 條規則 &#xff08;Spring Framework 6.x 源碼級總結&#xff09;閱讀提示&#xff1a;把下面 8 條規則背下來&#xff0c;再讀 Spring 源碼時&#xff0c;你會在任何一行代碼里立刻知道「這個 BeanDefinition 是從哪兒來的」。1?? 環境…

29.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--單體轉微服務--用戶配置服務

用戶配置服務是孢子記賬中最簡單的部分。簡單說&#xff0c;用戶配置服務就是用戶自定義的配置項存儲服務&#xff0c;用于我們的APP根據用戶的配置實現指定的功能。它提供了一個簡單的接口&#xff0c;允許用戶存儲和檢索他們的配置數據。就目前來說&#xff0c;用戶配置只有一…

Python實現PDF按頁分割:靈活拆分文檔的技術指南

Python實現PDF按頁分割&#xff1a;靈活拆分文檔的技術指南 PDF文件處理是日常工作中的常見需求&#xff0c;特別是當我們需要將大型PDF文檔拆分為多個部分時。本文將介紹如何使用Python創建一個靈活的PDF分割工具&#xff0c;能夠根據用戶指定的頁數范圍任意分割文檔。 需求分…

「iOS」——GCD其他方法詳解

GCD學習GCD其他方法dispatch_semaphore &#xff08;信號量&#xff09;**什么是信號量**dispatch_semaphore主要作用dispatch_semaphore主要作用異步轉同步設置一個最大開辟的線程數加鎖機制dispatch_time_t 兩種形式GCD一次性代碼(只執行一次)dispatch_barrier_async/sync柵欄…

【圖像處理基石】如何實現一個車輛檢測算法?

基于AI的車牌檢測和識別算法 問題描述、應用場景與難點 問題描述 車牌檢測和識別是計算機視覺領域的一個特定任務&#xff0c;主要包含兩個核心步驟&#xff1a; 車牌檢測&#xff1a;從圖像中準確定位車牌的位置和區域車牌識別&#xff1a;對檢測到的車牌區域進行字符識別&…

計算機學報 2025年 區塊鏈論文 錄用匯總 附pdf下載

計算機學報 Year&#xff1a;2025 2024請看 1 Title: 基于區塊鏈的動態多云多副本數據完整性審計方法研究 Authors: Key words: 區塊鏈&#xff1b;云存儲&#xff1b;多云多副本存儲&#xff1b;數據完整性審計 Abstract: 隨著云計算技術的快速發展和云存儲服務的日益…

計算機網絡-UDP協議

UDP&#xff08;用戶數據報協議&#xff09;是傳輸層的一種無連接、不可靠、輕量級的協議&#xff0c;適用于對實時性要求高、能容忍少量數據丟失的場景&#xff08;如視頻流、DNS查詢等&#xff09;。以下是UDP的詳細解析&#xff1a;1. UDP的核心特點特性說明無連接通信前無需…

子域名收集和c段查詢

子域名收集方法一、sitesite&#xff1a; 要查詢的域名可以查到相關網站二、oneforall &#xff08;子域名查找工具&#xff09;下載后解壓的文件夾在當前文件夾打開終端然后運行命令 python oneforall.py --target xxxxxxxx&#xff08;這里放你要查的網址&#xff09; run最…

計網-TCP擁塞控制

TCP的擁塞控制&#xff08;Congestion Control&#xff09;是核心機制之一&#xff0c;用于動態調整發送方的數據傳輸速率&#xff0c;避免網絡因過載而出現性能急劇下降&#xff08;如丟包、延遲激增&#xff09;。其核心思想是探測網絡可用帶寬&#xff0c;并在擁塞發生時主動…