【问题标题】:Kubernetes - trigger job when pod restartsKubernetes - pod重新启动时触发作业
【发布时间】:2021-07-15 01:24:23
【问题描述】:

我想在特定部署的 pod 重新启动时运行特定的 Kubernetes 作业。

特别是,我有一个 Redis 部署。它没有永久存储支持。当 Redis 部署中的 pod 重新启动时,我想在 Redis 中填充一些键。

有没有办法在 pod 重启时触发作业?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    有一种方法可以使用以下命令重新运行作业:

    kubectl get job <job name> -n <namespace> -o json | jq 'del(.spec.selector)' | jq 'del(.spec.template.metadata.labels)'| kubectl replace --force -f -
    

    这可行,但它不是完全自动的。

    比较有效的解决方案是将job中与单个pod相关的命令复制到pod的deployment中。然后每当它重新启动时,这些命令就会运行。

          containers: 
          - name: <container name>
            command:
              - /bin/sh
              - -c
              - |
                <first command>;
                <second command>;
    

    【讨论】:

      【解决方案2】:

      我想到的最佳选择是 k8s 运算符 - 一个简单的 python/go 脚本监视您的目标 pod(按标签、名称、命名空间等)并在状态更改时执行一些操作。

      操作员只是具有特殊功能的部署。有多种实现方式,其中一种是https://sdk.operatorframework.io/docs/building-operators/golang/quickstart/

      您也可以使用https://github.com/kubernetes-client/python#examples(查看第二个示例)。

      您可以摆脱这项工作,并在运算符本身内部编写您的 redis 逻辑。

      【讨论】:

        猜你喜欢
        • 2021-12-18
        • 1970-01-01
        • 2021-06-28
        • 2022-10-13
        • 2022-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多