繁体   English   中英

Kubernetes 使用动态环境变量扩展 pod

[英]Kubernetes scale up pod with dynamic environment variable

我想知道是否有一种方法可以根据高负载在一定范围内动态设置环境变量。

假设我们有

Kubernetes 服务名为Generic Consumer ,一开始有 4 个 pod。 首先,我想设置 75% 的 pod 应该有 env 变量Gold和 25% Platinium 那可能吗? (% 可以更改为 static 编号,例如 3 个节点Gold , 1 Platinium

第二个问题:如果Platinium pod 负载很高,有没有办法将 Kubernetes/charts 配置为仅缩放Platinium ,然后在较高负载消退后减小它到目前为止,我想出创建 2 个单独的 YAML 文件,其中包含不同的 env 变量和副本数字。

显然,这样做的全部目的是优先考虑一些主题,我以此作为参考https://www.confluent.io/blog/prioritize-messages-in-kafka 所以在上面的例子中, Generic Consumer将是 Kafka 消费者,它将使用 env 变量来获取存储桶配置

configs.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG,
   BucketPriorityAssignor.class.getName());
configs.put(BucketPriorityConfig.TOPIC_CONFIG, "orders-per-bucket");
configs.put(BucketPriorityConfig.BUCKETS_CONFIG, "Platinum, Gold");
configs.put(BucketPriorityConfig.ALLOCATION_CONFIG, "70%, 30%");
configs.put(BucketPriorityConfig.BUCKET_CONFIG, "Platinum");
consumer = new KafkaConsumer<>(configs);

如果您有任何替代方案,请告诉我!

正如评论部分中提到的,最通用的选项(可能是您的优先级方案的最佳选择)是使用goldplatinium 标签保留两个单独的部署。

关于第一个问题,就像@David Maze指出的那样, Deployment中的 Pod 是相同的,你不能有几个 Pod 有一个 label 和几个不同的 Pod。 即使您手动创建(3 个带有gold的 pod,1 个带有platiunuim的 pod),您也无法使用HPA

此选项允许您根据情况进行调整。 例如,您可以使用HPA扩展一个部署,使用VPA扩展另一个部署,或者同时使用HPA 将帮助您维持预算,即对于gold用户,您可能会限制最多 5 个 pod 同时运行,而对于platinium金用户,您可以将此最大值设置为 10。

您可以考虑将Istio 流量管理用于路由请求,但在我看来,两个独立部署的方法更合适。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM