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