将动态命令注入部署

Inject dynamically commands into a deployment

当您拥有 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),所以对于中等负载,固定数量looupd-s 就可以了。即便如此,我想知道在 Kubernetes 中如何处理这种极端情况下的自动扩展。

尤其是事件驱动的系统,一定要有用例,这是我能想到的最接近的了。

这个问题更多的是关于如何在 Kubernetes 中扩展某些服务的选项。我认为最好的模式是 Kubernetes Operator。本质上,这将管理您的 nsqd 应用程序的生命周期。有几个运算符工具可以用来创建你的 nsqd 运算符:

横向扩展运算符的一个很好的例子是 Srimzi,它是 Kubernetes 的 Kafka 运算符。

您还可以在 Operator Hub.

中找到其他知名运算符