StatefulSets在v1.5時還是個beta特性,它取代了v1.4的PetSets特性。PetSets的用戶可以參考v1.5的升級指導(dǎo),將正在運(yùn)行的PeetSets升級到StatefulSets。
  StatefulSet是一個給Pod提供唯一標(biāo)志的控制器,它可以保證部署和擴(kuò)展的順序。

使用StatefulSet

  當(dāng)應(yīng)用有以下任意要求時,StatefulSet的價值就體現(xiàn)出來了。
   ● 穩(wěn)定的、唯一的網(wǎng)絡(luò)標(biāo)識。
   ● 穩(wěn)定的、持久化的存儲。
   ● 有序的、優(yōu)雅的部署和擴(kuò)展。
   ● 有序的、優(yōu)雅的刪除和停止。
  上面提到的點中,在Pod調(diào)度時,穩(wěn)定性和持久化是同一個意思。如果一個應(yīng)用不需要任何穩(wěn)定的標(biāo)識或順序的部署、刪除和擴(kuò)展,那么你應(yīng)該使用提供無狀態(tài)備份的控制器來部署你的應(yīng)用。諸如Deployment或者ReplicaSet可能更適合你的無狀態(tài)服務(wù)需求。

限制

   ● StatefulSet還是beta版本,Kubernetes v1.5之前不可用。
   ● 和所有的alpha/beta資源一樣,可以將--runtime-config選項傳遞給apiserver,來禁止StatefulSet。
   ● 給定Pod的存儲必須是:基于請求存儲等級(Storage Class)的PersistentVolume Provisioner,或者是由管理員預(yù)先配置。
   ● 刪除和(或)減少StatefulSet副本,不會刪除StatefulSet相關(guān)的卷。這樣做是為了保證數(shù)據(jù)安全,比自動的清除StatefulSet相關(guān)資源更有價值。
   ● 當(dāng)前StatefulSet需要Headless服務(wù)來負(fù)責(zé)Pod的網(wǎng)絡(luò)一致性。你需要創(chuàng)建該服務(wù)。
   ● 當(dāng)前,