成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes 資源配額使用指南

開發 前端
資源配額是一種控制 Kubernetes 計算資源的方法。本文告訴你如何使用該功能來管理開發人員行為并控制應用的資源使用。

當 Kubernetes 集群運行過一段時間或者在被開發者大量使用后,Kubernetes 資源(例如 CPU 和內存)的控制的問題就會顯現出來。而在大多情況下只有集群出問題后,我們才會意識到資源控制的重要性。

Kubernetes 部署過程如果沒有能充分考慮到將來的擴展性,資源類問題將會非常常見,此類問題與集群的管理和部署團隊的經驗有關。

如果不加以合理控制,一個暴力的應用或者開發者可能影響到共享該集群的所有業務,大家因此會相互埋怨、指責并保護性地搶占資源。這對于集群管理和開發人員都是非常難以處理的場景。

[[375378]]

在 Kubernetes 環境中控制應用的計算資源使用有多種方式。大部分情況下,我們可以使用“資源控制”和“限制范圍”。注意存儲管理不在我們討論范圍之內,存儲管理可以通過持久卷Persistent Volume 件,以實現針對不同的存儲控制需求。

資源配額是一種控制 Kubernetes 計算資源的方法。本文告訴你如何使用該功能來管理開發人員行為并控制應用的資源使用。

什么是資源配額

簡而言之,資源配額 提供了限制每個命名空間資源消耗的約束條件,它們只能在命名空間級別上應用,這意味著它們可以應用于計算資源,并限制命名空間內的對象數量。

Kubernetes資源配額通過 ResourceQuota 對象來為每個命名空間設置資源配額,對以下對象類型的 CPU 和內存進行限制:

  • 吊艙Pod
  • 服務Service
  • 機密信息Secret
  • 持久卷斷言Persistent Volume Claim(PVC)
  • 配置映射ConfigMap

Kubernetes 通過 request 和 limit 兩個參數對 CPU 和內存進行限制(參考 LimitRange 文檔)。前者表示容器最小被保證資源,后者表示容器最大可用資源。實際上最大可用資源還受限于其它容器的實際使用情況。

下一張圖片解釋了配額中 request 和 limit 的區別:

Requests and limits in Kubernetes resource quotas下面我們就通過一個例子來說明如何設置資源配額來創建約束,將應用程序限制在某些資源上,它還展示了實現資源配額以獲得對 Kubernetes 的控制的有用性。

準備環境

首先你需要一個 Kubernetes 環境。以下是我使用 Kubernetes 環境:

  • Minikube v1.14.2
  • Fedora 33 操作系統
  • 互聯網接入

如果你想在 Linux 機器上通過 Minikube 搭建 Kubernetes 測試環境,可以參考 Bryant Son 的《Minikube 入門》 一文。Window 或者 macOS 用戶可以參考這篇文章

設置資源配額

這里我們僅展示 CPU 配額設置步驟,配置內存配額或兩者的組合與之類似。

在生產環境中,CPU 是最需要被控制的資源,尤其是在多應用的場景下特別需要注意防止某些應用消耗太多 CPU 而影響到其它應用。

首先我們創建一個命名空間,在其中設置 CPU 配額:

  1. $ kubectl create namespace quota-test 
  2. namespace/quota-test created 

準備 cpu-quota.yaml 文件,內容如下:

  1. apiVersion: v1 
  2. kind: ResourceQuota 
  3. metadata: 
  4.   name: test-cpu-quota 
  5. spec: 
  6.   hard: 
  7.     requests.cpu: "100m"   
  8.     limits.cpu: "200m" 

應用 CPU 配額到 Kubernetes 集群:

  1. $ kubectl apply -f cpu-qouta.yaml 
  2. resourcequota/test-cpu-quota created 

使用 kubectl describe 檢查配額配置情況:

  1. $ kubectl describe resourcequota/test-cpu-quota --namespace quota-test 
  2. Name:         test-cpu-quota 
  3. Namespace:    quota-test 
  4. Resource      Used  Hard 
  5. --------      ----  ---- 
  6. limits.cpu    0     200m 
  7. requests.cpu  0     100m 

在 Used resources 列中顯示了當前情況,該列值會隨著吊艙Pod的部署而變化。

下面是我們來驗證限額管理的場景。我們將在同一命名空間下部署三個不同的吊艙,為它們配置以不同的資源限制如下:

  • PodA:第一個被實例化,使用 50% 可用 CPU 資源
  • PodB:第二個被實例化,使用其余 50% 可用 CPU 資源
  • PodC:沒有可用 CPU 資源,因此不會被部署

部署吊艙

PodA:

  1. $ kubectl create -n quota-test -f - << EOF 
  2. apiVersion: v1 
  3. kind: Pod 
  4. metadata: 
  5.   name: poda 
  6. spec: 
  7.   containers: 
  8.   - name: quota-test 
  9.     image: busybox 
  10.     imagePullPolicy: IfNotPresent 
  11.     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000'] 
  12.     resources: 
  13.       requests: 
  14.         cpu: "50m" 
  15.       limits: 
  16.         cpu: "100m" 
  17.   restartPolicy: Never 
  18. EOF 

