首页 > 解决方案 > Kubernetes:在每个节点上单独配置每个部署/pod

问题描述

我面临一个我们考虑使用 Kubernetes 的场景。但我不确定这是否是正确的工具:

我们有多辆车,每辆车都有一台计算机通过蜂窝网络连接到我们的主服务器。我们希望在每辆车上部署多个应用程序,因此车辆就是我们的节点。我们不需要任何扩展,每辆车都有一组相同的部署应用程序在两个 pod 中运行。如果车辆的计算机关闭,我们不得将 Pod 部署在另一个节点上。尽管应用程序集总是相同的,但它们的配置在每个车辆(节点)上是不同的。例如,某些车辆有一个摄像头,并且只有在向应用程序提供其序列号时才能访问此摄像头。其他车辆根本没有摄像头。

问题:

使用DaemonSets,我们可能可以实现所有车辆都将只有这两个带有相同容器的 pod。但是个人配置让我担心。我们认为在每辆车的计算机上都有相关配置的环境变量。但是在 pod 中运行的容器内无法访问主机系统的环境变量。是否有可能为我们的部署提供节点唯一的配置?Kubernetes 是否适合在这里使用?

标签: kubernetes

解决方案


抱歉,我无法理解车辆,这可能是由于我单次阅读

但我可以帮忙;

但是在 pod 中运行的容器内无法访问主机系统的环境变量。是否有可能为我们的部署提供节点唯一的配置?

是的,我不确定您是如何在主机或 K8s 节点上设置环境的。

但是您可以使用 Hostpath 选项,您可以将节点路径目录直接挂载到容器中。您可以在一个固定位置创建一个文件,其中包含要在创建Kubernetes节点时传递给应用程序的环境变量,然后创建您的 pod 以使用与 hostpath 相同的挂载路径

如果您的节点在扩展期间被替换,如果您是第一次手动添加文件 env ,您的新 POD 或容器将不会获得此文件。

将此env 文件保存在用户数据(启动脚本)中,以便在节点池中创建任何节点时,它将在默认位置使用文件启动。

阅读更多:https ://kubernetes.io/docs/concepts/storage/volumes/#hostpath

添加

如果要在容器中使用节点的标签:https ://github.com/scottcrossen/kube-node-labels


推荐阅读