国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一文搞懂Kubernetes的Limits和Requests

云計(jì)算 云原生
Kubernetes將Limits定義為一個容器使用的最大資源量,這意味著容器的消耗量永遠(yuǎn)不能超過所顯示的內(nèi)存量或CPU量。

當(dāng)在Kubernetes中使用容器時,重要的是要知道所涉及的資源是什么以及如何需要它們。有些進(jìn)程比其他進(jìn)程需要更多的CPU或內(nèi)存。有些是關(guān)鍵的,不應(yīng)該被餓死。

知道了這一點(diǎn),我們應(yīng)該正確配置我們的容器和Pod,以獲得兩者的最佳效果。

在這篇文章中,我們將看到。

  • Kubernetes 的Limits和Requests介紹
  • 實(shí)踐案例
  • Kubernetes Requests
  • Kubernetes Limits
  • CPU的特殊性
  • 內(nèi)存的特殊性
  • Namespace ResourceQuta
  • Namespace LimitRange
  • 總結(jié)

Kubernetes的Limits和Requests介紹

在使用Kubernetes時,Limits和Requests是重要的配置,主要包含CPU和內(nèi)存的配置。

Kubernetes將Limits定義為一個容器使用的最大資源量,這意味著容器的消耗量永遠(yuǎn)不能超過所顯示的內(nèi)存量或CPU量。

另一方面,Requests是指為容器保留的資源的最小保證量。

圖片

image.png

實(shí)踐案例

讓我們來看看下面這個deployment,我們需要為兩個不同的容器在CPU和內(nèi)存上設(shè)置Limits和Requests。

kind: Deployment
apiVersion: extensions/v1beta1

template:
spec:
containers:
- name: redis
image: redis:5.0.3-alpine
resources:
limits:
memory: 600Mi
cpu: 1
requests:
memory: 300Mi
cpu: 500m
- name: busybox
image: busybox:1.28
resources:
limits:
memory: 200Mi
cpu: 300m
requests:
memory: 100Mi
cpu: 100m

假如,我們要把該deployment部署到4C16G配置的節(jié)點(diǎn)上,可以得到如下信息。

圖片

  1. Pod的有效請求是400 MiB的內(nèi)存和600 millicores的CPU,你需要一個有足夠自由可分配空間的節(jié)點(diǎn)來安排pod。
  2. Redis容器的CPU份額將是512,而busybox容器是102,Kubernetes總是為每個核心分配1024個份額,因此redis:1024 * 0.5 cores ? 512和busybox:1024 * 0.1核 ? 102
  3. 如果Redis容器試圖分配超過600MB的RAM,它將被OOM殺死,很可能使pod失敗。
  4. 如果Redis試圖在每100ms內(nèi)使用超過100ms的CPU,(因?yàn)槲覀冇?個核心,可用時間為每100ms 400ms),它將遭受CPU節(jié)流,導(dǎo)致性能下降。
  5. 如果Busybox容器試圖分配超過200MB的RAM,它將被OOM殺死,導(dǎo)致一個失敗的Pod。
  6. 如果Busybox試圖每100ms使用超過30ms的CPU,它將遭受CPU節(jié)流,導(dǎo)致性能下降。

Kubernetes Requests

Kubernetes將請求定義為容器使用的資源的最低保證量。

基本上,它將設(shè)定容器所要消耗的資源的最小數(shù)量。

當(dāng)一個Pod被調(diào)度時,kube-scheduler將檢查Kubernetes請求,以便將其分配給一個特定的節(jié)點(diǎn):該節(jié)點(diǎn)至少可以滿足Pod中所有容器的這個數(shù)量。如果請求的數(shù)量高于可用的資源,Pod將不會被安排,并保持在Pending狀態(tài)。

關(guān)于Pending狀態(tài)的更多信息,請查看Understanding Kubernetes Pod pending problems【1】。

在這個例子中,在容器定義中,我們設(shè)置了一個請求,要求100m核心的CPU和4Mi的內(nèi)存。

