我正在嘗試構建一個應用程式,將某些 Kubernetes 資源的規格存盤在一個變數中。
然后它會休眠一段預定義的時間,比如 7 天,然后應用程式再次運行,并將相同資源的規格與之前存盤在變數中的規格進行比較。
問題是:
如果應用程式 pod 因任何原因重新啟動,例如節點輪換,它將丟失其存盤的規范并且無法比較它們。
如何確保應用程式將回傳到它死亡時的確切位置?例如,如果應用程式的 pod 在sleep函式期間死掉了怎么辦?
我聽說 StatefulSet 是答案,但它保證不會發生第 2 個問題嗎?
uj5u.com熱心網友回復:
存盤持久資料的 Pod 應該使用Volumes。如果每個 Pod 都需要自己的卷,那么 StatefulSets 是正確的選擇,因為 K8s 會在重啟后將 Pod 重新附加到它們的卷上。
K8s 中的 Pod 不會從中斷的地方恢復,因為 Pod 重啟會觸發原始應用程式行程的終止。不支持暫停行程。因此,您需要在應用程式代碼中處理這種行為。
uj5u.com熱心網友回復:
需要有關您的案例的更多詳細資訊,但通常 k8s 不用于管理 pod 的內部狀態,因為它具有“休眠”功能。
您可能需要考慮https://github.com/spf13/viper#remote-keyvalue-store-example---unencrypted中列出的方法
例如通過利用 consul、etcd、firestore 等。
通常,您需要查看如何在應用程式級別維護狀態,無論您是要使用“遠程配置”還是 k8s 卷方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/479419.html
標籤:去 Kubernetes 记忆 Kubernetes-pod Kubernetes-statefulset
