[英]Manually spawn stateful pod instances
我正在做一個項目,我需要為每個用戶(客戶)生成 1 個實例。
我認為創建某種管理器來處理它並將其托管在某個地方是有意義的。 Kube.netes 似乎是一個不錯的選擇,因為它幾乎可以托管在任何地方,並且可以自動執行很多事情(例如,確保實例在出現故障時繼續運行)。
所有實體都在Python,對應的有Flask API。
InstanceManager Instance (user1)
.-----------. .--------.
POST /instances/user3 --> | | ---------- | |---vol1
| | '--------'
| | -----.
'...........' \ Instance (user2)
\ .--------.
'- | |---vol2
'--------'
現在我似乎無法弄清楚如何將其翻譯成 Kube.netes
我的想法:
StatefulSet
,因為我希望通過重啟來維護數據。Service
,用於跟蹤用戶到實例 IP(用於健康檢查等)。 我對如何讓InstanceManager
在傳入的 POST 請求上生成一個新實例感到很困惑。 我做了很多挖掘(運算符、命名空間等),但似乎沒有什么是直截了當的。 也就是說,我似乎甚至無法通過kubectl
做到這一點。 我對 Kube.netes 的工作方式的看法完全錯誤嗎?
我取得了一些進展並想分享。
本質上,您需要直接與 Kube.netes REST API 進行交互,而不是應用 static yaml 或使用kubectl
,最好是與眾多客戶端之一進行交互。
在我們的例子中有兩個選擇:
第一種方法似乎更明智,因為使用命名空間有很多其他好處(網絡控制、資源分配等)。
根據情況,服務本身可以指向一個statefulset
或一個pod
。
還有另一個陷阱(可能更多)。 命名空間、pod 名稱等,它們都需要符合 RFC 1123。因此對於命名空間,你不能簡單地使用 email 地址甚至 base64。你需要使用類似user-100
的東西,並有一個到 map 的映射表回到實際用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.