【Kubernetes系列】Kubernetes 資源請求(Requests)

csdn

博客目錄

    • 引言
    • 一、資源請求的基本概念
      • 1.1 什么是資源請求
      • 1.2 請求與限制的區別
    • 二、CPU 請求的深入解析
      • 2.1 CPU 請求的單位與含義
      • 2.2 CPU 請求的調度影響
      • 2.3 CPU 請求與限制的關系
    • 三、內存請求的深入解析
      • 3.1 內存請求的單位與含義
      • 3.2 內存請求的調度影響
      • 3.3 內存請求的特殊性
    • 四、資源請求的實際應用場景
      • 4.1 保證關鍵應用資源
      • 4.2 提高集群利用率
      • 4.3 資源配額管理
    • 五、設置資源請求的最佳實踐
      • 5.1 如何確定合適的請求值
      • 5.2 請求與限制的比例
      • 5.3 垂直自動擴縮(VPA)的考慮
    • 六、常見問題與解決方案
      • 6.1 請求設置過高
      • 6.2 請求設置過低
      • 6.3 節點壓力與資源請求

引言

在 Kubernetes 集群中,資源管理是確保應用穩定運行和集群高效利用的關鍵。其中,資源請求(Requests)作為資源管理的基礎機制,直接影響著 Pod 的調度決策和運行質量。
在這里插入圖片描述

一、資源請求的基本概念

1.1 什么是資源請求

資源請求(Requests)是 Kubernetes 中定義 Pod 或容器所需最小資源量的聲明。在提供的示例中:

requests:cpu: 1memory: 2Gi

這表示該容器至少需要 1 個 CPU 核心和 2GiB 的內存才能正常運行。Kubernetes 調度器會使用這些值來決定將 Pod 放置在哪個節點上。

1.2 請求與限制的區別

與資源請求相對應的是資源限制(Limits),如示例中的:

limits:cpu: 2memory: 4Gi

兩者的主要區別在于:

  • 請求(Requests):是調度保證,確保 Pod 能夠獲得的最低資源量
  • 限制(Limits):是資源使用上限,防止 Pod 消耗過多資源

在調度階段,Kubernetes 只考慮 Requests;在運行時,Limits 則發揮作用防止資源饑餓。

二、CPU 請求的深入解析

2.1 CPU 請求的單位與含義

示例中的cpu: 1表示:

  • 1 個 Kubernetes CPU 單位,相當于:
    • 1 個 AWS vCPU
    • 1 個 GCP 核心
    • 1 個 Azure vCore
    • 1 個超線程(在支持超線程的裸機上)

對于部分 CPU 核心,可以使用小數(如0.5)或毫核單位(如500m表示 500 毫核,即 0.5 個 CPU)。

2.2 CPU 請求的調度影響

當調度器看到cpu: 1的請求時,它會:

  1. 檢查各節點的可分配 CPU 資源(總 CPU 減去已承諾的請求)
  2. 只選擇至少有 1 個可用 CPU 單位的節點
  3. 將該 CPU 單位"預留"給這個 Pod

2.3 CPU 請求與限制的關系

在示例中,CPU 請求為 1,限制為 2,這意味著:

  • 調度保證:至少 1 個 CPU
  • 運行上限:最多 2 個 CPU
  • 突發能力:Pod 可以在需要時使用額外的 CPU 資源(最多 2 個),前提是節點上有可用資源

三、內存請求的深入解析

3.1 內存請求的單位與含義

示例中的memory: 2Gi表示:

  • 2 gibibytes 的內存(1GiB = 1024^3 bytes)
  • 也可使用其他單位如 MiB、KiB 等

3.2 內存請求的調度影響

與 CPU 類似,調度器會:

  1. 檢查各節點的可用內存
  2. 確保節點有至少 2GiB 的可分配內存
  3. 將該內存"預留"給這個 Pod

3.3 內存請求的特殊性

內存與 CPU 的一個關鍵區別是:

  • CPU 是可壓縮資源:當 Pod 超過請求但未達限制時,Pod 不會被殺死,只是會被限制
  • 內存是不可壓縮資源:如果 Pod 超過內存限制,它將被 OOM Killer 終止

因此,合理設置內存請求尤為重要。

四、資源請求的實際應用場景

4.1 保證關鍵應用資源

對于關鍵業務應用,設置適當的請求可以確保:

  • 始終有足夠的資源可用
  • 不會被其他 Pod 的資源使用所影響
  • 在節點資源緊張時獲得優先保障

4.2 提高集群利用率

通過合理設置請求:

  • 管理員可以準確了解集群的資源承諾
  • 實現更高效的裝箱(bin packing),提高資源利用率
  • 避免資源浪費或過度配置

