将动态命令注入部署

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 中找到其他知名运营商。

【讨论】:

以上是关于将动态命令注入部署的主要内容,如果未能解决你的问题,请参考以下文章

常见WEB攻击之命令注入

关于简单动态路由协议配置,注入,路由重分布

命令注入(OS)

如何给iOS的APP注入dylib(动态库)

轻松理解啥是 SQL 注入

sql注入分享