【问题标题】:Add Sidecar container to running pod(s)将 Sidecar 容器添加到正在运行的 pod(s)
【发布时间】:2020-11-05 13:34:47
【问题描述】:

我有我们正在运行的供应商应用程序的 helm 部署脚本。对于日志记录解决方案,我需要为 fluentbit 添加一个 sidecar 容器,以将日志推送到聚合日志服务器(本例中为 splunk)。

现在要定义这个 sidecar 容器,我想避免更改供应商定义的部署脚本。相反,我想要一些替代方法将 sidecar 容器附加到正在运行的 pod。

到目前为止,我已经了解到可以在同一个部署脚本(部署配置)中定义 sidecar 容器。

【问题讨论】:

  • 您可以在DeploymentYAML 定义中附加额外的容器。该文档在这方面可能很有用:Multicontainer example from Kubernetes.io。请说明这是否是您要查找的内容。
  • 感谢@david。这必须在部署之前完成。我想知道是否可以将 sidecar 容器附加到已经部署(运行)的 pod。

标签: kubernetes openshift fluent-bit sidecar


【解决方案1】:

在cmets中回答问题:

感谢@david。这必须在部署之前完成。我想知道是否可以将 sidecar 容器附加到已经部署(运行)的 pod。

您不能将附加容器附加到正在运行的Pod。您可以更新(修补)资源定义。这将强制使用新规范重新创建资源。

关于此功能的 github 问题已关闭,并附有以下评论:

在讨论了 SIG Node 的目标之后,明确的共识是 pod 规范中的容器列表应该保持不变#27140 将由 kubernetes/community#649 更好地解决,它允许在现有 pod 中运行临时调试容器。这将不会实施。

-- Github.com: Kubernetes: Issues: Allow containers to be added to a running pod


回答部分帖子:

现在要定义这个 sidecar 容器,我想避免更改供应商定义的部署脚本。相反,我想要一些替代方法将 sidecar 容器附加到正在运行的 pod。

下面我介绍了两种将边车添加到Deployment 的方法。 这两种方法都会重新加载 Pods 以匹配新规范:

  • 使用$ kubectl patch
  • 编辑Helm 图表并使用$ helm upgrade

在这两种情况下,我都鼓励您检查 Kubernetes 如何处理其资源的更新。您可以通过以下链接阅读更多内容:



使用$ kubectl patch

完全避免编辑 Helm 图表的方法是使用:

  • $ kubectl patch

此方法将“修补”现有的Deployment/StatefulSet/Daemonset 并添加边车。这种方法的缺点是它不像 Helm 那样自动化,您需要为每个资源(每个 Deployment/Statefulset/Daemonset 等)创建一个“补丁”。如果来自 Helm 等其他来源的任何更新,此“补丁”将被覆盖。

关于更新 API 对象的文档:


编辑Helm 图表并使用$ helm upgrade

此方法需要编辑 Helm 图表。添加边车之类的更改将在更新中持续存在。进行更改后,您需要使用$ helm upgrade RELEASE_NAME CHART

您可以在此处阅读更多信息:

【讨论】:

  • 最终我认为 helm 选项是最好的解决方案。可以将标志添加到图表的值文件中,以控制某些容器的部署。该标志的值可以保留为 false,因此默认行为是不创建容器,然后在部署或升级期间覆盖标志的值以将容器添加到新 pod。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2020-05-12
  • 2021-01-19
  • 1970-01-01
相关资源
最近更新 更多