如何在 Kubernetes 容器中传递多个命令?

问题描述 投票:0回答:2

我正在尝试在 Kubernetes 中部署一个容器,同时将文件从持久卷之一复制到特定目录。问题是,如果我立即运行该命令,它将在安装持久卷之前尝试复制文件。 我想帮助我使用语法来延迟复制命令几秒钟,直到安装持久卷。

我尝试像这样输入命令字段,但容器在部署 Pod 时崩溃。

    spec:
      containers:
      - image: andreask81/syspass:latest
        name: syspass-app
        command: ["/bin/bash"]
        args: ["sleep 30", "cp /var/www/html/sysPass/config/backup/config.xml /var/www/html/sysPass/config/config.xml"]

这个也不起作用,并导致 pod 在容器创建后立即崩溃。

command: ["/bin/bash","-c","sleep 10 && cp /var/www/html/sysPass/config/backup/config.xml /var/www/html/sysPass/config/config.xml"]

同时,当我直接在 shell 中的类似容器中运行以下命令时,它可以工作。

/bin/bash -c "sleep 1" && cp /var/www/html/sysPass/config/backup/config.xml /var/www/html/sysPass/config/config.xml

知道如何格式化 YAML 文件中的“command:”字段以使其工作吗?

docker kubernetes debian
2个回答
0
投票

在清单文件中,您没有将 -c 添加到命令值或参数的开头。这有什么原因吗?请添加它并再试一次:

spec:
  containers:
  - image: andreask81/syspass:latest
    name: syspass-app
    command: ["/bin/bash", "-c"]
    args: ["sleep 30 && cp /var/www/html/sysPass/config/backup/config.xml /var/www/html/sysPass/config/config.xml"]

0
投票

您还可以添加包含所需命令的 bash 脚本,并在 yaml 命令值上调用它。

保持清洁:)

© www.soinside.com 2019 - 2024. All rights reserved.