基于社區(qū)對有狀態(tài)應用的通用需求,K8S設計了一種有狀態(tài)應用對象,也即StatefulSet。它可以為用戶提供一組具有穩(wěn)定、有序、唯一特性的應用實例集合。如下圖所示:
1. 穩(wěn)定
穩(wěn)定的podName:{stsName}-{序號[0-n]}
穩(wěn)定的網絡標識: {podName}. {headless-svcName}.{namespace}.svc.cluster.local
穩(wěn)定的存儲關系:{volumeClaimTemplatesName}-{podName}
2. 有序
按照編號從小到大順序的部署:0 ~ n
按照編號從大到小進行刪除:n ~ 0
支持有序的擴縮容和升級策略
3. 唯一
每個pod擁有一個唯一的網絡標識: {podName}. {headless-svcName}.{namespace}.svc.cluster.local
從下圖可以看出,與Deployment通過ReplicaSet來管理pod生命周期不同,StatefulSet是直接管理pod的。