摘要:整個名稱空間下的資源配額利用搭建部署服務(wù),并在正式的場合使用時,幾乎是肯定要引入一個用戶概念的。如下創(chuàng)建一個創(chuàng)建了后我們每次創(chuàng)建一個也即都要指定它的資源配額,否則即便創(chuàng)建成功,容器也不能起來。
限制每個實例
在創(chuàng)建一個replicationcontroller(以下簡稱rc)時,我們可以在創(chuàng)建文件中指定pod的資源配額,如下面的json: { "kind": "ReplicationController", "apiVersion": "v1", "metadata": { "name": "eatcpu", "creationTimestamp": null }, "spec": { "replicas": 2, "selector": { "name": "huang" }, "template": { "metadata": { "name": "cpu", "labels": { "name": "huang" } }, "spec": { "containers": [ { "name": "eatcpucontainer", "image": "registry.hub.abc.com.cn/eatcpu:v1.1", "resources": { "request": { "cpu": "1.0", "memory": "1.0Gi" }, "limits": { "cpu": "1.2", "memory": "1.1Gi" } }, "command": [ "/deadloop", "-max_procs=4" ] } ] } } }, "status": { "replicas": 0 } }
當(dāng)然實際上json不用寫這么復(fù)雜,關(guān)鍵是:
"resources": { "limits": { "cpu": "1.0", "memory": "1.0Gi" }, "limits": { "cpu": "1.2", "memory": "1.1Gi" } },
這句的意思是給這個rc的每個pod分配cpu額度的最低要求是1.0(即1個CPU核心),內(nèi)存的最低要求是1.0Gi,對CPU的限制是不能超過1.2個核心,內(nèi)存則是1.1Gi。
當(dāng)我們執(zhí)行create命令的時候,若scheduler組件檢查各個nodes發(fā)現(xiàn)沒有滿足1個空閑cpu核心和1Gi空閑內(nèi)存的機(jī)器,那么這個pod就不能被創(chuàng)建,若rc要創(chuàng)建3個pod,整個集群只能滿足創(chuàng)建2個,那么第三個pod會被放入隊列中,等待集群有足夠資源時再創(chuàng)建出來。
另外,若pod在運行過程中持續(xù)地消耗內(nèi)存,超過了1.1G,pod會被銷毀并重啟,但當(dāng)cpu消耗超過配額時,k8s不會做出相應(yīng)的措施。
k8s1.3左右的版本增加了horizontalAutoScale特性,當(dāng)CPU在一定時間內(nèi)高于一個閾值時,會出發(fā)控制器對其進(jìn)行水平擴(kuò)容。
整個名稱空間下的資源配額利用k8s搭建部署服務(wù),并在正式的場合使用時,幾乎是肯定要引入一個“用戶”概念的??梢允褂胣amespace來實現(xiàn)用戶的隔離。并使用quota為每個用戶指定配額。
注:這里差不多是翻譯github上原文,引用的幾個yaml也出自于彼處,有興趣的可以直接去看官文。
k8s下默認(rèn)的namespace是default,我們可以手動添加一個namespace:
$ kubectl create -f namespace.yaml $ kubectl get namespaces NAME LABELS STATUS defaultActive quota-example Active
接著我們創(chuàng)建一個quota,quota可以指定某個namespace有多少的資源配額,包括cpu,內(nèi)存,persistentvolumeclaims(據(jù)說是內(nèi)存),pod數(shù)量,rc數(shù)量等等。
如下創(chuàng)建一個quota:
$ kubectl create -f quota.yaml --namespace=quota-example $ kubectl describe quota quota --namespace=quota-example Name: quota Namespace: quota-example Resource Used Hard -------- ---- ---- cpu 0 20 memory 0 1Gi persistentvolumeclaims 0 10 pods 0 10 replicationcontrollers 0 20 resourcequotas 1 1 secrets 1 10 services 0 5
創(chuàng)建了quota后我們每次創(chuàng)建一個rc(也即pods)都要指定它的資源配額,否則即便創(chuàng)建成功,容器也不能run起來。
指定配額的方法見標(biāo)題1,但是那是對一個集群中的pod統(tǒng)一制定,我們也可以統(tǒng)一指定該namespace下的所有pods的配額,即創(chuàng)建一個limits:
$ kubectl create -f limits.yaml --namespace=quota-example limitranges/limits $ kubectl describe limits limits --namespace=quota-example Name: limits Namespace: quota-example Type Resource Min Max Default ---- -------- --- --- --- Container memory - - 512Mi Container cpu - - 100m
現(xiàn)在我們可以正常地run一個rc了,并且,在容器成功跑起來后,我們可以統(tǒng)一地看到該namespace下的資源使用情況:
kubectl describe quota quota --namespace=quota-example Name: quota Namespace: default Resource Used Hard -------- ---- ---- cpu 100m 20 memory 536870912 1Gi persistentvolumeclaims 0 10 pods 1 10 replicationcontrollers 1 20 resourcequotas 1 1 secrets 1 10 services 0 5
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/32428.html
摘要:將用戶命令通過接口傳送給,從而進(jìn)行資源的增刪改等操作。要使用編寫應(yīng)用程序,當(dāng)下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S...
摘要:將用戶命令通過接口傳送給,從而進(jìn)行資源的增刪改等操作。要使用編寫應(yīng)用程序,當(dāng)下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S...
摘要:但考慮到該用戶在跨集群模式下的困擾,開始策劃將托管云物理機(jī)納入現(xiàn)有集群統(tǒng)一管理的方案,即在混合云架構(gòu)下僅需部署管理一套集群。托管云物理機(jī)納入UK8S集群統(tǒng)一管理后,可實現(xiàn)托管云物理機(jī)保障平峰時業(yè)務(wù)正常運行,高峰時期利用UK8S快速擴(kuò)容公有云資源的理想應(yīng)用場景,繼而提升混合云的可用性。 ——海豹他趣技術(shù)負(fù)責(zé)人 張嵩 混合云的業(yè)務(wù)模式 廈門海豹他趣信息技術(shù)股份有限公司于2012年4...
摘要:簡稱,是在年發(fā)布的一個開源項目。網(wǎng)絡(luò)要能夠通信,必須部署網(wǎng)絡(luò),是其中一個可選方案。最常使用,可以管理多個副本,并確保按照期望的狀態(tài)運行,底層調(diào)用。用于每個最多只運行一個副本的場景。 Kubernetes 簡稱 k8s,是 google 在 2014 年發(fā)布的一個開源項目。 Kubernetes 解決了哪些問題? 真實的生產(chǎn)環(huán)境應(yīng)用會包含多個容器,而這些容器還很可能會跨越多個服務(wù)器主機(jī)部...
摘要:如版本之前版本到版本之間版本之后一各種的含義該軟件可能包含錯誤。啟用一個功能可能會導(dǎo)致隨時可能會丟棄對該功能的支持,恕不另行通知軟件經(jīng)過很好的測試。啟用功能被認(rèn)為是安全的。 本篇文章來自Terraform與Kubernetes中關(guān)于Deployment apps/v1的吐槽 Kubernetes的官方文檔中并沒有對apiVersion的詳細(xì)解釋,而且因為K8S本身版本也在快速迭代,有些...
摘要:看過的應(yīng)該都知道項目中有大量代碼工具生成的代碼。執(zhí)行即腳本將自動生成下面的文件和路徑腳本運行后大體會建立如下的包管理結(jié)構(gòu)是不是很簡單代碼是被完全生成的,就像包含我們的語言類型的文件下面的文件一樣然后你就可以基于生成的代碼寫自己的了。 CRD簡介和使用姿勢 CustomResourceDefinition(CRD)是 v1.7 + 新增的無需改變代碼就可以擴(kuò)展 Kubernetes AP...
閱讀 2971·2023-04-26 02:00
閱讀 2926·2019-08-30 15:54
閱讀 1039·2019-08-30 11:15
閱讀 1610·2019-08-29 15:31
閱讀 1020·2019-08-29 14:12
閱讀 600·2019-08-29 13:08
閱讀 935·2019-08-27 10:51
閱讀 2808·2019-08-26 12:17