在生产设置中使用 volumeMounts.subPath 从根本上来说是错误的吗?

Is it fundamentally wrong to use volumeMounts.subPath in a production setup?

我可以使用 volumeMounts.subPath 属性将不同目录挂载到同一容器的不同挂载点。

生产环境可以用这个吗?我正在使用 AWS EFS 作为我的持久存储。

This 医生说不推荐。使用这个有什么注意事项?

简答

在生产中使用subPath绝对没问题

详细解答

使用 subPath 的 Kubernetes 示例。

这句话是什么意思“不建议将此示例子路径配置用于生产用途。”意思就是不推荐这个示例,不是subPath用法。

该示例在单个 pod 中包含前端和后端应用程序的容器,这对于生产使用来说是根本错误的方法(用于测试它是否适用)。

在生产中,前端和后端应用程序应该分离到不同的部署中,这将允许:

  • 前后端应用分开管理
  • 容错 - 在单个 pod 中,如果其中一个应用程序崩溃,整个 pod 都会受到影响
  • pod 是一次性单元,对于数据库,应该使用单独的 pods 集(如 statefulset),它允许保持粘性会话和数据持久性,即使 pod 崩溃了

subPath 漏洞

先搞清楚how subPath works,了解可以引入什么risks/vulnerabilities。

我至少找到了两个:

两者都与今天一样固定。使用包含针对不同问题(包括上述两个问题)的修复程序的最新可用版本非常重要。

由于 kubernetes 开发人员修复了与 subPath 相关的漏洞,因此可以在生产集群中安全使用。