部署 PodA 后,再次查看配額描述信息中的 Used CPU 信息:

  1. $ kubectl describe resourcequota/test-cpu-quota --namespace quota-test 
  2. Name:         test-cpu-quota 
  3. Namespace:    quota-test 
  4. Resource      Used  Hard 
  5. --------      ----  ---- 
  6. limits.cpu    100m  200m 
  7. requests.cpu  50m   100m 

PodB:

  1. $ kubectl create -n quota-test -f - << EOF 
  2. apiVersion: v1 
  3. kind: Pod 
  4. metadata: 
  5.   name: podb 
  6. spec: 
  7.   containers: 
  8.   - name: quota-test 
  9.     image: busybox 
  10.     imagePullPolicy: IfNotPresent 
  11.     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000'] 
  12.     resources: 
  13.       requests: 
  14.         cpu: "50m" 
  15.       limits: 
  16.         cpu: "100m" 
  17.   restartPolicy: Never 
  18. EOF 

再次查看 CPU 資源使用,此時 PodB 啟動后 CPU 限制已經達到上限:

  1. $ kubectl describe resourcequota/test-cpu-quota --namespace quota-test 
  2. Name:         test-cpu-quota 
  3. Namespace:    quota-test 
  4. Resource      Used  Hard 
  5. --------      ----  ---- 
  6. limits.cpu    200m  200m 
  7. requests.cpu  100m  100m 

PodC:

試著創建 PodC,此時 CPU 配額已經被 PodA 和 PodB 用盡:

  1. $ kubectl create -n quota-test -f - << EOF 
  2. apiVersion: v1 
  3. kind: Pod 
  4. metadata: 
  5.   name: podc 
  6. spec: 
  7.   containers: 
  8.   - name: quota-test 
  9.     image: busybox 
  10.     imagePullPolicy: IfNotPresent 
  11.     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000'] 
  12.     resources: 
  13.       requests: 
  14.         cpu: "5m" 
  15.       limits: 
  16.         cpu: "10m" 
  17.   restartPolicy: Never 
  18. EOF 

正我們期望,第三個 Pod 無法被啟動,配額限制了吊艙的創建:

  1. Error from server (Forbidden): error when creating "STDIN": pods "podc" is forbidden: exceeded quota: test-cpu-quota, requested: limits.cpu=10m,requests.cpu=5m, used: limits.cpu=200m,requests.cpu=100m, limited: limits.cpu=200m,requests.cpu=100m 

如我們的例子所示,定義合理的資源配額限制開發者行為對 Kubernetes 管理十分重要。

清理

刪除剛才創建的命名空間 quota-test:

  1. $ kubectl delete -n quota-test 

規劃資源配額

Kubernetes 中提供多種方式來控制資源的搶占和使用,合理的規劃和配置配額、限制范圍和其它原生參數對保持集群的穩定性十分必要。

你應該十分謹慎地控制計算資源的資源配額,特別是關鍵業務的生產應用環境。

在規劃資源配額時,開發人員的參與很重要,需要他們預估并給出最合理的資源使用值。

 

責任編輯:趙寧寧 來源: Linux中國
相關推薦

2021-02-05 10:32:46

Kubernetes容器開發

2022-09-23 17:26:04

VeleroKubernetes

2022-02-14 11:48:44

KubernetesDescheduleLinux

2022-06-09 11:52:40

KubernetesOpenEBSLinux

2022-09-29 09:07:08

DataGrip數據倉庫數據庫

2021-07-27 10:09:27

鴻蒙HarmonyOS應用

2011-07-21 14:57:34

jQuery Mobi

2010-09-06 14:24:28

ppp authent

2009-12-28 17:40:10

WPF TextBox

2012-12-26 12:41:14

Android開發WebView

2017-01-04 15:22:57

TrimPath模板引擎

2010-06-03 17:27:36

Hadoop命令

2010-08-04 15:37:31

Flex圖表

2010-08-05 15:40:21

FlexBuilder

2009-12-31 17:17:45

Silverlight

2010-08-04 14:28:01

Flex組件

2019-11-13 12:39:26

Python 開發編程語言

2024-02-04 00:00:00

Loki性能查詢

2022-06-23 08:01:36

FlaskSocketIOSwift

2012-05-23 15:46:39

數字羅盤
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av黄色国产| 成人在线小视频 | 男人影音 | 欧美一区 | 日韩精品亚洲专区在线观看 | 国产成人精品综合 | 亚洲aⅴ | 午夜亚洲 | 99久久免费精品国产免费高清 | 日韩精品一区二区三区中文字幕 | 99亚洲国产精品 | 亚洲一二三在线观看 | 欧美国产亚洲一区二区 | 国产一区二区在线视频 | 国产 欧美 日韩 一区 | 亚洲视频免费观看 | 国产精品久久久久久久久久妞妞 | 亚洲色图第一页 | 一区二区精品在线 | 一级爱爱片 | 国产精品无码久久久久 | 精品免费| 男人av网| 欧美精品一区二区三区在线 | 日韩在线 | 精品1区2区3区4区 | 91精品国产自产精品男人的天堂 | 日本一区二区影视 | 国产精品一区二区三区在线 | 成人亚洲精品 | 天堂免费| 亚洲精品乱码久久久久久黑人 | 波多野结衣在线观看一区二区三区 | 99国产精品99久久久久久 | 欧美一级黄色网 | 亚洲精品永久免费 | 美国av毛片 | 91激情电影 | 午夜天堂精品久久久久 | wwwsihu| 精品欧美乱码久久久久久 |