![](/img/trans.png)
[英]How to trigger a kubernetes/openshift job restart when ever a specific pod in the cluster will restart?
[英]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.