【问题标题】:How to make the Kubernetes pod aware of new file changes?如何让 Kubernetes pod 知道新的文件更改?
【发布时间】:2021-04-11 19:23:57
【问题描述】:

有没有办法让 Kubernetes Pod 知道新的文件更改?

比方说,我有一个运行 Kubernetes(K8) 的 pod,创建了 4 个副本,我还创建了一个 K8 PV,并将其附加到外部文件系统,我们可以在其中修改文件。让我们考虑 K8 pod 正在运行 一个应用程序名为 test_app 的 tomcat 服务器,它位于容器内的以下目录中 tomcat/webapps/test_app/ 在 test_app 目录中,我有几个子目录,如下所示 测试应用程序/xml test_app/属性 test_app/jsp

所有这些子目录都附加到一个卷上,并安装到一个外部文件系统上。任何有权访问外部文件系统的人都将更新 xml/properties/jsp 文件。 当这些文件在外部文件系统中发生更改时,它将反映在子目录 test_app/xml、test_app/properties、test_app/jsp 中,并且我们附加了一个 PV。但是除非我们重新启动 Tomcat 服务器,否则这些更改不会反映在 Web 应用程序中。要重启tomcat服务器,我们需要重启pod。

所以每当有人对外部文件系统中存在的文件进行任何更改时,我如何让 K8 知道有一些新的更改需要重新启动 Pod? 现在在 Kubernetes 中是否有可能?

【问题讨论】:

  • 你能说得更具体点吗?您想在 pod 中进行更改,更改一些变量、图像等,或者您想问是否需要在 PV 中更改某些内容?在大多数情况下,pod 更改需要重新启动,但如果您在 PV pod 中添加新文件,应该会立即看到该文件。或者您的 pod 需要对这个新文件做些什么?
  • @PjoterS 我已经用更多细节编辑了我的问题

标签: docker kubernetes volume kubernetes-pod persistent-volumes


【解决方案1】:

如果您指的是文件更改意味着您的应用程序的更改,最佳做法是使用您的应用程序代码烘焙一个容器映像,并在您需要部署新代码时推送一个新的容器映像。为此,您可以修改 Kubernetes 部署以指向最新的摘要哈希。

例如,在部署 YAML 文件中:

image: myimage@sha256:digest0

变成

image: myimage@sha256:digest1

然后kubectl apply 将是一种方法。

您可以阅读有关在 Kubernetes 中使用容器映像的更多信息here

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多