kubernetes(k8s) postStart hook如何设置多个命令?

识趣 发表于: 2022-02-27   最后更新时间: 2022-02-27 23:20:24   1,587 游览

在kubernetes Deployment的yaml文件中,有什么简单的方法可以在容器的postStart hook中运行多个命令?

我尝试如下:

lifecycle:
  postStart:
    exec:
      command: ["/bin/cp", "/webapps/myapp.war", "/apps/"]
      command: ["/bin/mkdir", "-p", "/conf/myapp"]
      command: ["touch", "/conf/myapp/ready.txt"]

但它没有起作用。
(看起来只有最后一条命令被执行)。

我知道我可以在容器镜像中嵌入一个脚本,并在那里简单地调用它... 但我希望能够在yaml文件中定制这些命令,而不需要触及容器镜像。

谢谢

发表于 2022-02-27

只允许一个命令,但你可以像如下这样使用sh -c

  lifecycle:
    postStart:
      exec:
        command:
          - "sh"
          - "-c"
          - >
            if [ -s /var/www/mybb/inc/config.php ]; then
            rm -rf /var/www/mybb/install;
            fi;
            if [ ! -f /var/www/mybb/index.php ]; then
            cp -rp /originroot/var/www/mybb/. /var/www/mybb/;
            fi
你的答案

查看kubernetes相关的其他问题或提一个您自己的问题