4.3 資源配額管理

在多租戶環境中,資源請求用于:

  • 計算資源配額使用量
  • 實施公平的資源分配策略
  • 監控和限制各團隊/項目的資源消耗

五、設置資源請求的最佳實踐

5.1 如何確定合適的請求值

  1. 基準測試:通過壓力測試確定應用的最小資源需求
  2. 監控歷史數據:分析應用在正常負載下的資源使用情況
  3. 考慮業務特點
    • 周期性波動(如白天/夜間差異)
    • 突發流量處理能力需求
  4. 安全余量:在最小需求上增加適當緩沖(通常 20-30%)

5.2 請求與限制的比例

常見的比例關系:

  • CPU:請求:限制 = 1:2 或 1:1.5(如示例中的 1:2)
  • 內存:請求:限制 = 1:1.2 或 1:1(內存突發收益小,風險高)

5.3 垂直自動擴縮(VPA)的考慮

雖然 VPA 可以自動調整資源,但:

  • 生產環境建議謹慎使用自動調整請求
  • 可先用于非關鍵應用
  • 配合資源限制使用以避免失控

六、常見問題與解決方案

6.1 請求設置過高

癥狀

  • 集群利用率低
  • 調度失敗(盡管實際資源足夠)

解決方案

  • 通過監控調整請求至更合理水平
  • 考慮使用 VPA

6.2 請求設置過低

癥狀

  • Pod 頻繁被驅逐(內存不足)
  • 應用性能不穩定

解決方案

  • 增加請求值
  • 檢查應用是否有內存泄漏

6.3 節點壓力與資源請求

即使所有 Pod 都在請求范圍內,節點仍可能出現壓力,因為:

  • 系統進程需要資源
  • 容器運行時需要資源
  • Kubelet 等組件需要資源

解決方案

  • 確保節點保留足夠資源給系統
  • 設置適當的 kube-reserved 和 system-reserved

覺得有用的話點個贊 👍🏻 唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!😄😄😄

💘💘💘如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!🌙🌙🌙

img

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

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

相關文章

大型語言模型中的自動化思維鏈提示

摘要 大型語言模型(LLMs)能夠通過生成中間推理步驟來執行復雜的推理任務。為提示演示提供這些步驟的過程被稱為思維鏈(CoT)提示。CoT提示有兩種主要范式。一種使用簡單的提示語,如“讓我們一步一步思考”,…

Private Set Generation with Discriminative Information(2211.04446v1)

1. 遇到什么問題,解決了什么遇到的問題現有差分隱私生成模型受限于高維數據分布建模的復雜性,合成樣本實用性不足。深度生成模型訓練依賴大量數據,加入隱私約束后更難優化,且不保證下游任務(如分類)的最優解…

C++編程語言入門指南

一、C語言概述 C是由丹麥計算機科學家Bjarne Stroustrup于1979年在貝爾實驗室開發的一種靜態類型、編譯式、通用型編程語言。最初被稱為"C with Classes"(帶類的C),1983年更名為C。它既具有高級語言的抽象特性,又保留了底層硬件操作能力&…

ZED相機與Foxglove集成:加速機器人視覺調試效率的實用方案

隨著機器人技術的發展,實時視覺數據流的高效傳輸和可視化成為提升系統性能的重要因素。通過ZED相機(包括ZED 2i和ZED X)與Foxglove Studio平臺的結合,開發者能夠輕松訪問高質量的2D圖像、深度圖和點云數據,從而顯著提高…

目標檢測新紀元:DETR到Mamba實戰解析

🚀【實戰分享】目標檢測的“后 DE?”時代:DETR/DINO/RT-DETR及新型骨干網絡探索(含示例代碼) 目標檢測從 YOLO、Faster R-CNN 到 Transformer 結構的 DETR,再到 DINO、RT-DETR,近兩年出現了許多新趨勢&am…

【IOS】XCode創建firstapp并運行(成為IOS開發者)

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 這篇文章主要介紹XCode創建firstapp并運行 學其所用,用其所學。——梁啟超 歡迎來到我的博客,一起學習,共同進步。 喜歡的朋友可以關注一下,下次更新不迷路…

class類和style內聯樣式的綁定 + 事件處理 + uniapp創建自定義頁面模板

目錄 一.class類的綁定 1.靜態編寫 2.動態編寫 二.style內聯樣式的綁定 三.事件處理 1.案例1 2.案例2 四.uniapp創建自定義頁面模板 1.為什么要這么做? 2.步驟 ①打開新建頁面的界面 ②在彈出的目錄下,新建模板文件 ③用HBuilderX打開該模板…

android 卡頓和丟幀區別

