国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

pod的requests、limits解讀、LimitRange資源配額、Qos服務(wù)質(zhì)量等級(jí)、資源配額管理 Resource Quotas

這篇具有很好參考價(jià)值的文章主要介紹了pod的requests、limits解讀、LimitRange資源配額、Qos服務(wù)質(zhì)量等級(jí)、資源配額管理 Resource Quotas。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

環(huán)境:k8s-v1.22.17 docker-20.10.9 centos-7.9

什么是可計(jì)算資源

CPU、GPU、Memory等都是計(jì)算資源,所謂計(jì)算資源,就是可計(jì)量的、能被申請(qǐng)的、能被分配使用的資源。
CPU在容器技術(shù)中屬于可壓縮資源,因此,pod對(duì)CPU的使用超過(guò)其cpu.limit限制一般不會(huì)導(dǎo)致容器被系統(tǒng)"殺死",而Memory屬于不可壓縮資源,當(dāng)容器使用的memory超過(guò)其memory.limit限制時(shí),系統(tǒng)將可能會(huì)"殺掉"容器,這就是常見(jiàn)的OOM(out of memory)異常,如果該容器的重啟策略是always,則kubelet將會(huì)重啟該容器,因此評(píng)估好pod的memory.limit是一個(gè)重要的事情。

CPU、Memory計(jì)量單位

CPU:CPU的request和limits是通過(guò)cpu核數(shù)(cpus)來(lái)度量的,單位是m(milliunit),數(shù)量可以為整數(shù)或小數(shù),如0.1m、50m,CPU的資源是絕對(duì)值而不是相對(duì)值,比如0.1CPU在單核或多核上是一樣的,都嚴(yán)格等于0.1 CPU core。m,milliunit代表“千分之一核心”,譬如50m的含義是指50/1000核心,即5%

Memory:內(nèi)存的計(jì)量單位是字節(jié)Byte,Byte是由8個(gè)位組成的一個(gè)單元,也就是1 Byte = 8 bit。pod的內(nèi)存requests或limits都是使用整數(shù)加上國(guó)際單位制來(lái)表示內(nèi)存值,國(guó)際單位制可以是
十進(jìn)制的E、P、T、G、M、K、m或二進(jìn)制的Ei、Pi、Gi、Mi、Ki。
常見(jiàn)的KiB和MiB是以二進(jìn)制表示的字節(jié)單位,KB和MB是以十進(jìn)制表示的字節(jié)單位。
十進(jìn)制:1 KB = 1000 Byte = 8000 bit
二進(jìn)制:1 KiB = 2的10次方 Byte = 1024 Byte = 8192 bit

Mi:1Mi = 1024乘1024,而平時(shí)使用的單為M是1M = 1000乘1000

memory:內(nèi)存大小,可以使用Gi、Mi、G、M等單位
cpu的單位m:
注意:Gi和G,Mi和M優(yōu)點(diǎn)區(qū)別,官網(wǎng)解釋:Mi表示(1Mi=1024×1024),M表示(1M=1000×1000)(其它單位類推, 如Ki/K Gi/G)

pod資源請(qǐng)求、限額方式

在k8s中,全面限制一個(gè)應(yīng)用及其中的pod所能占用的資源配額,具體可以使用下面三種方式:
1、定義每個(gè)pod的資源配額相關(guān)參數(shù),如CPU/memory的request、limits;
2、自動(dòng)為每個(gè)沒(méi)有定義資源配額的pod添加資源配額模板(LimitRange);
3、從總量上限制一個(gè)租戶(namespace)應(yīng)用所能使用的資源配額(ResourceQuota)

pod的request、limits是指pod中所有容器的request、limits的總和,對(duì)于沒(méi)有設(shè)置request、limits的容器,該值為0或者按照集群配置的默認(rèn)值計(jì)算;
LimiteRang正是用于解決了沒(méi)有設(shè)置配額參數(shù)的pod的默認(rèn)資源配額問(wèn)題;
REsourceQuota則約束租戶的資源總量配額問(wèn)題。

pod定義requests、limits

pod可以定義資源配額的相關(guān)參數(shù):
spec.container[].resources.requests.cpu:容器初始要求的CPU數(shù)量
spec.container[].resources.limits.cpu:容器所能使用的最大CPU數(shù)量
spec.container[].resources.requests.memory:容器初始要求的內(nèi)存數(shù)量
spec.container[].resources.limits.memory:容器所能使用的最大內(nèi)存數(shù)量

