繁体   English   中英

Kube.netes - pod 重启时触发作业

[英]Kubernetes - trigger job when pod restarts

每当特定部署的 pod 重新启动时,我想运行特定的 Kube.netes 作业。

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

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

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

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

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

您可以摆脱这项工作并在操作员本身内部编写您的 redis 逻辑。

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

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>;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM