《破曉傳說》中後期快速升級技巧 怎麼快速升到100級
阿新 • • 發佈:2021-09-19
在kubernetes系統中,Pod的管理物件RC,Deployment,DaemonSet和Job都面向無狀態的服務,但現實中有很多服務時有狀態的,比如一些叢集服務,例如mysql叢集,叢集一般都會有這四個特點:
- 每個節點都是有固定的身份ID,叢集中的成員可以相互發現並通訊
- 叢集的規模是比較固定的,叢集規模不能隨意變動
- 叢集中的每個節點都是有狀態的,通常會持久化資料到永久儲存中
- 如果磁碟損壞,則叢集裡的某個節點無法正常執行,叢集功能受損
如果通過RC或Deployment控制Pod副本數量來實現上述有狀態的叢集,就會發現第一點是無法滿足的,因為Pod名稱和ip是隨機產生的,並且各Pod中的共享儲存中的資料不能都動,因此StatefulSet在這種情況下就派上用場了,那麼StatefulSet具有以下特性:
- StatefulSet裡的每個Pod都有穩定,唯一的網路標識,可以用來發現叢集內的其它成員,假設,StatefulSet的名稱為mysql,那麼第1個Pod叫mysql-0,第2個叫mysql-1,以此類推
- StatefulSet控制的Pod副本的啟停順序是受控的,操作第N個Pod時,前N-1個Pod已經是執行且準備狀態
- StatefulSet裡的Pod採用穩定的持久化儲存卷,通過PV或PVC來實現,刪除Pod時預設不會刪除與StatefulSet相關的儲存卷(為了保證資料的安全)
StatefulSet除了要與PV卷捆綁使用以儲存Pod的狀態資料,還要與Headless,Service配合使用,每個StatefulSet定義中都要宣告它屬於哪個Handless Service,Handless Service與普通Service的關鍵區別在於,它沒有Cluster IP