【发布时间】:2021-05-15 02:52:41
【问题描述】:
我想知道是否有办法根据高负载按比例动态设置环境变量。
假设我们有
Kubernetes 的服务名为 Generic Consumer,一开始有 4 个 pod。首先
我想设置 75% 的 pod 应该有环境变量 Gold 和 25% Platinium。那可能吗? (% 可以改为静态数字,例如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);
如果您有其他选择,请告诉我!
【问题讨论】:
-
关于第一个问题,您可以使用具有特定标签的 2 个部署和具有 2 个标签的服务来与两个部署“链接”。如果您有 2 个部署,则可以创建 2 个 HPA。您是否正在寻找 2 个部署不适合您的替代方案?
-
谢谢,@PjoterS 现在我正在做研究,所以我想找出所有可用的可能性。
-
同一部署产生的所有 pod 都是相同的;它们都将始终具有相同的环境变量。我认为,如果需要告知流程正在处理哪个优先级,那么您目前使用两个单独部署的方法可能是最好的方法。