默認(rèn)情況下,pod中只寫(xiě)requests(cpu和memory寫(xiě)其中一個(gè)或兩個(gè)都寫(xiě))不寫(xiě)limits,則默認(rèn)沒(méi)有最大資源限制;
pod中只寫(xiě)limits.cpu、limits.memory,不寫(xiě)requests.cpu、requests.memory,默認(rèn)的requests的cpu、memory其值等于對(duì)應(yīng)的limits的cpu、memory值;
pod中只寫(xiě)limits的cpu或memory其中的一個(gè),則requests對(duì)應(yīng)的也等價(jià)于limits的對(duì)應(yīng)的一個(gè)值。如只寫(xiě)limits.cpu,則requests.cpu值=limits.cpu值,limits.memory沒(méi)寫(xiě)則requests.memory也沒(méi)有值。

requests和limits背后的機(jī)制
如果容器運(yùn)行時(shí)是docker,那么pod的requests和limits歸根結(jié)底還是要轉(zhuǎn)換為docker run啟動(dòng)容器的參數(shù),對(duì)應(yīng)如下:
spec.container[].resources.requests.cpu docker run --cpu-shares
spec.container[].resources.limits.cpu docker run --cpu-period
spec.container[].resources.requests.memory 無(wú),請(qǐng)求內(nèi)存只會(huì)作為調(diào)度器的參考,不會(huì)作為如何參數(shù)傳遞給docker run
spec.container[].resources.limits.memory docker run --memory

查看節(jié)點(diǎn)資源情況

kubectl describe node master01 :可以查看節(jié)點(diǎn)的計(jì)算資源總量和已分配量

pod使用request、limits示例

kubectl  create ns nginx	#創(chuàng)建命名空間
vim nginx-test.yaml 		#創(chuàng)建pod,pod包含2個(gè)容器
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-test
  namespace: nginx-test
spec:
........
    spec:
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: nginx-test-1
        resources:                              #定義資源請(qǐng)求、資源限制
          requests:                             #資源請(qǐng)求
            memory: "20Mi"                      #內(nèi)存請(qǐng)求
            cpu: "30m"                          #CPU請(qǐng)求
          limits:                               #資源限制
            memory: "50Mi"                      #內(nèi)存限制
            cpu: "50m"                          #CPU限制
        ports:
        - containerPort: 80
          name: nginx
      - image: tomcat
        imagePullPolicy: IfNotPresent
        name: tomcat-test-2
        resources:                              #定義資源請(qǐng)求、資源限制
          requests:                             #資源請(qǐng)求
            memory: "10Mi"                      #內(nèi)存請(qǐng)求
            cpu: "20m"                          #CPU請(qǐng)求
          limits:                               #資源限制
            memory: "40Mi"                      #內(nèi)存限制
            cpu: "40m"                          #CPU限制
        ports:
        - containerPort: 8080
          name: tomcat

#查看pod占用的資源情況
[root@master ~]# kubectl describe node node2  | grep -C10  nginx-test-7d448999cb-mxq6s
  Namespace        Name                           CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------        ----                           ------------  ----------  ---------------  -------------  ----
  nginx-test       nginx-test-7d448999cb-mxq6s    50m (1%)      90m (2%)    30Mi (1%)        90Mi (4%)      6m31s
可以看到,我們創(chuàng)建的pod一共請(qǐng)求50m的CPU,30Mi的內(nèi)存,最大CPU限制為90m,最大內(nèi)存限制為90Mi

LimitRange限制命名空間下的pod的資源配額

前面我們討論了pod中可以手動(dòng)定義requests.cpu、requests.memory、limits.cpu、limits.memory參數(shù)實(shí)現(xiàn)pod的資源請(qǐng)求和資源限制,但是當(dāng)集群很大,存在很多pod中,對(duì)每個(gè)pod定義資源請(qǐng)求和資源限制顯得很繁瑣,所以出現(xiàn)了LimitRange機(jī)制。

一個(gè) LimitRange(限制范圍) 對(duì)象提供的限制能夠做到:
1、在一個(gè)命名空間中實(shí)施對(duì)每個(gè) Pod 或 Container 最小和最大的資源使用量的限制。
2、在一個(gè)命名空間中實(shí)施對(duì)每個(gè) PersistentVolumeClaim 能申請(qǐng)的最小和最大的存儲(chǔ)空間大小的限制。
3、在一個(gè)命名空間中實(shí)施對(duì)一種資源的申請(qǐng)值和限制值的比值的控制。
4、設(shè)置一個(gè)命名空間中對(duì)計(jì)算資源的默認(rèn)申請(qǐng)/限制值,并且自動(dòng)的在運(yùn)行時(shí)注入到多個(gè) Container 中。

limitrange屬于命名空間,當(dāng)在一個(gè)命名空間中創(chuàng)建了一個(gè)limitrange對(duì)象,將會(huì)在該命名空間中實(shí)施 LimitRange 限制。

LimitRange機(jī)制的原理:在某個(gè)命名空間下,創(chuàng)建一個(gè)limitrang資源對(duì)象,表示對(duì)該命名空間下創(chuàng)建的pod和容器的requests和limits配置進(jìn)行限制,比如pod和容器的最大、最小、默認(rèn)requests和limits值。

