gpt4 book ai didi

kubernetes - Kubernetes覆盖挂载和rsync

转载 作者:行者123 更新时间:2023-12-02 12:00:31 25 4
gpt4 key购买 nike

我正在尝试调整基于Kubernetes的应用程序,使其对开发更加友好。我正在使用kustomize将一些额外的容器添加到app-deployment中。看起来像这样:

apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
template:
spec:
volumes:
- name: php-src
emptyDir: {}
- name: nginx-src
emptyDir: {}
- name: webpack-src
emptyDir: {}
containers:
- name: lsyncd
image: axiom/rsync-server
ports:
- name: sshd
containerPort: 22
- name: rsyncd
containerPort: 873
env:
- name: USERNAME
value: user
- name: PASSWORD
value: pass
volumeMounts:
- name: php-src
mountPath: /data/php
- name: nginx-src
mountPath: /data/nginx
- name: webpack-src
mountPath: /data/webpack
- name: nginx
volumeMounts:
- name: nginx-src
mountPath: /app
- name: php
volumeMounts:
- name: php-src
mountPath: /app
- name: webpack
image: dreg.mpen.ca/kymark/webpack
imagePullPolicy: Never # https://stackoverflow.com/a/54043058/65387
ports:
- name: http
containerPort: 8082
livenessProbe:
httpGet:
port: http
path: /assets/manifest.json
initialDelaySeconds: 20
periodSeconds: 60
command: ['node','--max_old_space_size=20000','node_modules/.bin/webpack-dev-server']
volumeMounts:
- name: webpack-src
mountPath: /app
基本上,我添加了一个新的rsync服务器,该服务器具有3个卷,分别与要将代码上传到的3个不同的容器相对应。这部分工作很好;我可以将代码同步到容器中,并立即显示出来。
但是,nginx,PHP和Webpack镜像在该 /app目录中已经有一些代码(例如 node_modulesvendor)。当我安装在它的顶部时,它消失了(这很有意义,因为我正在安装 emptyDir)。但是我想做的是使用覆盖安装,这样我上传的所有代码都将被“覆盖”在已经存在的内容之上。
我可以那样做吗?怎么样?

最佳答案

不, Kuberentes 挂载,与不同,Docker 挂载不允许将一个目录挂载在另一个目录上。来自VOLUME的潜在Dockerfile行并不重要。
针对您的用例的常见解决方案是,在启动主容器之前,使用初始化容器来设置emptyDir。因此,基本上,您在初始化容器主容器中都将emptyDir指定为卷安装,并让初始化容器将文件复制到emptyDir中。
此外,有两个项目可以为您要实现的目标提供不同的解决方案:

  • https://github.com/ksync/ksync
  • https://github.com/telepresenceio/telepresence

  • 使用其中之一,您不需要在叠加层中自定义 rsync初始化容器设置。

    关于kubernetes - Kubernetes覆盖挂载和rsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63096610/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com