【问题标题】:Execute command in Helm Chart在 Helm Chart 中执行命令
【发布时间】:2020-11-14 09:59:29
【问题描述】:

我有一个 Cassandra 的 Helm Chart,它运行良好,我能够连接到它并运行 cqlsh 命令。
我想在图表中添加一个 Helm Hook。我已经设法做到了,但是,我无法在容器中执行 cqlsh 。这是我要在post-install 阶段执行的 Kubernetes 作业。

apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  template:
    metadata:
     name: hook-job
     annotations:
       "helm.sh/hook": post-install
       "helm.sh/hook-delete-policy": hook-succeeded
   spec:
     containers:
     - name: cqlsh-cmd
       image: <cassandra-image>
       command: ["bin/sh", "-c", "cqlsh"]
     restartPolicy: OnFailure
 

但是,没有找到 cqlsh 命令。

总的来说,我不得不重复使用我在 Helm Chart 中定义的同一个容器,这似乎很奇怪。我做错了吗?

【问题讨论】:

  • 可能是您的命令中的拼写错误,请尝试["/bin/sh", "-c", "cqlsh"]。如果这不起作用,您使用的是哪个
  • 您好,您使用 edbighead 提供的评论解决了您的问题吗?
  • 部分,现在我收到另一条消息“无法连接到任何服务器”,“连接被拒绝”

标签: kubernetes cassandra kubernetes-helm cql cqlsh


【解决方案1】:

您的吊舱/容器当时可能还没有启动。在后期生命周期下使用。

  spec:
    containers:
    - name: cqlsh-cmd
      image: <cassandra-image>
      lifecycle:
        postStart:
          exec:
            command: ["/bin/sh", "-c", "
                set -x\n
                while true;\n
                do\n
                  echo 'looking cassandra...,'\n
                  timeout 1 bash -c 'cat < /dev/null > /dev/tcp/localhost/9042'\n
                  exitCode=$?\n

                  if [ $exitCode = 0 ]; then\n
                    cqlsh /** your command **/ \n
                    break;\n
                  fi\n
                  sleep 1s\n
                done\n
              "]

【讨论】:

猜你喜欢
  • 2021-07-13
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多