Kubernetes 的名字空間并不是一個實體對象,只是一個邏輯上的概念。它可以把集群切分成一個個彼此獨立的區(qū)域,然后我們把對象放到這些區(qū)域里,就實現(xiàn)了類似容器技術(shù)里 namespace 的隔離效果,應(yīng)用只能在自己的名字空間里分配資源和運行,不會干擾到其他名字空間里的應(yīng)用。
?Kubernetes面對大規(guī)模集群、海量節(jié)點時的一種現(xiàn)實考慮。因為集群很大、計算資源充足,會有非常多的用戶在 Kubernetes 里創(chuàng)建各式各樣的應(yīng)用,可能會有百萬數(shù)量級別的 Pod,這就使得資源爭搶和命名沖突的概率大大增加了,情形和單機 Linux 系統(tǒng)里是非常相似的。
把集群給適當(dāng)?shù)亍熬植炕?,為每一類用戶?chuàng)建出只屬于它自己的“工作空間”。
Kubernetes 初始化集群的時候也會預(yù)設(shè) 4 個名字空間:default、kube-system、kube-public、kube-node-lease。我們常用的是前兩個,default 是用戶對象默認(rèn)的名字空間,kube-system 是系統(tǒng)組件所在的名字空間,相信你對它們已經(jīng)很熟悉了。
名字空間的資源配額需要使用一個專門的 API 對象,叫做 ResourceQuota,簡稱是 quota,我們可以使用命令 kubectl create 創(chuàng)建一個它的樣板文件:
export out="--dry-run=client -o yaml"
kubectl create quota dev-qt $out
因為資源配額對象必須依附在某個名字空間上,所以在它的 metadata 字段里必須明確寫出 namespace(否則就會應(yīng)用到 default 名字空間)。
在 ResourceQuota 里可以設(shè)置各類資源配額,字段非常多。
- CPU 和內(nèi)存配額,使用 request.*、limits.*,這是和容器資源限制是一樣的。
- 存儲容量配額,使 requests.storage 限制的是 PVC 的存儲總量,也可以用 persistentvolumeclaims 限制 PVC 的個數(shù)。
- 核心對象配額,使用對象的名字(英語復(fù)數(shù)形式),比如 pods、configmaps、secrets、services。
- 其他 API 對象配額,使用 count/name.group 的形式,比如 count/jobs.batch、count/deployments.apps。
很小但很有用的輔助對象了—— LimitRange,簡稱是 limits,它能為 API 對象添加默認(rèn)的資源配額限制。
- spec.limits 是它的核心屬性,描述了默認(rèn)的資源限制。
- type 是要限制的對象類型,可以是 Container、Pod、PersistentVolumeClaim。
- default 是默認(rèn)的資源上限,對應(yīng)容器里的 resources.limits,只適用于 Container。
- defaultRequest 默認(rèn)申請的資源,對應(yīng)容器里的 resources.requests,同樣也只適用于 Container。
- max、min 是對象能使用的資源的最大最小值。
1、名字空間是一個邏輯概念,沒有實體,它的目標(biāo)是為資源和對象劃分出一個邏輯邊界,避免沖突。
2、ResourceQuota 對象可以為名字空間添加資源配額,限制全局的 CPU、內(nèi)存和 API 對象數(shù)量。
3、LimitRange 對象可以為容器或者 Pod 添加默認(rèn)的資源配額,簡化對象的創(chuàng)建工作。文章來源:http://www.zghlxwxcb.cn/news/detail-604825.html
此文章為7月Day23學(xué)習(xí)筆記,內(nèi)容來源于極客時間《Kubernetes入門實戰(zhàn)課》,推薦該課程。文章來源地址http://www.zghlxwxcb.cn/news/detail-604825.html
到了這里,關(guān)于K8S集群管理:用名字空間分隔系統(tǒng)資源的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!