下面進(jìn)行演示:

#創(chuàng)建一個(gè)命名空間
kubectl  create ns limitrang-nginx	#創(chuàng)建命名空間
#為命名空間創(chuàng)建一個(gè)limitrange
vim my-limits.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: my-limits
  namespace: limitrang-nginx
spec:
  limits:					#定義了容器的request和limit的最大最小值,以及默認(rèn)request、limit值
  - type: Pod				#類型是pod,表示下面這段整對(duì)整個(gè)pod而言
    max:					#pod的最大值
      cpu: "4"				#pod的最大cpu
      memory: 2Gi			#pod的最大內(nèi)存
    min:					#pod的最小值
      cpu: "200m"  			#pod的最小cpu
      memory: 6Mi			#pod的最小內(nèi)存
    maxLimitRequestRatio:	#這個(gè)好像是pod的limits和requests的最大比例
      cpu: 3
      memory: 2
  - type: Container			#類型是容器,表示下面這段整對(duì)pod里面的每一個(gè)容器而言
    default:	#容器的默認(rèn)限制值,注意這是默認(rèn)limits值,當(dāng)容器沒(méi)有給定limits時(shí)將啟動(dòng)該值(下面說(shuō)的default limit就是這個(gè)參數(shù))
      cpu: 300m				#容器的默認(rèn)limits.cpu
      memory: 200Mi			#容器的默認(rèn)limits.memory
    defaultRequest:			#容器的默認(rèn)請(qǐng)求值,當(dāng)容器沒(méi)有設(shè)置request時(shí)使用
      cpu: 100m				#容器的默認(rèn)requests.cpu
      memory: 100Mi			#容器的默認(rèn)requests.memory
    max:					#容器的最大值
      cpu: 2				#容器的最大cpu,即limits.cpu
      memory: 1Gi			#容器的最大memory,即limits.memory
    min:					#容器的最小值
      cpu: 100m				#容器的最小cpu,即requests.cpu
      memory: 3Mi			#容器的最小memory,即requests.memory
    maxLimitRequestRatio:	#這個(gè)好像是容器的limits和requests的最大比例
      cpu: 5
      memory: 4
    

參數(shù)說(shuō)明:
在limitrange中,pod和container都可以設(shè)置CPU或內(nèi)存的min、max、maxLimitRequestRatio參數(shù),container還可以定義default request和
default limit參數(shù),而pod不能設(shè)置default request和default limit參數(shù)。
對(duì)container參數(shù)解讀如下:
container的min表示pod中所有容器的requests最小值;
container的max表示pod中所有容器的requests最大值;
container的defaultRequest是pod中所有未指定requests值的容器的的默認(rèn)request值;
container的default是pod中所有未指定limits值的容器的默認(rèn)limits值。(注意看了,default對(duì)應(yīng)的是容器默認(rèn)limits,不要被它的單詞迷糊了)
maxLimitRequestRatio這個(gè)參數(shù)好像是容器的最大超賣比例。
四個(gè)參數(shù)關(guān)系:min<=defaultRequest<=default<=max

對(duì)pod的參數(shù)解讀如下:
pod的min表示pod中全部容器的requests總和最小值;
pod的max表示pod中全部容器的limits總和最大值;
maxLimitRequestRatio這個(gè)參數(shù)好像是pod的最大超賣比例。

當(dāng)一個(gè)pod沒(méi)有定義requests或limits時(shí),且該pod所屬命名空間中存在limitrange,則系統(tǒng)將根據(jù)limitrange給pod默認(rèn)設(shè)置對(duì)應(yīng)的requests和
limits值;
當(dāng)即沒(méi)有l(wèi)imitrange時(shí),參考上面小節(jié)《 pod定義requests、limits》講的那樣;
當(dāng)有l(wèi)imitrange時(shí),但是只給定了limits,沒(méi)有給定requests值時(shí),經(jīng)驗(yàn)證,pod還是默認(rèn)requests值與limits值相等,而不是設(shè)置為limitrange設(shè)定的defaultRequest值。

Qos服務(wù)質(zhì)量等級(jí)

(暫時(shí)先忽略limitrange吧,因?yàn)镼os服務(wù)質(zhì)量等級(jí)涉及pod中容器requests和limits)
在系統(tǒng)資源不足時(shí),k8s會(huì)選擇"殺掉"部分容器來(lái)釋放資源,選擇哪些pod進(jìn)行殺掉呢,那么如何衡量一個(gè)pod的重要程度時(shí),使用Qos服務(wù)質(zhì)量等級(jí)衡量,k8s將容器劃分為3個(gè)QoS等級(jí),如下:

Guaranteed:完全可靠的,是指pod的所有容器都定義了requests和limits,并且每一個(gè)容器的requests和limits值都對(duì)應(yīng)相等且不為0,我們指定,如果定義了limits沒(méi)有定義requests,那么requests值就等于limits,這種pod的QoS等級(jí)就是Guaranteed。