resources:
requests:
cpu: 0.1
memory: 4Mi

Requests通常被使用在以下場景:

  • 當(dāng)把Pod分配給一個節(jié)點(diǎn)時,所以Pod中的容器的指定請求被滿足。
  • 在運(yùn)行時,指定的請求量將被保證為該P(yáng)od中的容器的最小值。

圖片

Kubernetes Limits

Kubernetes將Limits定義為一個容器使用的最大資源量。

這意味著容器的消耗量永遠(yuǎn)不能超過指定的內(nèi)存量或CPU量。

resources:
limits:
cpu: 0.5
memory: 100Mi

Limits通常用于以下場景:

  • 當(dāng)把Pod分配給一個節(jié)點(diǎn)時,如果沒有設(shè)置請求,默認(rèn)情況下,Kubernetes將分配請求=限制。
  • 在運(yùn)行時,Kubernetes將檢查Pod中的容器所消耗的資源量是否高于限制所顯示的數(shù)量。

圖片

CPU的特性

CPU是一種可壓縮的資源,這意味著它可以被拉伸,以滿足所有的需求。如果進(jìn)程要求太多的CPU,其中一些將被節(jié)制。

CPU代表計(jì)算處理時間,以核為單位。

  • 你可以用毫微米(m)來表示比一個核心更小的數(shù)量(例如,500米是半個核心)。
  • 最小的數(shù)量是1m
  • 一個節(jié)點(diǎn)可能有一個以上的核心可用,所以請求CPU>1是可能的

圖片

內(nèi)存的特性

內(nèi)存是一種不可壓縮的資源,意味著它不能像CPU那樣被拉伸。如果一個進(jìn)程沒有得到足夠的內(nèi)存來工作,這個進(jìn)程就會被殺死。

在Kubernetes中,內(nèi)存的單位是字節(jié)。

  • 你可以用,E,P,T,G,M,k來代表Exabyte,Petabyte,Terabyte,Gigabyte,Megabyte和kilobyte,盡管只有最后四個是常用的。(例如,500M, 4G)
  • 警告:不要用小寫的m表示內(nèi)存(這代表Millibytes,低得離譜)
  • 你可以用Mi來定義Mebibytes,其余的也可以用Ei、Pi、Ti來定義(例如,500Mi)

!! 一個Mebibyte(以及它們的類似物Kibibyte、Gibibyte...)是20字節(jié)的2次方。它的出現(xiàn)是為了避免與公制中的Kilo、Mega定義相混淆。你應(yīng)該使用這個符號,因?yàn)樗亲止?jié)的典型定義,而Kilo和Mega是1000的倍數(shù)。

圖片

最佳實(shí)踐

在Kubernetes中,你應(yīng)該很少使用限制來控制你的資源使用。這是因?yàn)槿绻阆氡苊怵囸I(確保每個重要的進(jìn)程都能得到它的份額),你應(yīng)該首先使用請求。

通過設(shè)置限制,你只是防止進(jìn)程在特殊情況下檢索額外的資源,在內(nèi)存方面造成OOM殺戮,在CPU方面造成Throttling(進(jìn)程將需要等待CPU可以再次使用)。

欲了解更多信息,請查看article about OOM and Throttling【2】。

如果你在一個Pod的所有容器中設(shè)置一個等于限制的請求值,該P(yáng)od將獲得保證的服務(wù)質(zhì)量。

還需要注意的是,資源使用量高于請求的Pod更有可能被驅(qū)逐,所以設(shè)置非常低的請求會造成弊大于利。可以在Pod eviction and Quality of Service【3】查看。

Namespace ResourceQuata

由于命名空間的存在,我們可以將Kubernetes資源隔離到不同的組,也稱為租戶。

通過ResourceQuota,你可以為整個命名空間設(shè)置一個內(nèi)存或CPU限制,確保其中的實(shí)體不能消耗超過這個數(shù)量。

apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: 2
requests.memory: 1Gi
limits.cpu: 3
limits.memory: 2Gi

  • requests.cpu:這個命名空間中所有請求的最大CPU數(shù)量。
  • requests.memory:這個命名空間中所有請求的最大內(nèi)存量。
  • limits.cpu:這個命名空間中所有限制的最大CPU數(shù)量。
  • limits.memory:這個命名空間中所有限制的總和的最大內(nèi)存量。

然后,將其應(yīng)用于你的命名空間。

kubectl apply -f resourcequota.yaml --namespace=mynamespace

你可以用以下方法列出一個命名空間的當(dāng)前ResourceQuota。

kubectl get resourcequota -n mynamespace

注意,如果你為命名空間中的特定資源設(shè)置了ResourceQuota,那么你就需要為該命名空間中的每個Pod指定相應(yīng)的限制或請求。否則,Kubernetes將返回一個 "failed quota"的錯誤。

Error from server (Forbidden): error when creating "mypod.yaml": pods "mypod" is forbidden: failed quota: mem-cpu-demo: must specify limits.cpu,limits.memory,requests.cpu,requests.memory

如果你試圖添加一個新的Pod,其容器限制或請求超過了當(dāng)前的ResourceQuota,Kubernetes將返回一個 "exceeded quota "的錯誤。

Error from server (Forbidden): error when creating "mypod.yaml": pods "mypod" is forbidden: exceeded quota: mem-cpu-demo, requested: limits.memory=2Gi,requests.memory=2Gi, used: limits.memory=1Gi,requests.memory=1Gi, limited: limits.memory=2Gi,requests.memory=1Gi

Namespace LimitRange

如果我們想限制一個命名空間可分配的資源總量,ResourceQuotas很有用。但如果我們想給里面的元素提供默認(rèn)值,會發(fā)生什么?

LimitRanges是一種Kubernetes策略,它限制了命名空間中每個實(shí)體的資源設(shè)置。

apiVersion: v1
kind: LimitRange
metadata:
name: cpu-resource-constraint
spec:
limits:
- default:
cpu: 500m
defaultRequest:
cpu: 500m
min:
cpu: 100m
max:
cpu: "1"
type: Container

  • default。如果沒有指定,創(chuàng)建的容器將有這個值。
  • min: 創(chuàng)建的容器不能有比這更小的限制或請求。
  • max: 創(chuàng)建的容器不能有大于此值的限制或請求。

以后,如果你創(chuàng)建一個沒有設(shè)置請求或限制的新Pod,LimitRange會自動為其所有的容器設(shè)置這些值。

Limits:
cpu: 500m
Requests:
cpu: 100m

現(xiàn)在,想象一下,你添加一個新的Pod,以1200M為限。你會收到以下錯誤。

Error from server (Forbidden): error when creating "pods/mypod.yaml": pods "mypod" is forbidden: maximum cpu usage per Container is 1, but limit is 1200m

請注意,默認(rèn)情況下,Pod中的所有容器將有效地?fù)碛?00m CPU的請求,即使沒有設(shè)置LimitRanges。

總結(jié)

為我們的Kubernetes集群選擇最佳限制是關(guān)鍵,以便獲得最佳的能源消耗和成本。

為我們的Pod分配過多的資源可能會導(dǎo)致成本激增。

規(guī)模過小或?qū)S糜跇O少的CPU或內(nèi)存將導(dǎo)致應(yīng)用程序不能正常運(yùn)行,甚至Pod被驅(qū)逐。

如前所述,除非在非常特殊的情況下,否則不應(yīng)該使用Kubernetes限制,因?yàn)樗鼈兛赡軙斐筛蟮膫ΑT趦?nèi)存不足的情況下,容器有可能被殺死,在CPU不足的情況下,容器有可能被節(jié)流。

對于請求,當(dāng)你需要確保一個進(jìn)程獲得一個有保障的資源份額時,可以使用它們。

文檔

【1】https://sysdig.com/blog/kubernetes-pod-pending-problems/
【2】https://sysdig.com/blog/troubleshoot-kubernetes-oom/
【3】?https://sysdig.com/blog/kubernetes-pod-evicted/

