說明
1.當集群中的計算資源不很充足, 如果集群中的pod負載突然加大, 就會使某個node的資源嚴重不足, 為了避免系統掛掉, 該node會選擇清理某些pod來釋放資源, 此時每個pod都可能成為犧牲品
2.kubernetes保障機制:
限制pod進行資源限額
允許集群資源被超額分配, 以提高集群的資源利用率
為pod划分等級, 確保不同的pod有不同的服務質量qos, 資源不足時, 低等級的pod會被清理, 確保高等級的pod正常運行
3.kubernetes會根據Request的值去查找有足夠資源的node來調度此pod
limit對應資源量的上限, 既最多允許使用這個上限的資源量, 由於cpu是可壓縮的, 進程是無法突破上限的, 而memory是不可壓縮資源, 當進程試圖請求超過limit限制時的memory, 此進程就會被kubernetes殺掉
對於cpu和內存而言, pod的request和limit是指該pod中所有容器的 Requests或Limits的總和,
例如: 某個節點cpu資源充足, 而內存為4G,其中3GB可以運行pod, 而某個pod的memory request為1GB, limit為2GB, 那么這個節點上最多可以運行3個這樣的pod
待調度pod的request值總和超過該節點提供的空閑資源, 不會調度到該節點node上;
示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.11
ports:
- containerPort: 80
resources:
limits:
cpu: 2048m
memory: 2Gi
requests:
cpu: 2048m
memory: 2Gi