在生产设置中使用 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
相关的漏洞,因此可以在生产集群中安全使用。
我可以使用 volumeMounts.subPath
属性将不同目录挂载到同一容器的不同挂载点。
生产环境可以用这个吗?我正在使用 AWS EFS
作为我的持久存储。
This 医生说不推荐。使用这个有什么注意事项?
简答
在生产中使用subPath
绝对没问题
详细解答
使用 subPath
的 Kubernetes 示例。
这句话是什么意思“不建议将此示例子路径配置用于生产用途。”意思就是不推荐这个示例,不是subPath
用法。
该示例在单个 pod 中包含前端和后端应用程序的容器,这对于生产使用来说是根本错误的方法(用于测试它是否适用)。
在生产中,前端和后端应用程序应该分离到不同的部署中,这将允许:
- 前后端应用分开管理
- 容错 - 在单个 pod 中,如果其中一个应用程序崩溃,整个 pod 都会受到影响
- pod 是一次性单元,对于数据库,应该使用单独的 pods 集(如 statefulset),它允许保持粘性会话和数据持久性,即使 pod 崩溃了
subPath
漏洞
先搞清楚how subPath
works,了解可以引入什么risks/vulnerabilities。
我至少找到了两个:
两者都与今天一样固定。使用包含针对不同问题(包括上述两个问题)的修复程序的最新可用版本非常重要。
由于 kubernetes 开发人员修复了与 subPath
相关的漏洞,因此可以在生产集群中安全使用。