什麼是StatefulSet

簡單說來,StatefulSet其實就是一種升級版的Deployment,大致工做原理以下nginx

1.爲每一個Pod名字按順序編號,按順序啓動

# 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

2.經過HeadlessService爲Pod編號,在DNS服務器中生成帶有編號的DNS記錄,從而能夠達到經過Pod名字定位到相應的服務

pod-name>.<svc-name>.<namespace>.svc.cluster.local

實現了網絡標識的穩定ubuntu

3.爲每一個Pod綁定名稱對應的PVC,規則以下

<PVC名字>-<StatefulSet名稱>-<編號>

在Pod重建的時候會從新綁定上以前的PVC,由於PV和PVC不會被刪除,數據還在,因此Statefulset的存儲狀態是穩定的服務器

總的來講,StatefulSet實現了:1.保證網絡標識的穩定 2.保證存儲狀態的穩定。適合用來部署有狀態的應用,而Deloyment認爲全部的Pod都是徹底同樣的,更適合用來操做無狀態的應用網絡

相關文章
相關標籤/搜索