【问题标题】:Kubernetes - Container Knowing about Node it's scheduled toKubernetes - 容器了解它计划的节点
【发布时间】:2023-03-04 04:29:01
【问题描述】:

我正在尝试找出一种方法,让容器或 pod 可以了解有关它被调度到的节点的一些特定信息。例如,我的容器可能必须知道该节点上是否存在 GPU,才能决定是否启用 GPU 加速。另一个例子是知道节点的 $DISPLAY 变量以知道将图形输出到哪个 X 服务器。

最好的方法是什么?

谢谢

更新:如果我可以从容器中获取节点名称,我可以对外部服务进行查找以获取我需要的信息。有没有办法做到这一点?

【问题讨论】:

  • 我不太了解 $DISPLAY 用例:您已将其标记为 GKE,因此您的 pod 将运行在云中的某个位置,在您无法控制的数据中心中,可能与根本没有连接到它们的显示硬件。如果您尝试运行交互式 X 应用程序,您希望它的显示出现在哪里? (哪里可以?)
  • 我在内部节点和基于云的节点上运行。以以下用例为例:我混合了受信任的内部节点,它们都有不同的设置,并且安排到这些“受信任”节点的 Pod 将在节点上的 X 控制面板中显示一些信息。我有一个第三方应用程序,我无法修改它以将 gui 输出到它运行的节点。现在每个节点都有自己的设置,一些在 display :0 上运行,另一些在 :10 上运行,还有一些在其他未知显示器上运行。我需要某种方式来传达哪个 DISPLAY 是活动的

标签: kubernetes google-kubernetes-engine kubernetes-pod kubernetes-container


【解决方案1】:

在这里。我找到了一种不错的方法来实现这一点。

在使用我的集群设置节点时,我可以安装一个脚本来将环境变量源到文件中,然后将该文件卷挂载到容器中。

另外,我还可以将每个 ndoe 的配置存储在单独的服务中,并将 nodeName 注入到特定节点的查找属性中,如下所示:

https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-pod-fields-as-values-for-environment-variables

然后基于名称,我的容器可以通过服务或配置映射来查找 nodeName 的映射到我需要的来自节点的任何信息。我所要做的就是让这个服务/配置映射与节点的信息保持同步。

【讨论】:

  • 您可以从 K8s API 服务器查询节点规格。
【解决方案2】:

Taints and Tolerations 就是为此而设计的。

【讨论】:

  • 我对 taints 和 tolerations 的理解是,它们允许将某些 pod 调度到某些节点(或者更有可能)。我希望我的 pod 在所有节点上运行,但有一些关于底层节点的信息。我不能告诉我的 pod 只在显示变量为 :10 的节点上运行
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 2023-03-10
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2022-08-13
相关资源
最近更新 更多