原文:https://sysdig.com/blog/kubernetes-limits-requests/作者:JAVIER MARTíNEZ

責(zé)任編輯:武曉燕 來源: 運(yùn)維開發(fā)故事
相關(guān)推薦

2023-09-13 22:39:23

Minikube開源

2023-09-20 16:20:20

2023-09-22 10:45:47

云原生云計(jì)算

2021-02-22 09:44:03

KubernetesDNSLinux

2022-03-24 08:51:48

Redis互聯(lián)網(wǎng)NoSQL

2023-10-16 08:16:31

Bean接口類型

2020-12-21 07:54:46

CountDownLa用法源碼

2019-11-06 17:30:57

cookiesessionWeb

2024-04-12 12:19:08

語言模型AI

2024-09-27 08:10:57

2020-11-04 07:49:04

Select

2021-03-22 10:05:59

netstat命令Linux

2023-09-15 12:00:01

API應(yīng)用程序接口

2023-09-08 08:20:46

ThreadLoca多線程工具

2020-05-15 16:37:13

PowerBI數(shù)據(jù)分析

2023-07-04 08:56:07

指針類型Golang

2023-09-24 23:35:46

云原生Kubernetes

2021-07-08 10:08:03

DvaJS前端Dva

2021-03-04 00:09:31

MySQL體系架構(gòu)

2021-02-28 20:53:37

Cookie存儲瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