Burstable:彈性波動(dòng),較可靠的,當(dāng)pod的QoS等級(jí)既不是Guaranteed又不是BestEffect,那就是Burstable;
這分為2種情況:pod中一部分容器定義了requests和limits且requests值小于limits值;pod中一部分容器都未定義requests和limits。注意:這里說(shuō)的是沒(méi)有定義requests和limits,但是不代表這里limitrange不會(huì)默認(rèn)設(shè)置,這里可以先暫時(shí)忽略limitrange吧。

BestEffect:盡力而為,不太可靠的,是指pod中所有容器都沒(méi)有定義requests和limits,那么這種pod的QoS等級(jí)就是BestEffect。注意:這里說(shuō)的是沒(méi)有定義requests和limits,但是不代表這里limitrange不會(huì)默認(rèn)設(shè)置,這里可以先暫時(shí)忽略limitrange吧。

Guaranteed > Burstable > BestEffect

資源配額管理 Resource Quotas

一個(gè)k8s集群可能被多個(gè)租戶使用,如何分配不同租戶可以使用的資源呢? Resource Quotas就是來(lái)解決這個(gè)問(wèn)題的。
一般的,一個(gè)租戶占用一個(gè)命名空間,則可以在該命名空間下創(chuàng)建 Resource Quotas來(lái)進(jìn)行資源使用限制;
Resource Quotas可以限制命名空間中某種資源類型對(duì)象的總數(shù)上限,也可以限制命名空間中pod可使用的可計(jì)算資源(可計(jì)算資源:cpu、memory)的總上限;資源配額還支持作用域,對(duì)符合特定范圍的對(duì)象加以限制。
官網(wǎng):https://kubernetes.io/zh-cn/docs/concepts/policy/resource-quotas/

一個(gè)命名空間可以設(shè)定多個(gè)resourcequotas,resourcequotas在k8s中可以簡(jiǎn)寫(xiě)為quota。

#資源配額,對(duì)指定命名空間某種資源對(duì)象總數(shù)進(jìn)行限制
[root@master ~]# vim resource-count.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: resource-count
  namespace: limitrang-nginx				#quota在哪個(gè)命名空間就表示對(duì)該命名空間進(jìn)行限制
spec:
  hard:										#目前支持對(duì)下面這些資源對(duì)象進(jìn)行總數(shù)量限制
    configmaps: "50"                        #在該命名空間中允許存在的 ConfigMap 總數(shù)上限
    persistentvolumeclaims: "50"            #在該命名空間中允許存在的 PVC 的總數(shù)上限
    pods: "4"                               #在該命名空間中允許存在的非終止?fàn)顟B(tài)的 Pod 總數(shù)上限
    replicationcontrollers: "35"            #在該命名空間中允許存在的 ReplicationController 總數(shù)上限
    resourcequotas: "34"                    #在該命名空間中允許存在的 ResourceQuota 總數(shù)上限
    services: "68"                          #在該命名空間中允許存在的 Service 總數(shù)上限
    services.loadbalancers: "465"           #在該命名空間中允許存在的 LoadBalancer 類型的 Service 總數(shù)上限
    services.nodeports: "65"                #在該命名空間中允許存在的 NodePort 類型的 Service 總數(shù)上限
    secrets: "6"                            #在該命名空間中允許存在的 Secret 總數(shù)上限

#測(cè)試,在limitrang-nginx命名空間中擴(kuò)容副本數(shù),單由于quota限制了pod副本數(shù)最大只能是4個(gè),所以deployment擴(kuò)容并不會(huì)成功
#擴(kuò)容到10個(gè)副本
[root@master ~]# kubectl  scale  deployment -n limitrang-nginx  nginx  --replicas=10
[root@master ~]# kubectl  describe deployments.apps  nginx --namespace=limitrang-nginx  | grep Replicas
Replicas:               10 desired | 4 updated | 4 total | 4 available | 6 unavailable

#通過(guò)查看deployment對(duì)應(yīng)的rs,我們看到rs的報(bào)錯(cuò)信息,正是由于quota限制命名空間pod副本數(shù)最大只能是4個(gè)才導(dǎo)致報(bào)錯(cuò)擴(kuò)容不成功
[root@master ~]# kubectl -n limitrang-nginx  describe  rs nginx-6799fc88d8 | tail  -n 1
  Warning  FailedCreate      14m   replicaset-controller  Error creating: pods "nginx-6799fc88d8-tmjpt" 
  is forbidden: exceeded quota: resource-count, requested: pods=1, used: pods=4, limited: pods=4
