1. 程式人生 > >kubernetes限制pod的cpu和記憶體

kubernetes限制pod的cpu和記憶體

1、在建立容器的配置檔案中指定

spec:
  containers:
  - image: gcr.io/google_containers/serve_hostname
    imagePullPolicy: Always
    name: kubernetes-serve-hostname
    resources:
      limits:
        cpu: "1"             #限制pod申請最大的cpu數量為1個cpu
        memory: 512Mi        #申請記憶體最大值
      requests:
        cpu: "0.5"           #pod申請的cpu數量為0.5個cpu
        memory: 400Mi        #申請記憶體的最小值

2、引數解釋

requests
      requests用於schedule階段,在排程pod保證所有pod的requests總和小於node能提供的計算能力
	  requests.cpu被轉成docker的--cpu-shares引數,與cgroup cpu.shares功能相同
	  設定容器的cpu的相對權重
	  該引數在CPU資源不足時生效,根據容器requests.cpu的比例來分配cpu資源
	  CPU資源充足時,requests.cpu不會限制container佔用的最大值,container可以獨佔CPU
	  requests.memory沒有對應的docker引數,作為k8s排程依據
	  使用requests來設定各容器需要的最小資源
limits
	  limits限制執行時容器佔用的資源
	  limits.cpu會被轉換成docker的–cpu-quota引數。與cgroup cpu.cfs_quota_us功能相同
	  限制容器的最大CPU使用率
	  cpu.cfs_quota_us引數與cpu.cfs_period_us結合使用,後者設定時間週期
	  k8s將docker的–cpu-period引數設定100毫秒。對應著cgroup的cpu.cfs_period_us
	  limits.cpu的單位使用m,千分之一核
	  limits.memory會被轉換成docker的–memory引數。用來限制容器使用的最大記憶體
	  當容器申請記憶體超過limits時會被終止