簡單說來,StatefulSet其實就是一種升級版的Deployment,大致工做原理以下nginx
# kubectl get po -o wide -l app=nginx NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE web-0 1/1 Running 0 21s 10.244.0.44 vm-0-8-ubuntu <none> web-1 1/1 Running 0 14s 10.244.0.45 vm-0-8-ubuntu <none>
刪除重建的Pod會使用以前的如出一轍的名字web
pod-name>.<svc-name>.<namespace>.svc.cluster.local
實現了網絡標識的穩定ubuntu
<PVC名字>-<StatefulSet名稱>-<編號>
在Pod重建的時候會從新綁定上以前的PVC,由於PV和PVC不會被刪除,數據還在,因此Statefulset的存儲狀態是穩定的服務器
總的來講,StatefulSet實現了:1.保證網絡標識的穩定 2.保證存儲狀態的穩定。適合用來部署有狀態的應用,而Deloyment認爲全部的Pod都是徹底同樣的,更適合用來操做無狀態的應用網絡