Dim*_*ios 6 deployment containers environment-variables kubernetes kubernetes-helm
基于此,可以在您定义的部署的所有 pod 中创建相同的环境变量。
有没有办法指示 Kubernetes 部署创建具有不同环境变量的 pod?
用例:
假设我有一个监控容器,我想创建它的 4 个副本。如果环境变量如此定义,则此容器具有正在发送的服务。例如,如果环境变量 IS_MASTER 为真,则服务继续发送这些电子邮件。
apiVersion: v1
kind: Deployment
metadata:
...
spec:
...
replicas: 4
...
template:
...
spec:
containers:
-env:
-name: IS_MASTER
value: <------------- True only in one of the replicas
Run Code Online (Sandbox Code Playgroud)
(在我的情况下,我使用的是 helm,但同样的事情也可以没有 helm)
小智 4
据我所知,你正在寻找的更像是一种反模式而不是不可能的。
据我了解,您似乎正在寻求部署一个可扩展/HA 监控平台,该平台不会在警报上发送 X 次邮件,因此您可以制作一个边车容器来与其兄弟容器通信并“选择”主邮件程序(在这种情况下,StatefulSet 会让事情变得更容易),或者只是将邮件程序与监控分开,让它们通过服务相互通信。这将允许您分别对监控和邮件进行负载平衡。
monitoring-1 \ / mailer-1
monitoring-2 --- > mailer.svc -- mailer-2
monitoring-3 / \ mailer-3
Run Code Online (Sandbox Code Playgroud)
任何邮件请求都将由池中的一个且仅一个邮件程序处理,但这是假设您的监控 Pod 并未全部触发警报...如果情况并非如此,则无论您对邮件程序的“主”选择如何,你必须首先解决这个问题。
首先解决这个问题,我的意思是向您的监控平台添加主选举逻辑,以协调事件上的主故障转移,有几种方法可以做到这一点,但这实际上取决于您的监控平台是什么以及可以做什么。 ..
虽然,如果您的副本只是以某种方式扩展计算能力,并且您的主服务器预计是静态的,那么只需使用 StatefulSet,并在运行时添加一个衬垫if hostname == $statefulset-name-0 then MASTER,但我觉得这不是最好的主意。