1

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

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

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

4

1 回答 1

1

回答评论中的问题:

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

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

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

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

-- Github.com:Kubernetes:问题:允许将容器添加到正在运行的 pod


回答帖子的一部分:

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

下面我介绍了两种将边车添加到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.

你可以在这里读更多关于它的内容:

于 2020-11-16T08:11:25.867 回答