StatefulSets在v1.5時還是個beta特性,它取代了v1.4的PetSets特性。PetSets的用戶可以參考v1.5的升級指導,將正在運行的PeetSets升級到StatefulSets。
StatefulSet是一個給Pod提供唯一標志的控制器,它可以保證部署和擴展的順序。
使用StatefulSet
當應用有以下任意要求時,StatefulSet的價值就體現(xiàn)出來了。
● 穩(wěn)定的、唯一的網(wǎng)絡標識。
● 穩(wěn)定的、持久化的存儲。
● 有序的、優(yōu)雅的部署和擴展。
● 有序的、優(yōu)雅的刪除和停止。
上面提到的點中,在Pod調(diào)度時,穩(wěn)定性和持久化是同一個意思。如果一個應用不需要任何穩(wěn)定的標識或順序的部署、刪除和擴展,那么你應該使用提供無狀態(tài)備份的控制器來部署你的應用。諸如Deployment或者ReplicaSet可能更適合你的無狀態(tài)服務需求。
限制
● StatefulSet還是beta版本,Kubernetes v1.5之前不可用。
● 和所有的alpha/beta資源一樣,可以將--runtime-config選項傳遞給apiserver,來禁止StatefulSet。
● 給定Pod的存儲必須是:基于請求存儲等級(Storage Class)的PersistentVolume Provisioner,或者是由管理員預先配置。
● 刪除和(或)減少StatefulSet副本,不會刪除StatefulSet相關的卷。這樣做是為了保證數(shù)據(jù)安全,比自動的清除StatefulSet相關資源更有價值。
● 當前StatefulSet需要Headless服務來負責Pod的網(wǎng)絡一致性。你需要創(chuàng)建該服務。
● 當前,