六月丁香久久丫| 尤物tv在线精品| 国产精品视频一二三区| 亚洲在线色站| 99精品综合| 国产精品av免费在线观看| 成人精品国产亚洲| 亚洲国产精品久久久久秋霞不卡| 国产在线高清| 亚洲成人免费在线观看| 2019一级黄色毛片免费看网| 国产欧美中文在线| 国产无套内射久久久国产| 国产福利一区二区三区在线视频| 日韩三级电影网站| 国产一区二区三区的电影| 成人免费观看网址| 精品国产乱码久久久久久蜜坠欲下 | 欧美一区二区三区啪啪| 国产一区二区三区福利| 在线亚洲免费视频| 91视频在线观看| 欧美巨大另类极品videosbest | 国产欧美日韩视频| 不卡av一区二区| 成人日韩av在线| 亚洲精品乱码久久久久久自慰| 久久久噜噜噜久久狠狠50岁| 日韩高清三级| 国产在线乱码一区二区三区| 九九热只有这里有精品| 成人av电影在线| 日本激情视频在线| 一级中文字幕一区二区| 美女毛片在线看| 91精品国产日韩91久久久久久| 狂野欧美激情性xxxx欧美| 亚洲人成网站999久久久综合| 欧美午夜三级| 91精品国产91久久久久久吃药| 免费欧美一区| 懂色一区二区三区av片| 日韩vs国产vs欧美| 成人综合视频在线| 亚洲午夜羞羞片| 国产二区三区在线| 中文字幕在线看视频国产欧美在线看完整 | 国产精品美女一区二区在线观看| 黄色录像1级片| 91福利区一区二区三区| 超碰在线97国产| 毛片精品免费在线观看| 日韩欧美一区免费| 宅男一区二区三区| 亚洲欧洲三级电影| 国产黄大片在线观看画质优化| 中文字幕欧美精品日韩中文字幕| 国产精品羞羞答答在线观看 | 国产丝袜一区二区三区| 国产精品qvod| 麻豆精品传媒视频| 久久久久99精品一区| 中日韩免费毛片| 亚洲第一页自拍| 中文字幕视频精品一区二区三区| 91在线观看免费网站| 国产麻豆精品在线观看| 91黑丝在线| 欧美精品三级在线观看| 中文字幕一区二区三区四区久久 | 亚洲电影在线观看| 一本色道久久综合亚洲精品酒店 | 又黄又爽又色视频| 欧美一区二区视频在线观看2020| 亚洲青青一区| 国产精品一区二区三区四区五区| 波多野结衣亚洲一区| 国产youjizz在线| 久久久久久久亚洲精品| 久久国产直播| 免费av片在线观看一道本| 日韩视频一区二区三区在线播放| 亚洲综合伊人| 日本在线观看一区二区三区| 亚洲嫩草精品久久| 巨胸喷奶水www久久久免费动漫| 91香蕉亚洲精品| 久久久久久久免费视频了| 日本高清中文字幕在线| 久久久久成人网| 久久69国产一区二区蜜臀| 最近最新mv在线观看免费高清| 北条麻妃99精品青青久久| 亚洲精品黄色| 99热在线免费播放| 中文字幕在线看视频国产欧美在线看完整| 好吊视频一区二区三区四区| 国产无遮挡又黄又爽免费软件| 在线亚洲男人天堂| 日本不卡高清视频| 国产女主播在线写真| 国产不卡精品视男人的天堂| www国产精品av| rebdb初裸写真在线观看| 国产精品制服诱惑| 午夜不卡av在线| 日韩深夜福利| 亚洲熟妇av一区二区三区| 日韩精品亚洲元码| 亚洲国产一区二区精品专区| 亚洲成人av高清| 国产精品视频资源| 亚洲一区精品在线| 国产免费久久| 国产字幕中文| 欧美最近摘花xxxx摘花| 中文字幕乱码久久午夜不卡 | 欧美性猛交久久久乱大交小说| 精品欧美乱码久久久久久1区2区| 一区二区三区网站| 写真福利理论片在线播放| 欧美一级片久久久久久久| 欧美激情在线一区二区三区| 欧美欧美在线| 国产a视频免费观看| 免费av一区二区| 国产三级精品视频| 亚洲欧美专区| 在线免费视频a| 欧美精品在线播放| 亚洲国产成人在线| 天堂一区二区三区四区| aaaaaaa大片免费看| 国产精品第一页在线| 黄色一区二区在线| 一区二区三区毛片免费| 国产精品久久久久一区二区国产| 国产成人看片| 制服丝袜激情欧洲亚洲| 亚洲女同同性videoxma| 欧美黑人xx片| 欧洲xxxxx| 久久躁日日躁aaaaxxxx| 亚洲国产精品精华液2区45| 久久精品色综合| 一级毛片免费看| 国产精品乱码视频| 精品国产免费久久| 成人一区二区视频| 国语一区二区三区| 日本私人网站在线观看| 奇米精品在线| 亚洲欧洲第一视频| 国产视频一区不卡| 日韩aaaa| 18videosex性欧美麻豆| 美女av免费观看| 91精品国产91久久久久久不卡| 亚洲国产aⅴ成人精品无吗| 欧美婷婷在线| 成人黄色动漫| 国产精品沙发午睡系列| 国产精品久久久久久久美男| 欧美高清激情brazzers| 懂色av一区二区三区免费看| 天堂成人娱乐在线视频免费播放网站 | 轻轻草成人在线| 欧美视频在线视频精品| 九色视频网站| 欧美日韩在线播放一区二区| 在线观看欧美成人| 《视频一区视频二区| 欧美日韩国产高清| 亚州一区二区三区| 免费看成人a| 欧美日本亚洲| 欧美日韩国产123| 欧美日韩精品久久久| 久久先锋资源网| 精品成人免费| 国产精品毛片无码| 阿v免费在线观看| 国产视频一视频二| 91久久精品国产91久久性色tv| 亚洲黄色av女优在线观看| 国产片一区二区| 国产亚洲毛片| 精品欠久久久中文字幕加勒比| av在线三区| 天天爱天天操天天干| 欧美xxxx黑人又粗又长密月| 国内精品久久久久久影视8| 91精品国产综合久久福利| 国产午夜精品久久久久久免费视| 亚洲国产精品第一区二区| 大桥未久女教师av一区二区| 黑人精品视频| 你懂的视频在线播放| 国产又黄又猛视频| 中文字幕精品一区日韩|