繁体   English   中英

Kubernetes `client-go` - 如何在 pod 中获取容器状态

[英]Kubernetes `client-go` - How to get container status in a pod

在遵循thisthis之后,如何在 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.

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