Kubernetes 将不同的configmap或env属性传递给pod,具体取决于它所在的节点';他在跑步

Kubernetes 将不同的configmap或env属性传递给pod,具体取决于它所在的节点';他在跑步,kubernetes,configuration,Kubernetes,Configuration,我正在尝试配置一个可以在kubernetes集群的多个节点上运行的pod 根据选择调度/运行pod的节点,pod所需的配置有所不同 例如,如果pod最终在node1中运行,则配置值(例如,连接到某个外部服务的用户名)需要为“user-node1”。 如果相同的pod最终在node2中运行,我需要该配置值不同(例如“user-node2”) 理想情况下,我的集群/应用程序配置将只有一个,其中user-node1和user-node2都存在于某个位置,当我的pod计划在node1或node2中运行时

我正在尝试配置一个可以在kubernetes集群的多个节点上运行的pod

根据选择调度/运行pod的节点,pod所需的配置有所不同

例如,如果pod最终在node1中运行,则配置值(例如,连接到某个外部服务的用户名)需要为“user-node1”。 如果相同的pod最终在node2中运行,我需要该配置值不同(例如“user-node2”)

理想情况下,我的集群/应用程序配置将只有一个,其中user-node1和user-node2都存在于某个位置,当我的pod计划在node1或node2中运行时,相应的配置将传递给pod(我试图让pod不知道每个节点都有多个配置)


有没有办法做到这一点?

这是一个非常具体的场景。您可以尝试使用-

准入控制器是一段代码,它在对象持久化之前,但在请求经过身份验证和授权之后,拦截对Kubernetes API服务器的请求。控制器由以下列表组成,被编译成kube apiserver二进制文件,并且只能由群集管理员配置。在该列表中,有两个特殊的控制器:MutatingAdmissionWebhook和ValidatingAdmissionWebhook。它们分别执行API中配置的mutating和validating许可控制webhook

许可控制器可以是“验证”、“变异”或两者兼有。变异控制器可以修改其许可的对象。

在这个选项中,您需要将一些or注入pod,然后在您的应用程序中指定它们。 例如,中使用了此解决方案,并在中提到

另一个选项是创建某种类型的
操作符
,它将监视
名称空间中的事件
,并将修改
pod


这个解决方案看起来像在中,但不是在
nodepool
中监控
节点,而是需要在
名称空间中监控
pod
,这个集群将位于云端或本地环境中?我假设您想要灵活性,所以硬编码将在哪个节点上部署特定的pod与本文档中的选项不同。这不是在公共云中,如果这是你的意思的话。理想情况下,我能够根据pod最终运行的节点上的标记传递不同的配置。也许我需要pod中的某些东西(例如initContainer),它知道这些标记和多个配置,并“准备”主容器的最终配置(不知道有多个配置或节点标记)