【问题标题】:Copy files into kubernetes pod with deployment.yaml使用 deployment.yaml 将文件复制到 Kubernetes pod
【发布时间】:2020-04-11 16:18:12
【问题描述】:

我有用 Java 构建的容器化微服务。此应用程序在搜索属性文件时使用默认的 /config-volume 目录。
以前我通过Dockerfile 手动部署,现在我希望使用 Kubernetes 自动化这个过程。

容器映像会立即启动微服务,因此我需要立即将属性添加到 config-volume 文件夹。我用这个简单的Dockerfile 在 Docker 中完成了这个:

FROM ########.amazon.ecr.url.us-north-1.amazonaws.com/company/image-name:1.0.0

RUN mkdir /config-volume
COPY path/to/my.properties /config-volume

我试图在 kubernetes deployment.yaml 中复制这种类型的行为,但我没有找到办法。

我尝试在应用部署后立即执行kubectl cp 命令,它有时可以工作,但它可能会导致竞争条件导致微服务在启动时失败。

(我已经删除了不必要的部分)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-service
spec:
  replicas: 1
  template:
    spec:
      containers:
      - env:
        image: ########.amazon.ecr.url.us-north-1.amazonaws.com/company/image-name:1.0.0
        name: my-service
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /config-volume
          name: config-volume
      volumes:
        - name: config-volume
          emptyDir: {}
status: {}

有没有办法将文件复制到deployment.yaml 内的卷中?

【问题讨论】:

  • 我不知道为什么这被否决了。如果问题有问题,请评论您的想法。

标签: docker kubernetes


【解决方案1】:

您正在尝试使用卷模拟ConfigMap。相反,将您的配置放入ConfigMap,并将其安装到您的部署中。文档在那里:

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/

将您的配置设置为 ConfigMap 后,使用以下方式安装它:

...
  containers:
    - name: mycontainer
      volumeMounts:
      - name: config-volume
        mountPath: /config-volume
  volumes:
    - name: config-volume
      configMap:
        name: nameOfConfigMap

【讨论】:

  • 我会试一试,但这不是我想要的。在这种情况下,我正在尝试上传属性文件,但我希望能够将任意文件映射到卷中
  • Configmaps 可用于将任意文件挂载到 pod 上您到底想做什么?
  • 我想我误解了什么是 ConfigMap,这正是我需要的。
猜你喜欢
  • 2019-09-17
  • 2021-09-27
  • 2020-04-29
  • 2021-06-26
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多