[英]How can I get events messages from a pod from Kubernetes using client-go API?
[英]Kubernetes `client-go` - How to get container status in a pod
在遵循this和this之后,如何在 Pod 中观察容器状态(如果容器崩溃、完成等)并在 Pod 中容器状态发生变化时触发事件?
假设我有一个带有 2 个容器的 Pod:
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
app: busybox
spec:
containers:
- image: busybox
name: busybox5
command:
- sleep
- "5"
imagePullPolicy: IfNotPresent
- image: busybox
name: busybox50
command:
- sleep
- "50"
imagePullPolicy: IfNotPresent
restartPolicy: Never
我想在busybox5
容器完成执行而不是busybox50
时收到通知。 我使用告密者做了以下类似的事情:
UpdateFunc: func(oldObj, obj interface{}) {
mObj := obj.(v1.Object)
log.Printf("%s: Updated", mObj.GetName())
},
这很简单。 但它如何在多容器 Pod 中工作? 如果我只想在 Pod 中处理有关busybox5
容器的事件怎么办。 如何在 Go 中实现这一点?
我认为你需要客户去告密者。 这是关于它们的一个很好的教程: https://firehydrant.io/blog/stay-informed-with-kubernetes-informers/
您可以为运行容器的 Pod 创建一个异步事件侦听器,然后当其中一个容器状态发生更改时,Pod 状态也会更改(已更新,因此您应该侦听更新事件)。 所以你从你的 pod 中得到了更新事件,毕竟你需要得到 Pod 硬币容器。
我希望你正在寻找这个:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.