我想使用新的“sidecar”功能来监视在作业中启动的容器。目标是监视主容器的stdout并对它的完成做出React。
对于最后一部分,我想使用钩子之类的东西在主容器完成时向边车发送一个事件(发送一封包含日志的电子邮件,移动一些文件,等等)。
你们有什么办法吗?
我的想法是这样的:
apiVersion: batch/v1
kind: Job
metadata:
name: job-wrapper
spec:
template:
spec:
initContainers:
- name: wrapper
image: busybox
restartPolicy: Always
command:
- "/bin/sh"
- "-c"
- |
while true; do
[ -e "start" ] && echo "started" || ([ -e "stop" ] && echo "stopped" || echo "init")
sleep 1
done
lifecycle:
postStart:
exec:
command: [ "sh", "-c", "echo Do something before main container && sleep 10 && touch start"]
preStop:
exec:
command: [ "sh", "-c", "echo Do something after main container && rm start && touch stop && sleep 10"]
startupProbe:
exec:
command: [ "sh", "-c", "test -f start"]
containers:
- name: application
image: busybox
command: ["sh", "-c", "echo Processing && sleep 10 && echo Processing end!"]
字符串
我可以在RedHat9上的k8s 1.28上通过在每个k8s系统pod上添加featureGate来启动该作业,但我仍然失败,因为Kubelet不识别initCOontainer的restartPolicy。我没有找到在Kubelet端激活featureGate的方法。
1条答案
按热度按时间xwbd5t1u1#
它在1.29上可以正常工作,因为Sidecar特性默认是开启的。