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

Kubernetes集群多租戶資源管理

運維 系統運維
Kubernetes集群里的節點提供的資源主要是計算資源,計算資源是可計量的能被申請、分配和使用的基礎資源,這使之區別于API資源(API Resources,例如Pod和Services等)。

[[436193]]

1.概述

先講解Pod的兩個重要參數:CPU Request與Memory Request。在大多數情況下我們在定義Pod時并沒有定義這兩個參數,此時Kubernetes會認為該Pod所需的資源很少,并可以將其調度到任何可用的Node上。這樣一來,當集群中的計算資源不很充足時,如果集群中的Pod負載突然加大,就會使某個Node的資源嚴重不足。

為了避免系統掛掉,該Node會選擇“清理”某些Pod來釋放資源,此時每個Pod都可能成為犧牲品。但有些Pod擔負著更重要的職責,比其他Pod更重要,比如與數據存儲相關的、與登錄相關的、與查詢余額相關的,即使系統資源嚴重不足,也需要保障這些Pod的存活,Kubernetes中該保障機制的核心如下。

  • 通過資源限額來確保不同的Pod只能占用指定的資源
  • 允許集群的資源被超額分配,以提高集群的資源利用率
  • 為Pod劃分等級,確保不同等級的Pod有不同的服務質量(QoS),資源不足時,低等級的Pod會被清理,以確保高等級的Pod穩定運行

Kubernetes集群里的節點提供的資源主要是計算資源,計算資源是可計量的能被申請、分配和使用的基礎資源,這使之區別于API資源(API Resources,例如Pod和Services等)。當前Kubernetes集群中的計算資源主要包括CPU、GPU及Memory,絕大多數常規應用是用不到GPU的,因此這里重點介紹CPU與Memory的資源管理問題

CPU與Memory是被Pod使用的,因此在配置Pod時可以通過參數CPU Request及Memory Request為其中的每個容器指定所需使用的CPU與Memory量,Kubernetes會根據Request的值去查找有足夠資源的Node來調度此Pod,如果沒有,則調度失敗。

2.Pod資源使用規范

我們知道,一個pod所使用的CPU與Memory是一個動態的量,確切地說,是一個范圍,跟它的負載密切相關:負載增加時,CPU和Memory的使用量也會增加。因此最準確的說法是,某個進程的CPU使用量為0.1個CPU~1個CPU,內存占用則為500MB~1GB。對應到Kubernetes的Pod容器上,cpu和Memory 分別有兩個限制:

  • Requests 表示業務正常運行所需要資源 屬于預留資源
  • Limit 表示業務最大使用資源 該值為不保障資源 資源足夠情況下最大使用資源值

其中CPU 為可壓縮資源 按照時間片進行調度,Memory 為不可壓縮資源 屬于硬限制資源類型,limits對應資源量的上限,即最多允許使用這個上限的資源量。由于CPU資源是可壓縮的,進程無論如何也不可能突破上限,因此設置起來比較容易。對于Memory這種不可壓縮資源來說,它的Limit設置就是一個問題了,如果設置得小了,當進程在業務繁忙期試圖請求超過Limit限制的Memory時,此進程就會被Kubernetes殺掉。因此,Memory的Request與Limit的值需要結合進程的實際需求謹慎設置。如果不設置CPU或Memory的Limit值,會怎樣呢?在這種情況下,該Pod的資源使用量有一個彈性范圍,我們不用絞盡腦汁去思考這兩個Limit的合理值,但問題也來了,考慮下面的例子:

Pod A的Memory Request被設置為1GB,Node A當時空閑的Memory為1.2GB,符合Pod A的需求,因此Pod A被調度到Node A上。運行3天后,Pod A的訪問請求大增,內存需要增加到1.5GB,此時Node A的剩余內存只有200MB,由于PodA新增的內存已經超出系統資源,所以在這種情況下,Pod A就會被Kubernetes殺掉。

沒有設置Limit的Pod,或者只設置了CPU Limit或者Memory Limit兩者之一的Pod,表面看都是很有彈性的,但實際上,相對于4個參數都被設置的Pod,是處于一種相對不穩定的狀態的,它們與4個參數都沒設置的Pod相比,只是穩定一點而已。理解了這一點,就很容易理解Resource QoS問題了。

如果我們有成百上千個不同的Pod,那么先手動設置每個Pod的這4個參數,再檢查并確保這些參數的設置,都是合理的。比如不能出現內存超過2GB或者CPU占據2個核心的Pod。最后還得手工檢查不同租戶(Namespace)下的Pod的資源使用量是否超過限額。為此,Kubernetes提供了另外兩個相關對象:LimitRange及ResourceQuota,前者解決request與limit參數的默認值和合法取值范圍等問題,后者則解決約束租戶的資源配額問題。

  • CPU 相關規則如下:

單位m,10m=0.01核,1核=1000m

Requests 根據業務實際使用量進行預估填寫

Limits = Requests * 20% + Requests

  • Memory 相關規則如下:

單位Mi 1024Mi=1G內存

Requests 根據業務實際使用量進行預估填寫

Limits = Requests * 20% + Requests

3.Namespace資源管理規范

業務實際Requests Limit 不超過整體80% 防止業務滾動更新無足夠資源創建Pod

3.1 多租戶資源使用策略

通過ResourceQuota限制對應項目組資源用量

3.2 資源用量變更流程

4.資源監控及檢查

4.1 資源使用監控

  • Namespace Reuqests資源使用率
  1. sum (kube_resourcequota{type="used",resource="requests.cpu"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="requests.cpu"}) by (resource,namespace) * 100 
  2.  
  3. sum (kube_resourcequota{type="used",resource="requests.memory"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="requests.memory"}) by (resource,namespace) * 100 
  • Namespace Limit資源使用率
  1. sum (kube_resourcequota{type="used",resource="limits.cpu"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="limits.cpu"}) by (resource,namespace) * 100 
  2.  
  3. sum (kube_resourcequota{type="used",resource="limits.memory"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="limits.memory"}) by (resource,namespace) * 100 

