您好,登錄后才能下訂單哦!
Kubernetes對資源的限制實際上是通過cgroup來控制的,cgroup是容器的一組用來控制內核如何運行進程的相關屬性集合,針對內存、CPU各種設備都有對應的cgroup。
默認情況下,Pod運行沒有CPU和內存的限制,這就意味著系統中的任何pod將能夠像執行該pod所在的節點一樣,消耗足夠多的CPU和內存,一般會針對某些應用的Pod資源進行資源限制,這個資源限制是通過resources的limits來實現的。
注:以下只是在yaml文件中進行資源限制的一個片段,并不是完整的yaml文件!
[root@master limit]# vim cgroup-pod.yaml
spec:
containers:
- name: xxx
image: xxx
ports:
- protocol: TCP
containerPort: 80
resources:
limits: #硬限制
cpu: "4"
memory: 2Gi
requests: #運行pod時請求的資源數量
cpu: 260m
memory: 260Mi
requests: 要分配的資源,limits為最高請求的資源值。可以簡單的理解為初始值和最大值。
[root@master limit]# vim compute-resource.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
pods: "20" #所有pod數量不可以超過20個
requests.cpu: "20" #初始請求的CPU不可以超過20m
requests.memory: 100Gi #初始請求的內存不可以超過100G
limits.cpu: "40" #CPU的硬限制
limits.memory: 200Gi #內存的硬限制
[root@master limit]# vim object-counts.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: object-counts
spec:
hard:
configmaps: "10" #最多可以創建10個configmap
persistentvolumeclaims: "4" #最多可以創建4個PVC
replicationcontrollers: "20" #最多可以創建20個RC資源對象
secrets: "10" #最多可以創建10個secrets
service.loadbalancers: "2" #最多可以創建2個svc
[root@master limit]# vim limitRange.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 50Gi #硬限制
cpu: 5 #硬限制
defaultRequest: #初始請求
memory: 1Gi
cpu: 1
type: Container #限制對象為容器
default 即 limit的值,defaultRequest 即 request的值。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。