[root@master ~]# 
#資源配額,對(duì)指定命名空間可計(jì)算資源資源總數(shù)進(jìn)行限制
[root@master ~]# vim compute-resources.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    requests.cpu: "100"				#所有非終止?fàn)顟B(tài)的 Pod,其 CPU 需求總量不能超過(guò)該值
    requests.memory: 100Gi			#所有非終止?fàn)顟B(tài)的 Pod,其內(nèi)存需求總量不能超過(guò)該值
    limits.cpu: "200"				#所有非終止?fàn)顟B(tài)的 Pod,其 CPU 限額總量不能超過(guò)該值
    limits.memory: 200Gi			#所有非終止?fàn)顟B(tài)的 Pod,其內(nèi)存限額總量不能超過(guò)該值
    requests.nvidia.com/gpu: 4		#所有非終止?fàn)顟B(tài)的 Pod,GPU需求總量不能超過(guò)該值
#   hugepages-<size>: xx			#對(duì)于所有非終止?fàn)顟B(tài)的 Pod,針對(duì)指定尺寸的巨頁(yè)請(qǐng)求總數(shù)不能超過(guò)此值
EOF

#例子不舉了

還可以對(duì)存儲(chǔ)資源配額:

requests.storage: 所有PVC存儲(chǔ)資源的需求總量不能超過(guò)該值
persistentvolumeclaims: 該命名空間中允許的PVC總數(shù)量
<storage-class-name>.storageclass.storage.k8s.io/requests.storage: 在所有與 <storage-class-name> 相關(guān)的持久卷申領(lǐng)中,存儲(chǔ)請(qǐng)求的總和不能超過(guò)該值
<storage-class-name>.storageclass.storage.k8s.io/persistentvolumeclaims: 在與 storage-class-name 相關(guān)的所有持久卷申領(lǐng)中,命名空間中可以存在的持久卷申領(lǐng)總數(shù)

配額作用域
資源配額可以指定作用域,對(duì)符合特定范圍的對(duì)象加以限制;
更詳細(xì)可以看官網(wǎng):https://kubernetes.io/zh-cn/docs/concepts/policy/resource-quotas/#quota-scopes

apiVersion: v1
  kind: ResourceQuota
  metadata:
    name: pods-low
  spec:
    hard:
      cpu: "5"
      memory: 10Gi
      pods: "10"
    scopeSelector:			#指定了作用域選擇器
      matchExpressions:
      - operator: In
        scopeName: PriorityClass
        values: ["low"]

總結(jié)

1、可計(jì)算資源

cpu、memory是k8s中最常見(jiàn)的可計(jì)算資源,cpu是可壓縮資源,cpu可被超量使用,memory是不可壓縮資源,超出內(nèi)存最大值將發(fā)生OOM異常;

2、cpu的單位

cpu的是通過(guò)cpu核數(shù)(cpus)來(lái)度量的,單位是m(milliunit),數(shù)量可以為整數(shù)或小數(shù),如0.1m、50m;單位m,因?yàn)楹x是milliunit,代表"千分
之一核心",譬如50m的含義是指50/1000核心,即5%。

3、memory的單位

Memory:內(nèi)存的計(jì)量單位是字節(jié)Byte,Byte是由8個(gè)位組成的一個(gè)單元,也就是1 Byte = 8 bit。pod的內(nèi)存requests或limits都是使用整數(shù)加上國(guó)際
單位制來(lái)表示內(nèi)存值,國(guó)際單位制可以是
十進(jìn)制的E、P、T、G、M、K、m或二進(jìn)制的Ei、Pi、Gi、Mi、Ki。
常見(jiàn)的KiB和MiB是以二進(jìn)制表示的字節(jié)單位,KB和MB是以十進(jìn)制表示的字節(jié)單位。
十進(jìn)制:1 KB = 1000 Byte = 8000 bit
二進(jìn)制:1 KiB = 2的10次方 Byte = 1024 Byte = 8192 bit

Mi:1Mi = 1024乘1024,而平時(shí)使用的單為M是1M = 1000乘1000

memory:內(nèi)存大小,可以使用Gi、Mi、G、M等單位
cpu的單位m:
注意:Gi和G,Mi和M優(yōu)點(diǎn)區(qū)別,官網(wǎng)解釋:Mi表示(1Mi=1024×1024),M表示(1M=1000×1000)(其它單位類推, 如Ki/K Gi/G)

4、pod定義requests、limits來(lái)進(jìn)行容器的cpu、memory資源請(qǐng)求和限制

pod的request等于pod中所有容器的request相加之和。
pod的limit等于pod中所有容器的limits相加之和。

pod可以定義資源配額的相關(guān)參數(shù):
spec.container[].resources.requests.cpu:容器初始要求的CPU數(shù)量
spec.container[].resources.limits.cpu:容器所能使用的最大CPU數(shù)量
spec.container[].resources.requests.memory:容器初始要求的內(nèi)存數(shù)量
spec.container[].resources.limits.memory:容器所能使用的最大內(nèi)存數(shù)量

