【发布时间】:2021-04-04 20:14:07
【问题描述】:
我正在尝试将两个 nodejs 应用程序放到同一个 pod 中,因为通常它们应该位于同一台机器上,并且不幸的是,它们以这样一种方式紧密耦合在一起,以至于它们中的每一个都在寻找另一个的文件夹(pos /app.js 需要 /pos-service,而 pos-service/app.js 需要 /pos)
最后,文件夹应该包含:
/pos
/pos-service
他们的卷不需要是持久的,所以我尝试与如下所示的 emptyDir 共享他们的卷:
apiVersion: apps/v1
kind: Deployment
metadata:
name: pos-deployment
labels:
app: pos
spec:
replicas: 1
selector:
matchLabels:
app: pos
template:
metadata:
labels:
app: pos
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: pos-service
image: pos-service:0.0.1
volumeMounts:
- name: shared-data
mountPath: /pos-service
- name: pos
image: pos:0.0.3
volumeMounts:
- name: shared-data
mountPath: /pos
但是,当 Pod 启动时,我执行到每个容器中时,它们似乎仍然是孤立的,并且看不到彼此的文件夹
希望有任何帮助,谢谢
【问题讨论】:
-
看起来不错。 k8s有example work吗?您映射目录的方式与第一段中的解释相反。会不会是这个问题?
-
如果它们是共享代码库的同一个应用程序,您能否将它们构建到同一个映像中?仅使用您显示的 YAML,就不会将任何内容复制到
emptyDir卷中,除非映像的启动知道这样做。 -
@DavidMaze 所以最后我将它们构建到同一个图像中,永远运行服务,并且通常使用节点运行 pos - 我知道这是不好的做法,但它们高度耦合..
-
@Matt 我尝试完全像示例一样,似乎这是我对它的工作原理的误解 - 它只是打开一个可以共享文件的空文件夹,我最初认为它会挂载每个容器的所有文件到每个文件夹 - 所以我放弃了这个解决方案,因为我不能在这个空间中使用符号链接
标签: kubernetes kubernetes-pod persistent-volumes kubernetes-container