将动态命令注入部署
Posted
技术标签:
【中文标题】将动态命令注入部署【英文标题】:Inject dynamically commands into a deployment 【发布时间】:2020-10-11 00:12:59 【问题描述】:当您拥有 StatefulSet 或 Deployment 时,您通常有办法提供将在创建 pod 的容器时输入的命令。
当部署使用 HPA 自动扩展时,是否有可能将更多参数注入命令数组,或者在缩减时删除某些参数?
例如,如果您想允许 nsqlookupd 横向扩展(另一个部署),那么您必须将其新的 pod IP 注册到 nsqAdmin pod 的命令列表中。
command:
- /nsqd
- -data-path
- /data
- -lookupd-tcp-address
- nsqlookupd-0.nsqlookupd:4160
- -lookupd-tcp-address
- nsqlookupd-1.nsqlookupd:4160
- -lookupd-tcp-address
- nsqlookupd-2.nsqlookupd:4160
...
这种情况是假设性的,因为您需要达到疯狂的大量队列,我猜需要扩展到超过 3 个 nsqlookupd-s(NSQ 的队列发现 svc),因此对于中等负载,loopd-的固定计数s 会的。即便如此,我想知道在极端情况下这种类型的自动扩展如何在 Kubernetes 中处理。
尤其是事件驱动的系统,肯定有用例,这是我能想到的最接近的了。
【问题讨论】:
【参考方案1】:这个问题更多的是关于如何在 Kubernetes 中扩展某些服务的选项。我认为最好的模式是拥有Kubernetes Operator。本质上,这将管理您的 nsqd 应用程序的生命周期。您可以使用多种运算符工具来创建 nsqd 运算符:
Operator Framework KUDO Kubebuilder Metacontroller一个很好的横向扩展运算符示例是Srimzi,它是 Kubernetes 的 Kafka 运算符。
您还可以在Operator Hub 中找到其他知名运营商。
【讨论】:
以上是关于将动态命令注入部署的主要内容,如果未能解决你的问题,请参考以下文章