默認(rèn)情況下,pod中只寫(xiě)requests(cpu和memory寫(xiě)其中一個(gè)或兩個(gè)都寫(xiě))不寫(xiě)limits,則默認(rèn)沒(méi)有最大資源限制;
pod中只寫(xiě)limits.cpu、limits.memory,不寫(xiě)requests.cpu、requests.memory,默認(rèn)的requests的cpu、memory其值等于對(duì)應(yīng)的limits的cpu、
memory值;
pod中只寫(xiě)limits的cpu或memory其中的一個(gè),則requests對(duì)應(yīng)的也等價(jià)于limits的對(duì)應(yīng)的一個(gè)值。如只寫(xiě)limits.cpu,則requests.cpu值
=limits.cpu值,limits.memory沒(méi)寫(xiě)則requests.memory也沒(méi)有值。

5、LimitRange限制命名空間下的pod的資源配額

limitrange屬于命名空間,當(dāng)在一個(gè)命名空間中創(chuàng)建了一個(gè)limitrange對(duì)象,將會(huì)在該命名空間中實(shí)施 LimitRange 限制。
LimitRange機(jī)制的原理:在某個(gè)命名空間下,創(chuàng)建一個(gè)limitrang資源對(duì)象,表示對(duì)該命名空間下創(chuàng)建的pod和容器的requests和limits配置進(jìn)行限
制,比如pod和容器的最大、最小、默認(rèn)requests和limits值。
spec:
  limits:					#定義了容器的request和limit的最大最小值,以及默認(rèn)request、limit值
  - type: Pod				#類型是pod,表示下面這段整對(duì)整個(gè)pod而言
    max:					#pod的最大值
      cpu: "4"				#pod的最大cpu
      memory: 2Gi			#pod的最大內(nèi)存
    min:					#pod的最小值
      cpu: "200m"  			#pod的最小cpu
      memory: 6Mi			#pod的最小內(nèi)存
    maxLimitRequestRatio:	#這個(gè)好像是pod的limits和requests的最大比例
      cpu: 3
      memory: 2
  - type: Container			#類型是容器,表示下面這段整對(duì)pod里面的每一個(gè)容器而言
    default:	#容器的默認(rèn)限制值,注意這是默認(rèn)limits值,當(dāng)容器沒(méi)有給定limits時(shí)將啟動(dòng)該值(下面說(shuō)的default limit就是這個(gè)參數(shù))
      cpu: 300m				#容器的默認(rèn)limits.cpu
      memory: 200Mi			#容器的默認(rèn)limits.memory
    defaultRequest:			#容器的默認(rèn)請(qǐng)求值,當(dāng)容器沒(méi)有設(shè)置request時(shí)使用
      cpu: 100m				#容器的默認(rèn)requests.cpu
      memory: 100Mi			#容器的默認(rèn)requests.memory
    max:					#容器的最大值
      cpu: 2				#容器的最大cpu,即limits.cpu
      memory: 1Gi			#容器的最大memory,即limits.memory
    min:					#容器的最小值
      cpu: 100m				#容器的最小cpu,即requests.cpu
      memory: 3Mi			#容器的最小memory,即requests.memory
    maxLimitRequestRatio:	#這個(gè)好像是容器的limits和requests的最大比例
      cpu: 5
      memory: 4

6、pod的Qos服務(wù)質(zhì)量等級(jí)

在k8s系統(tǒng)中,使用Qos服務(wù)質(zhì)量等級(jí)來(lái)衡量一個(gè)pod的重要程度,當(dāng)k8s集群資源不足時(shí),如內(nèi)存不足,那么Qos服務(wù)質(zhì)量等級(jí)低的pod將會(huì)被優(yōu)先"殺
掉"以是否系統(tǒng)資源壓力, k8s將pod劃分為3個(gè)QoS等級(jí),如下:

Guaranteed:完全可靠的,是指pod的所有容器都定義了requests和limits,并且每一個(gè)容器的requests和limits值都對(duì)應(yīng)相等且不為0,我們指定,
如果定義了limits沒(méi)有定義requests,那么requests值就等于limits,這種pod的QoS等級(jí)就是Guaranteed。

Burstable:彈性波動(dòng),較可靠的,當(dāng)pod的QoS等級(jí)既不是Guaranteed又不是BestEffect,那就是Burstable;
這分為2種情況:pod中一部分容器定義了requests和limits且requests值小于limits值;pod中一部分容器都未定義requests和limits。注意:這里
說(shuō)的是沒(méi)有定義requests和limits,但是不代表這里limitrange不會(huì)默認(rèn)設(shè)置,這里可以先暫時(shí)忽略limitrange吧。

