企業運維實戰--k8s學習筆記11.k8s容器資源限制
- k8s容器資源限制
- 記憶體限制
- cpu限制
- namespace設定資源限制
- Namespace 配置Pod配額
k8s容器資源限制
Kubernetes采用request和limit兩種限制型別來對資源進行分配,
request(資源需求):即運行Pod的節點必須滿足運行Pod的最基本需求才能運行Pod,
limit(資源限額):即運行Pod期間,可能記憶體使用量會增加,那最多能使用多少記憶體,這就是資源限額,
資源型別: CPU 的單位是核心數,記憶體的單位是位元組, 一個容器申請0.5個CPU,就相當于申請1個CPU的一半,你也可以加個后綴m
表示千分之一的概念,比如說100m的CPU,100豪的CPU和0.1個CPU都是一樣的,
記憶體單位: K、M、G、T、P、E #通常是以1000為換算標準的, Ki、Mi、Gi、Ti、Pi、Ei
#通常是以1024為換算標準的,
記憶體限制
編輯資源清單,對節點容器使用的記憶體進行限制
mkdir limit
cd limit/
vim pod.yaml
cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: memory-demo
spec:
containers:
- name: memory-demo
image: stress
args:
- --vm
- "1"
- --vm-bytes
- 200M
resources:
requests:
memory: 50Mi
limits:
memory: 100Mi

拉起清單,查看節點
kubectl apply -f pod.yaml
kubectl get pod
kubectl logs memory-demo

重新修改記憶體最大限額為300Mi
vim pod.yaml
cat pod.yaml

重新拉起節點,可正常運行
kubectl apply -f pod.yaml
kubectl get pod

cpu限制
vim pod1.yaml
cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
spec:
containers:
- name: cpu-demo
image: stress
resources:
limits:
cpu: "1"
requests:
cpu: "0.1"
args:
- -c
- "2"

拉起容器,查看pod
kubectl apply -f pod1.yaml
kubectl get pod

拉起pod失敗,因為cpu限制不符合,
kubectl describe pod cpu-demo

洗掉pod,重新編輯pod節點,符合本機環境的pod節點
kubectl delete -f pod1.yaml
vim pod1.yaml
kubectl apply -f pod1.yaml

namespace設定資源限制
vim limitrange.yaml
cat limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: limitrange-memory
spec:
limits:
- default:
cpu: 0.5
memory: 512Mi
defaultRequest:
cpu: 0.1
memory: 256Mi
max:
cpu: 1
memory: 1Gi
min:
cpu: 0.1
memory: 100Mi
type: Container

查看限制詳細資訊
kubectl get pod
kubectl apply -f limitrange.yaml
kubectl describe limitranges

關閉pod限制,使用默認限制
vim pod.yaml
cat pod.yaml

拉起清單,查看pod
kubectl apply -f pod.yaml
kubectl describe pod memory-demo

可以看到limit

重新打開自定義限制
vim pod.yaml
cat pod.yaml

拉起容器報錯,因為記憶體規定最低為100Mi,而清單中只寫了50Mi,未按照規范
kubectl apply -f pod.yaml

kubectl describe limitranges

重新設定cpu和記憶體限制
vim pod.yaml
cat pod.yaml

kubectl apply -f pod.yaml

kubectl apply -f limitrange.yaml

kubectl get resourcequotas

kubectl describe resourcequotas

Namespace 配置Pod配額
vim limitrange.yaml
cat limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: limitrange-memory
spec:
limits:
- default:
cpu: 0.5
memory: 512Mi
defaultRequest:
cpu: 0.1
memory: 256Mi
max:
cpu: 1
memory: 1Gi
min:
cpu: 0.1
memory: 100Mi
type: Container
---
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
pods: "3"
kubectl apply -f limitrange.yaml
kubectl describe resourcequotas

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292156.html
標籤:其他