Android 卡頓(Jank)與丟幀(Frame Drop)的核心區別在于問題本質與用戶感知,以下是分層解析: ? 一、本質差異 維度卡頓(Jank)丟幀(Frame Drop)定義用戶可感知…

【python實用小腳本-125】基于 Python 的 Gmail 郵件發送工具:實現高效郵件自動化

引言 在現代辦公和開發環境中,郵件通信是一種重要的溝通方式。自動化發送郵件可以大大提高工作效率,例如發送通知、報告或文件。本文將介紹一個基于 Python 的 Gmail 郵件發送工具,它能夠通過 Gmail 的 SMTP 服務器發送郵件,并支持…

gateway斷言配置詳解

一、Predicate - 斷? 1、簡單用法 spring:cloud:gateway:routes:- id: after_routeuri: https://example.orgpredicates:- After2017-01-20T17:42:47.789-07:00[America/Denver] 2、自定義斷言 新建類VipRoutePredicateFactory,注意VipRoutePredicateFactory名字…

基于大模型的尿毒癥全流程預測與診療方案研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與方法 1.3 國內外研究現狀 二、尿毒癥相關理論基礎 2.1 尿毒癥的定義、病因與發病機制 2.2 尿毒癥的癥狀與診斷標準 2.3 尿毒癥的治療方法概述 三、大模型技術原理與應用 3.1 大模型的基本概念與發展歷程 3.2 大模型…

裸金屬服務器租用平臺-青蛙云

企業對服務器性能與靈活性的要求與日俱增。青蛙云M-啟強裸金屬服務器租用平臺應運而生,為企業提供了一種兼具物理機性能和云計算彈性的解決方案。裸金屬服務器租用平臺的優勢?(一)高配性能,無虛擬化開銷?裸金屬服務器直接運行在物理硬件之上&#xff0…

[Terence Tao訪談] AlphaProof系統 | AI嗅覺 | 研究生學習 | 龐加萊猜想(高維) | 復雜問題簡單化

玩這些有趣的東西。通常情況下什么也得不到,你必須學會說:“好吧,再試一次,什么都沒發生,我會繼續前進。” DeepMind的AlphaProof系統 Q:DeepMind的AlphaProof系統是通過強化學習訓練的,使用的…

Aseprite工具入門教程4之動畫導入Unity

1、時間軸功能 (1)眼睛圖標 顯示/隱藏圖層圖層隱藏時無法繪制 (2)鎖定圖標 鎖定后無法移動或編輯圖層防止意外在錯誤圖層上繪制 (3)單元格圖標 兩個點代表幀分開,一個橢圓代表幀統一。分開就…

移動硬盤頻繁提示格式化?解決異常故障的正確方法

移動硬盤作為數據存儲的重要工具,不少人都習慣將照片、文檔、項目資料甚至整臺電腦的備份都放在里面。但有時,一件令人頭疼的事悄然發生: 插上硬盤,系統卻突然提示:“使用驅動器中的光盤之前需要將其格式化。是否要將…

Java泛型筆記

1 為什么需要泛型 Java5之前,是沒有泛型的。通過兩段代碼我們就可以知道為何我們需要泛型 public int addInt(int a, int b) {return a b; }public double addDouble(double a, double b) {return a b; } 實際開發中,經常有數值類型求和的需求&…

mysql 圖形化界面工具 DataGrip 安裝與配置

安裝地址: Download DataGrip: Cross-Platform IDE for Databases & SQLhttps://www.jetbrains.com/datagrip/download/?sectionwindows 添加數據源: 下載驅動文件:直接點擊下載即可 點擊測試連接:成功后點擊確定 顯示所有數…

linux下進程之間socket通信c程序例程

以下是一個基于 Linux 的 C 程序示例,展示了如何使用 Unix 域套接字(Unix domain socket)在不同進程之間互傳 JSON 消息。我們將實現一個簡單的客戶端 - 服務器模型,服務器監聽連接,客戶端連接到服務器并發送 JSON 消息…

高云GW5AT-LV60 FPGA圖像處理板|MIPI攝像頭幀率測試

高云GW5AT-LV60 FPGA圖像處理板套件中附帶了三個攝像頭模組,這三個模組真是各有千秋,接下來我通過簡單的一些測試來看看這幾個攝像頭的差異。 VS-SC130GS 、 VS-SC2210 這兩個模組是手動對焦,在使用時需要手動轉動鏡頭調整焦距,這…

機器學習在智能能源管理中的應用:需求響應與可再生能源整合

隨著全球能源需求的不斷增長和環境問題的日益突出,智能能源管理成為實現可持續發展的關鍵。智能能源管理系統通過整合先進的信息技術,如物聯網(IoT)、大數據和機器學習,能夠優化能源的分配和使用,提高能源效…