首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在kubernetes中一次部署时覆盖文件?

如何在kubernetes中一次部署时覆盖文件?
EN

Stack Overflow用户
提问于 2017-12-16 19:36:51
回答 2查看 2.6K关注 0票数 0

我正在尝试在kubernetes中部署扩散镜像,并且我需要在部署时覆盖其中一个扩散配置文件。

实际上,它是一个在/opt/Diffusion6.0.3_01/etc/中具有默认凭据的SystemAuthentication.store文件。我正在秘密地存储新文件,并将其挂载到etc/test/中,这可以在下面的部署文件中看到。

代码语言:javascript
复制
template:
metadata:
  labels:
    run: diffusion
spec:
  serviceAccountName: diffusion-role
  volumes:
  - name: diffusion-secrets
    secret:
      secretName: diffusion-license
  - name: ssl-cert
    secret:
      secretName: ssl-certificate
  - name: system-authentication
    secret:
      secretName: system-authentication-store
  containers:
  - image: pushtechnology/diffusion:6.0.3
    imagePullPolicy: IfNotPresent
    name: diffusion
    ports:
    - containerPort: 8080
      protocol: TCP
    - containerPort: 8443
      protocol: TCP
    volumeMounts:
    - name: diffusion-secrets
      mountPath: /etc/diffusion-secrets
      readOnly: true
    - name: ssl-cert
      mountPath: /etc/test/
      readOnly: true
    - name: system-authentication
      mountPath: /etc/test/
    command: [ "/bin/sh", "-c", "cp etc/test/SystemAuthentication.store /opt/DIffusion6.0.3_01" ]

当我部署此映像pod时,出现以下错误

代码语言:javascript
复制
Events:
Type     Reason                 Age              From                                   Message
----     ------                 ----             ----                               -------
Normal   Scheduled              2m               default-scheduler                  Successfully assigned diffusion-db6d6df7b-f5tp4 to timmy.pushtechnology.com
Normal   SuccessfulMountVolume  2m               kubelet, timmy.pushtechnology.com  MountVolume.SetUp succeeded for volume "diffusion-role-token-n59ds"
Normal   SuccessfulMountVolume  2m               kubelet, timmy.pushtechnology.com  MountVolume.SetUp succeeded for volume "ssl-cert"
Normal   SuccessfulMountVolume  2m               kubelet, timmy.pushtechnology.com  MountVolume.SetUp succeeded for volume "system-authentication"
Normal   SuccessfulMountVolume  2m               kubelet, timmy.pushtechnology.com  MountVolume.SetUp succeeded for volume "diffusion-secrets"
Normal   Killing                1m (x2 over 1m)  kubelet, timmy.pushtechnology.com  Killing container with id docker://diffusion:FailedPostStartHook
Warning  BackOff                1m (x2 over 1m)  kubelet, timmy.pushtechnology.com  Back-off restarting failed container
Normal   Pulled                 1m (x3 over 2m)  kubelet, timmy.pushtechnology.com  Container image "pushtechnology/diffusion:6.0.3" already present on machine
Normal   Created                1m (x3 over 1m)  kubelet, timmy.pushtechnology.com  Created container
Normal   Started                1m (x3 over 1m)  kubelet, timmy.pushtechnology.com  Started container
Warning  FailedPostStartHook    1m (x3 over 1m)  kubelet, timmy.pushtechnology.com  
Warning  FailedSync             1m (x5 over 1m)  kubelet, timmy.pushtechnology.com  Error syncing pod

我也尝试过这里描述的工作方式:https://github.com/kubernetes/kubernetes/issues/19764#issuecomment-269879587

结果是一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-17 01:30:05

我认为@svenwtl answer可能是正确的,但是我正在使用的镜像的Dockerfile有一些复杂的结构,我不知道如何在部署文件中使用它们。对我有效的修复方法(在一个长的try/fail循环之后)是实际使用一个容器生命周期钩子:

代码语言:javascript
复制
    volumeMounts:
    - name: diffusion-secrets
      mountPath: /etc/diffusion-secrets
      readOnly: true
    - name: ssl-cert
      mountPath: /etc/test/
      readOnly: true
    - name: system-authentication
      mountPath: /etc/test1/
    lifecycle:
      postStart:
        exec:
          command: [ "/bin/sh", "-c", "cp -f /etc/test1/SystemAuthentication.store /opt/Diffusion6.0.3_01/etc/" ]

我还在不同的文件夹/etc/test1中安装了SystemAuthentication,但我不认为这是修复的一部分。

票数 -1
EN

Stack Overflow用户

发布于 2017-12-16 20:11:26

您使用cp etc/test/SystemAuthentication.store /opt/DIffusion6.0.3_01覆盖了容器命令,这是一个在完成后带有出口的命令。Kubernetes假设这是一个失败。

您需要将其替换为类似于cp etc/test/SystemAuthentication.store /opt/DIffusion6.0.3_01 && /path/to/original/binary的命令,其中最后一个命令是镜像将在不覆盖命令的情况下启动的命令。这取决于你的形象。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47845209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档