1

在遵循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 中工作?如果我只想busybox5在 Pod 中处理有关容器的事件怎么办。我怎样才能在 Go 中实现这一点?

4

1 回答 1

1

我认为你需要客户去告密者。这是关于它们的一个很好的教程:https ://firehydrant.io/blog/stay-informed-with-kubernetes-informers/

您可以为运行容器的 Pod 创建一个异步事件侦听器,然后当其中一个容器状态更改时,Pod 状态也会更改(已更新,因此您应该侦听更新事件)。所以你从你的 pod 中得到了更新事件,毕竟你需要得到 Pod 硬币容器。

我希望你正在寻找这个:)

于 2020-08-02T07:27:33.870 回答