kubernetes之配置namespace的默認CPU請求和限制


簡介

主要講述如何給一個namespace中的容器配置默認的CPU請求數和CPU限制數。如果該命名空間中的容器創建時沒有指定自定義的CPU策略,則會使用默認的CPU策略。

備注:此文檔參考官方文檔,並加以自己的理解。如有誤導性的內容,請批評指正。

指定namespace中創建的pod配置默認的CPU請求大小和內存最大限額

創建一個namespace

# kubectl create namespace default-cpu-example

default-cpu-example命名空間中創建一個pod的LimitRange對象,設置默認CPU最大限制數為1,CPU默認請求數為0.5。文件名:cpu-defaults.yaml

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-limit-range
spec:
  limits:
  - default:
      cpu: 1
    defaultRequest:
      cpu: 0.5
    type: Container

創建資源對象

# kubectl apply -f /root/k8s-example/namespace/cpu-defaults.yaml --namespace=default-cpu-example

如果容器創建於default-cpu-example的namespace中,CPU請求數默認為0.5,最大限制數為1

例如,創建一個包含一個容器的pod,文件名為:cpu-defaults-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: default-cpu-demo
spec:
  containers:
  - name: default-cpu-demo-ctr
    image: nginx

創建pod

# kubectl apply -f /root/k8s-example/namespace/cpu-defaults-pod.yaml --namespace=default-cpu-example

查看pod資源詳情:

# kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example

從下可以看到,容器default-cpu-demo中的CPU資源均為默認值

containers:
- image: nginx
  imagePullPolicy: Always
  name: default-cpu-demo-ctr
  resources:
    limits:
      cpu: "1"
    requests:
      cpu: 500m

定義容器的CPU限制數且限制數大於默認容器限制數,不定義CPU請求數

創建一個pod,自定義CPU最大限制數為1,CPU請求數不設置。文件名:cpu-defaults-pod-2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: default-cpu-demo-2
spec:
  containers:
  - name: default-cpu-demo-2-ctr
    image: nginx
    resources:
      limits:
        cpu: "1"
# kubectl apply -f /root/k8s-example/namespace/cpu-defaults-pod-2.yaml --namespace=default-cpu-example

查看該pod的資源信息:

# kubectl get pod default-cpu-demo-2 --output=yaml --namespace=default-cpu-example

在容器default-cpu-demo-2中,定義的CPU最大限制數是1,剛好等於默認的最大限制數1。從結果中看出,CPU的請求值是1,而不是默認的0.5

resources:
  limits:
    cpu: "1"
  requests:
    cpu: "1"

定義容器請求數,且容器請求數小於默認容器請求數,不定義限制數

創建一個包含一個容器的Pod,文件名:cpu-defaults-pod-3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: default-cpu-demo-3
spec:
  containers:
  - name: default-cpu-demo-3-ctr
    image: nginx
    resources:
      requests:
        cpu: "0.75"
# kubectl apply -f /root/k8s-example/namespace/cpu-defaults-pod-3.yaml --namespace=default-cpu-example

在容器default-cpu-demo-3中,定義了CPU的請求是是0.75,大於默認的CPU請求數0.5。從結果看,容器default-cpu-demo-3中的CPU請求數等於自定義值,容器的限制數不變,為默認值1

resources:
  limits:
    cpu: "1"
  requests:
    cpu: 750m

實驗完畢,刪除namespace

# kubectl delete namespace default-cpu-example

總結

1、指定命名空間可以設置容器默認的CPU資源請求數(CPU requests)和CPU最大限制數(CPUlimits)

2、容器可以自定義自身的CPU資源請求數和CPU最大限制數:

  • 如果容器定義的CPU最大限制數大於或等於默認的CPU最大限制數,則容器的CPU最大限制數為自定義的值,此時,容器CPU資源請求數也將等於容器自定義的CPU最大限制數
  • 如果定義的CPU請求數大於默認的CPU請求數且小於默認最大CPU限制數,則容器的CPU請求數等於自定義的CPU請求數;如果定義的CPU請求數小於默認的CPU請求數,則容器的CPU請求數等於自定義的CPU請求數。總的來說,只要定義的容器CPU請求數小於默認最大CPU限制數,則自定義CPU請求數優先級更高,此時CPU請求數等於自定義的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM