【问题标题】:Kubernetes `client-go` - How to get container status in a podKubernetes `client-go` - 如何在 pod 中获取容器状态
【发布时间】:2020-11-22 04:53:32
【问题描述】:

关注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 中实现这一点?

【问题讨论】:

    标签: go kubernetes kubernetes-go-client


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢@kergeodeta。我已经关注了这篇文章。还更新了我的问题。请检查
    猜你喜欢
    • 2019-05-20
    • 2019-12-09
    • 2019-03-05
    • 2019-11-22
    • 1970-01-01
    • 2018-11-27
    • 2021-08-10
    • 2020-02-14
    • 2019-07-21
    相关资源
    最近更新 更多