BestEffect:盡力而為,不太可靠的,是指pod中所有容器都沒(méi)有定義requests和limits,那么這種pod的QoS等級(jí)就是BestEffect。注意:這里說(shuō)的
是沒(méi)有定義requests和limits,但是不代表這里limitrange不會(huì)默認(rèn)設(shè)置,這里可以先暫時(shí)忽略limitrange吧。

Guaranteed > Burstable > BestEffect

7、資源配額管理 Resource Quotas

k8s集群是一個(gè)多租戶的系統(tǒng),可能有多個(gè)命名空間,一般的每個(gè)租戶占用一個(gè)命名空間進(jìn)行自己的應(yīng)用部署,那么如何分配不同租戶可以使用的資源呢? Resource Quotas就是來(lái)解決這個(gè)問(wèn)題的。
一般的,一個(gè)租戶占用一個(gè)命名空間,則可以在該命名空間下創(chuàng)建 Resource Quotas來(lái)進(jìn)行資源使用限制;
Resource Quotas可以限制命名空間中某種資源類型對(duì)象的總數(shù)上限,也可以限制命名空間中pod可使用的可計(jì)算資源(可計(jì)算資源:cpu、memory)的總上限;資源配額還支持作用域,對(duì)符合特定范圍的對(duì)象加以限制。

8、limitrange和resourcequotas的區(qū)別文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-427058.html

limitrange主要是對(duì)一個(gè)命名空間下創(chuàng)建的pod和容器的requests和limits配置進(jìn)行限制,比如pod和容器的最大、最小、默認(rèn)requests和limits值等,換句話說(shuō),limitrange針對(duì)的是單個(gè)pod的可計(jì)算資源;
resourcequotas是對(duì)命名空間中某種資源對(duì)象總數(shù)進(jìn)行限制,如A命名空間能創(chuàng)建多少個(gè)pod,能創(chuàng)建多少個(gè)configmap等;
resourcequotas還可以對(duì)指定命名空間的可計(jì)算資源總數(shù)進(jìn)行限制,如限制A命名空間中全部非終止?fàn)顟B(tài)的pod的CPU和memory不能超過(guò)多少;
resourcequotas還可以對(duì)指定命名空間的存儲(chǔ)資源總數(shù)進(jìn)行限制,如限制A命名空間中的pvc數(shù)量不能超過(guò)100個(gè)等。

