Kubernetes
獲取 kubernetes pod 以在啟動後承擔特定的身份/角色/作業
我在這裡展示的是我的設置的簡化版本,並且語法錯誤。
我有一個高級“代理”列表,我想在 kubernetes 集群上部署為 pod。
這個集群中的一些節點有特殊的硬體,一些沒有,但是所有的 pod 都應該使用同一個容器。
可能看起來像(再次:語法錯誤):
agent1 wlan ... agent8 wlan agent9 wlan rs232.1 agent10 wlan rs232.2
我設置了一個大致看起來像這樣的部署(語法錯誤):
deployment (standard nodes) replicas: 8 --- deployment (rs232, terminal 1) replicas: 1 nodeSelector: rs232=1 env: rs232=1 (because nodeSelector can't be passed nicely afaik) --- deployment (rs232, terminal 2) replicas: 1 nodeSelector: rs232=2 env: rs232=2
我希望這些代理中的每一個都啟動並從列表中獲取一個身份,當然同時擁有匹配的硬體。
所以就像一個 pod 會像這樣與一個角色分發服務交談:
pod - Hi, I'm pod/container-xyz and I have env/label/annotation rs232=2 service - Hi, well then you are now agent10 pod - OK I'll do the work of agent10 then (service - cool, I'll add agent10 as an alias to you in the cluster DNS) <- that will be my next question
沒有特殊硬體的代理也是如此:該服務為每個代理賦予一個代理角色。
我嘗試了 StatefulSet 的一些東西,但這不符合要求(因為各種 nodeSelector 並且它們啟動速度非常慢)。
我開始考慮一個專用的自我實現的伺服器 pod,它會保留我的代理列表並將它們租給匹配的硬體(有點像 dhcp 伺服器),但我很確定我不是唯一遇到這個問題的人,而且一定有一個解決方案。我快速查看了 Zookeeper,但我認為它不適合我。我可能找不到解決方案,因為我的詞彙量不是我猜的正確詞彙。
有人有好主意嗎?我是否朝著正確的方向前進?
我可能會使用MetaController CompositeController和定義代理的自定義資源來實現這一點。雖然需要編碼。它看起來比實際複雜得多。
基本上,您會定期通過 HTTP 接收描述資源目前狀態的同步掛鉤,並使用 JSON 響應以創建/銷毀它們。