設(shè)置自動(dòng)驅(qū)逐臨時(shí)存儲(chǔ)空間不足的Pod
本文介紹Kubernetes場景下如何設(shè)置自動(dòng)驅(qū)逐臨時(shí)存儲(chǔ)空間不足的ECI Pod,避免因Pod臨時(shí)存儲(chǔ)空間不足而影響業(yè)務(wù)運(yùn)行。
配置說明
默認(rèn)情況下,當(dāng)ECI Pod的臨時(shí)存儲(chǔ)空間不足時(shí),系統(tǒng)不會(huì)做任何處理,可能會(huì)影響業(yè)務(wù)運(yùn)行。基于Kubernetes的驅(qū)逐和調(diào)度機(jī)制,ECI支持為Pod添加k8s.aliyun.com/eci-eviction-enable: "true"
的Annotation,實(shí)現(xiàn)在某一ECI Pod的臨時(shí)存儲(chǔ)空間不足(低于100 MiB)時(shí),自動(dòng)驅(qū)逐該P(yáng)od(Pod的狀態(tài)將變更為Failed)。
Annotation請(qǐng)?zhí)砑釉赑od的metadata下,例如:創(chuàng)建Deployment時(shí),Annotation需添加在spec>template>metadata下。
僅支持在創(chuàng)建ECI Pod時(shí)添加ECI相關(guān)Annotation來生效ECI功能,更新ECI Pod時(shí)添加或者修改ECI相關(guān)Annotation均不會(huì)生效。
一般情況下,業(yè)務(wù)應(yīng)用部署在Deployment上。如果被驅(qū)逐的Pod由Deployment管理,Deployment會(huì)自動(dòng)創(chuàng)建新的Pod,如下圖所示。
配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
annotations:
k8s.aliyun.com/eci-eviction-enable: "true" #設(shè)置自動(dòng)驅(qū)逐臨時(shí)存儲(chǔ)空間不足的Pod
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2