到了這里,關(guān)于pod的requests、limits解讀、LimitRange資源配額、Qos服務(wù)質(zhì)量等級(jí)、資源配額管理 Resource Quotas的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s進(jìn)階3——資源配額、資源限制

    k8s進(jìn)階3——資源配額、資源限制

    為什么會(huì)有資源配額管理? 可以提高集群穩(wěn)定性,確保指定的資源對(duì)象在任何時(shí)候都不會(huì)超量占用系統(tǒng)物理資源,避免業(yè)務(wù)進(jìn)程在設(shè)計(jì)或?qū)崿F(xiàn)上的缺陷導(dǎo)致整個(gè)系統(tǒng)運(yùn)行紊亂甚至意外宕機(jī)。 資源配額管理維度: 容器級(jí)別,定義每個(gè)Pod上資源配額相關(guān)的參數(shù),比如CPU/Memory、

    2024年02月10日
    瀏覽(27)
  • k8s資源配額限制

    為什么會(huì)有資源配額管理? 資源配額管理維度解釋? 資源配額參數(shù)有什么? 計(jì)算CPU CPU的Requests和Limits是通過(guò)CPU數(shù)(cpus)來(lái)度量的。 CPU的資源值是絕對(duì)值,而不是相對(duì)值,比如0.1CPU在單核或多核機(jī)器上是一樣的,都嚴(yán)格等于0.1 CPU core。 計(jì)算Memory 內(nèi)存的Requests和Limits計(jì)量單位

    2024年02月13日
    瀏覽(25)
  • K8S(五)—命名空間與資源配額

    K8S(五)—命名空間與資源配額

    Kubernetes(K8s)的命名空間(Namespace)是用于在集群中對(duì)資源進(jìn)行邏輯隔離和分類的一種機(jī)制。它可以將集群內(nèi)的資源劃分為不同的組,并且每個(gè)命名空間內(nèi)的資源都有一個(gè)唯一的名稱。命名空間可以幫助團(tuán)隊(duì)將不同的項(xiàng)目、環(huán)境或應(yīng)用程序從彼此中隔離開(kāi)來(lái),以及更好地管理

    2024年02月04日
    瀏覽(67)
  • CKA 10_Kubernetes工作負(fù)載與調(diào)度 資源調(diào)度 資源限制 LimitRanger 資源配額 ResourceQuota

    官方文檔: 概念 | 策略 | 限制范圍 官方文檔: 概念 | 策略 | 資源配額 默認(rèn)情況下, Kubernetes 集群上的容器運(yùn)行使用的計(jì)算資源沒(méi)有限制。 使用資源配額,集群管理員可以以名字空間為單位,限制其資源的使用與創(chuàng)建。 在命名空間中,一個(gè) Pod 或 Container 最多能夠使用命名空

    2024年02月08日
    瀏覽(19)
  • Kubernetes 啟動(dòng)Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    Kubernetes 啟動(dòng)Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    目錄 Pod 參考文檔:Pod | Kubernetes Pod配置文件:simple-pod.yaml 對(duì)master進(jìn)行如下操作 Pod的狀態(tài)有: 參考文檔:(70條消息) Pod生命周期中的狀態(tài)解釋_pod狀態(tài)_鬧玩兒扣眼珠子的博客-CSDN博客 進(jìn)入Pod內(nèi)的nginx容器: 當(dāng)我們創(chuàng)建一個(gè)Pod,其中的步驟是什么?(啟動(dòng)Pob的流程) 大概步驟:

    2024年02月13日
    瀏覽(100)
  • 【AXI】解讀AXI協(xié)議的額外信號(hào)(QOS信號(hào),REGION信號(hào),與USER信號(hào))

    【AXI】解讀AXI協(xié)議的額外信號(hào)(QOS信號(hào),REGION信號(hào),與USER信號(hào))

    芯片設(shè)計(jì)驗(yàn)證社區(qū)·芯片愛(ài)好者聚集地·硬件相關(guān)討論社區(qū)·數(shù)字verifier星球 四社區(qū) 聯(lián)合力薦 !近500篇 數(shù)字IC精品文章收錄 ! 【數(shù)字IC精品文章收錄】學(xué)習(xí)路線·基礎(chǔ)知識(shí)·總線·腳本語(yǔ)言·芯片求職·EDA工具·低功耗設(shè)計(jì)Verilog·STA·設(shè)計(jì)·驗(yàn)證·FPGA·架構(gòu)·AMBA·書(shū)籍 AXI協(xié)議 相較于

    2024年01月18日
    瀏覽(120)
  • 在Pod設(shè)置limit 的情況下,如何讓JDK容器適配

    目錄 1. 背景 2. 問(wèn)題 3. 解決方案 3.1. 注意 4. 參考 ????????在使用Kubernetes部署業(yè)務(wù)應(yīng)用的實(shí)際操作中,由于k8s集群的資源是有限的,為了防止部分應(yīng)用無(wú)節(jié)制地使用資源,我們會(huì)在Deployment.yaml文件中設(shè)置request,limit的資源限制大小。 ????????在 Kubernetes 中,你可以通過(guò)設(shè)

    2024年04月15日
    瀏覽(23)
  • 【VLDB 2023】基于預(yù)測(cè)的云資源彈性伸縮框架MagicScaler,實(shí)現(xiàn)“高QoS,低成本”雙豐收

    【VLDB 2023】基于預(yù)測(cè)的云資源彈性伸縮框架MagicScaler,實(shí)現(xiàn)“高QoS,低成本”雙豐收

    開(kāi)篇 近日,由阿里云計(jì)算平臺(tái)大數(shù)據(jù)基礎(chǔ)工程技術(shù)團(tuán)隊(duì)主導(dǎo),與計(jì)算平臺(tái)MaxCompute團(tuán)隊(duì)、華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院、達(dá)摩院合作,基于預(yù)測(cè)的云計(jì)算平臺(tái)資源彈性伸縮框架論文《MagicScaler: Uncertainty-aware, Predictive Autoscaling 》被數(shù)據(jù)庫(kù)領(lǐng)域頂會(huì)VLDB 2023接收。 MagicScaler論文

    2024年02月11日
    瀏覽(13)
  • Kubernetes中設(shè)置 CPU 的 requests 和 limits詳解

    Kubernetes中設(shè)置 CPU 的 requests 和 limits詳解

    在 Kubernetes 中,我應(yīng)該如何設(shè)置 CPU 的 requests 和 limits? 熱門答案包括: 始終使用 limits ! 永遠(yuǎn)不要使用 limits,只使用 requests ! 都不用;可以嗎? 在 Kubernetes 中,您有兩種方法來(lái)指定一個(gè) pod 可以使用多少 CPU: Requests ?通常用于確定平均消耗。 Limits ?設(shè)置允許的最大資源數(shù)。

    2024年02月16日
    瀏覽(14)
  • 【Linux】進(jìn)程資源(resource limit)

    getrusage ulimit getrlimit、setrlimit 各種 resource limit的細(xì)節(jié) getrusage()系統(tǒng)調(diào)用檢索調(diào)用這個(gè)系統(tǒng)調(diào)用的進(jìn)程或它的所有子進(jìn)程所使用的各種系統(tǒng)資源的統(tǒng)計(jì)信息。 其中第一個(gè)參數(shù)who,指定了要獲取哪個(gè)進(jìn)程的資源使用信息。 可以傳的值有以

    2024年02月03日
    瀏覽(16)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包