4.2 通過Grafana 進行查看

  • CPU請求率
  1. sum (kube_resourcequota{type="used",resource="requests.cpu",namespace=~"$NameSpace"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="requests.cpu",namespace=~"$NameSpace"}) by (resource,namespace) 
  • 內存請求率
  1. sum (kube_resourcequota{type="used",resource="requests.memory",namespace=~"$NameSpace"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="requests.memory",namespace=~"$NameSpace"}) by (resource,namespace) 
  • CPU限制率
  1. sum (kube_resourcequota{type="used",resource="limits.cpu"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="limits.cpu"}) by (resource,namespace) 
  • 內存限制率
  1. sum (kube_resourcequota{type="used",resource="limits.memory"}) by (resource,namespace) / sum (kube_resourcequota{type="hard",resource="limits.memory"}) by (resource,namespace) 

4.3 集群內查看資源使用

  • 查看資源使用量
  1. [root@k8s-dev-slave04 yaml]# kubectl describe resourcequotas -n cloudchain--staging 
  2.  
  3. Name:            mem-cpu-demo 
  4.  
  5. Namespace:       cloudchain--staging 
  6.  
  7. Resource         Used   Hard 
  8.  
  9. --------         ----   ---- 
  10.  
  11. limits.cpu       200m   500m 
  12.  
  13. limits.memory    200Mi  500Mi 
  14.  
  15. requests.cpu     150m   250m 
  16.  
  17. requests.memory  150Mi  250Mi 
  • 查看event事件 判斷是否正常創建
  1. [root@kevin ~]# kubectl get event -n default 
  2.  
  3. LAST SEEN   TYPE      REASON         OBJECT                          MESSAGE 
  4.  
  5. 46m         Warning   FailedCreate   replicaset/hpatest-57965d8c84   Error creating: pods "hpatest-57965d8c84-s78x6" is forbidden: exceeded quota: mem-cpu-demo, requested: limits.cpu=400m,limits.memory=400Mi, used: limits.cpu=200m,limits.memory=200Mi, limited: limits.cpu=500m,limits.memory=500Mi 
  6.  
  7. 29m         Warning   FailedCreate   replicaset/hpatest-57965d8c84   Error creating: pods "hpatest-57965d8c84-5w6lk" is forbidden: exceeded quota: mem-cpu-demo, requested: limits.cpu=400m,limits.memory=400Mi, used: limits.cpu=200m,limits.memory=200Mi, limited: limits.cpu=500m,limits.memory=500Mi 
  8.  
  9. 13m         Warning   FailedCreate   replicaset/hpatest-57965d8c84   Error creating: pods "hpatest-57965d8c84-w2qvz" is forbidden: exceeded quota: mem-cpu-demo, requested: limits.cpu=400m,limits.memory=400Mi, used: limits.cpu=200m,limits.memory=200Mi, limited: limits.cpu=500m,limits.memory=500Mi 

本文轉載自微信公眾號「運維開發故事」

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2022-05-12 14:25:44

Kubernetesvcluster

2025-04-29 10:00:00

Kubernete云原生Helm

2022-05-24 09:00:00

云計算Kubernetes安全

2021-02-07 08:00:00

Kubernetes集群云原生

2020-09-09 07:00:00

Kubernetes集群容器

2021-12-30 07:42:13

Kubernetes集群架構

2021-02-18 09:28:32

Kubernetes開源SaaS

2013-04-18 15:53:46

SLURM開源分布式資源管理

2023-11-29 08:35:28

群多租戶ES運維

2009-06-24 14:18:47

資源管理敏捷項目

2013-12-21 19:58:32

SDN應用資源管理平臺SDN

2023-09-18 08:00:00

Kubernetes容器集群

2022-04-15 09:30:00

Kubernetes云計算多云

2021-08-31 07:00:26

Kubernetes Clusternet開源

2023-12-15 15:14:10

yarn任務管理資源管理

2021-12-24 10:47:49

Kubernetes容器化微服務

2022-07-24 21:11:19

KubernetesLinux

2021-12-26 18:23:10

Kubernetes集群命令

2018-11-20 09:35:42

開源技術 數據

2013-12-03 18:31:43

SDN應用編排資源管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 二区在线视频 | 亚洲日本一区二区 | 亚洲精品在线免费 | 免费h在线 | 中文字幕一区二区三区精彩视频 | 亚洲午夜电影 | 毛片网在线观看 | 日韩欧美专区 | 国产婷婷色综合av蜜臀av | 国内精品久久久久久久影视简单 | 久草网视频 | 欧美色欧美亚洲另类七区 | 日本在线中文 | 亚洲视频在线观看免费 | 欧美韩一区二区 | 日韩av一区二区在线观看 | 精品一区二区三区入口 | 亚洲精品在线国产 | 亚洲精品国产成人 | 久久最新精品 | 免费黄色大片 | www精品 | 一区二区av在线 | 久久久久国产一区二区三区 | 国产高清在线精品一区二区三区 | 亚洲视频在线播放 | 日韩成人影院在线观看 | 黄色毛片免费 | 国产夜恋视频在线观看 | 久久久久免费精品国产小说色大师 | 久久免费小视频 | www国产亚洲精品久久网站 | 久久久久久女 | 亚洲 欧美 综合 | 二区中文字幕 | 久久剧场 | 红桃视频一区二区三区免费 | 国产欧美一区二区三区在线看 | www.99re| 亚洲网站在线播放 | 91精品国产综合久久精品 |