真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Kubernetes資源配額怎么用

這篇文章給大家分享的是有關(guān)Kubernetes資源配額怎么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、寬城網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

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

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

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

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

什么是資源配額

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

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

  • 吊艙Pod

  • 服務(wù)Service

  • 機密信息Secret

  • 持久卷斷言Persistent Volume Claim(PVC)

  • 配置映射ConfigMap

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

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

Kubernetes資源配額怎么用

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

準(zhǔn)備環(huán)境

首先你需要一個 Kubernetes 環(huán)境。以下是我使用 Kubernetes 環(huán)境:

  • Minikube v1.14.2

  • Fedora 33 操作系統(tǒng)

  • 互聯(lián)網(wǎng)接入

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

設(shè)置資源配額

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

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

首先我們創(chuàng)建一個命名空間,在其中設(shè)置 CPU 配額:

$ kubectl create namespace quota-test namespace/quota-test created

準(zhǔn)備 cpu-quota.yaml 文件,內(nèi)容如下:

apiVersion: v1 kind: ResourceQuota metadata:   name: test-cpu-quota spec:   hard:     requests.cpu: "100m"       limits.cpu: "200m"

應(yīng)用 CPU 配額到 Kubernetes 集群:

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

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

$ kubectl describe resourcequota/test-cpu-quota --namespace quota-test Name:         test-cpu-quota Namespace:    quota-test Resource      Used  Hard --------      ----  ---- limits.cpu    0     200m requests.cpu  0     100m

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

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

  • PodA:第一個被實例化,使用 50% 可用 CPU 資源

  • PodB:第二個被實例化,使用其余 50% 可用 CPU 資源

  • PodC:沒有可用 CPU 資源,因此不會被部署

部署吊艙

PodA:

$ kubectl create -n quota-test -f - << EOF apiVersion: v1 kind: Pod metadata:   name: poda spec:   containers:   - name: quota-test     image: busybox     imagePullPolicy: IfNotPresent     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000']     resources:       requests:         cpu: "50m"       limits:         cpu: "100m"   restartPolicy: Never EOF

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

$ kubectl describe resourcequota/test-cpu-quota --namespace quota-test Name:         test-cpu-quota Namespace:    quota-test Resource      Used  Hard --------      ----  ---- limits.cpu    100m  200m requests.cpu  50m   100m

PodB:

$ kubectl create -n quota-test -f - << EOF apiVersion: v1 kind: Pod metadata:   name: podb spec:   containers:   - name: quota-test     image: busybox     imagePullPolicy: IfNotPresent     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000']     resources:       requests:         cpu: "50m"       limits:         cpu: "100m"   restartPolicy: Never EOF

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

$ kubectl describe resourcequota/test-cpu-quota --namespace quota-test Name:         test-cpu-quota Namespace:    quota-test Resource      Used  Hard --------      ----  ---- limits.cpu    200m  200m requests.cpu  100m  100m

PodC:

試著創(chuàng)建 PodC,此時 CPU 配額已經(jīng)被 PodA 和 PodB 用盡:

$ kubectl create -n quota-test -f - << EOF apiVersion: v1 kind: Pod metadata:   name: podc spec:   containers:   - name: quota-test     image: busybox     imagePullPolicy: IfNotPresent     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000']     resources:       requests:         cpu: "5m"       limits:         cpu: "10m"   restartPolicy: Never EOF

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

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

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

清理

刪除剛才創(chuàng)建的命名空間 quota-test:

$ kubectl delete -n quota-test

規(guī)劃資源配額

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

你應(yīng)該十分謹(jǐn)慎地控制計算資源的資源配額,特別是關(guān)鍵業(yè)務(wù)的生產(chǎn)應(yīng)用環(huán)境。

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

感謝各位的閱讀!關(guān)于“Kubernetes資源配額怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


標(biāo)題名稱:Kubernetes資源配額怎么用
文章路徑:http://weahome.cn/article/jshihi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部