gpt4 book ai didi

kubernetes - 将时间戳附加到 kubernetes --watch-only 命令

转载 作者:行者123 更新时间:2023-12-04 14:12:23 27 4
gpt4 key购买 nike

我正在运行 Kubernetes 作业,我想在其中监视状态。我正在运行各种 --watch-only同时命令,例如kubectl get pods --watch-only ,它向我展示了 Pod 的更新状态。但是,我想在输出中附加时间戳和一些字符串。
这个想法是知道状态何时发生变化,并添加额外的信息作为字符串。
我怎样才能做到这一点?

最佳答案

使原始海报在评论中发布的问题的潜在解决方案更加可见:

This is what i found working so far kubectl get pods --watch-only | while read line ; do echo -e "$(date +"%Y-%m-%d %H:%M:%S.%3N")\t pods\t $line" ; done


使用的命令:
  • $ kubectl get pods --watch-only | while read line ; do echo -e "$(date +"%Y-%m-%d %H:%M:%S.%3N")\t pods\t $line" ; done

  • 解决方案是正确的,但状态的变化( PENDINGRUNNINGSUCCEEDED/COMPLETED )需要从上述命令中进一步提取(假设进一步的操作)。

    从不同的角度来看,您可以使用 official Kubernetes API library监控 Pod 和作业的状态并据此采取行动(例如:在作业成功时做某事)。

    我创建了一个 示例 带有 Kubernetes Python API 库的应用程序来查看 pod 和作业的状态。
    假如说:
  • 您有一个可用的 Kubernetes 集群 kubectl已配置
  • 您已经安装了 Python 和所需的库:
  • $ pip install kubernetes


  • 使用 Job 的示例:

    Kubernetes.io: Docs: Concepts: Job


    Pod 示例
    下面是 Python3 中的示例代码,当 pod 的状态设置为 Succeeded 时,它将监视 pod 并打印一条消息。 :
    from kubernetes import client, config, watch
    from datetime import datetime

    config.load_kube_config()

    v1 = client.CoreV1Api()
    w = watch.Watch()
    for event in w.stream(v1.list_namespaced_pod, namespace="default", watch=False):
    print("POD_NAME: " + event['object'].metadata.name) # print the name
    print("TIME: " + str(datetime.now())) # print the time
    print("PHASE: " + event['object'].status.phase) # print the status of the pod
    print("CUSTOM AMAZING TEXT HERE!")

    if (event['object'].status.phase == "Succeeded") and (event['type'] != "DELETED"): # do below when condition is met
    print ("----> This pod succeeded, do something here!")
    print("---")
    这将产生类似于下面的输出:
    POD_NAME: pi-pjmm5
    TIME: 2020-09-06 15:28:01.541244
    PHASE: Pending
    CUSTOM AMAZING TEXT HERE!
    ---
    POD_NAME: pi-pjmm5
    TIME: 2020-09-06 15:28:03.894063
    PHASE: Running
    CUSTOM AMAZING TEXT HERE!
    ---
    POD_NAME: pi-pjmm5
    TIME: 2020-09-06 15:28:09.044219
    PHASE: Succeeded
    CUSTOM AMAZING TEXT HERE!
    ----> This pod succeeded, do something here!
    ---
    作业示例
    下面是 Python3 中的示例代码,当作业状态设置为 Succeeded 时,它将监视作业并打印一条消息。 :
    from kubernetes import client, config, watch
    from datetime import datetime

    config.load_kube_config()

    v1 = client.BatchV1Api()
    w = watch.Watch()
    for event in w.stream(v1.list_namespaced_job, namespace="default", watch=False):
    print("JOB_NAME: " + event['object'].metadata.name)
    print("TIME: " + str(datetime.now()))
    print("STATUS: " + event['type'])
    print("CUSTOM AMAZING TEXT HERE!")

    if (event['object'].status.succeeded == 1) and (event['type'] != "DELETED"):
    print ("----> This job succeeded, do something here!")
    print("---")
    这将产生类似于下面的输出:
    JOB_NAME: pi
    TIME: 2020-09-06 15:32:49.909096
    STATUS: ADDED
    CUSTOM AMAZING TEXT HERE!
    ---
    JOB_NAME: pi
    TIME: 2020-09-06 15:32:49.936856
    STATUS: MODIFIED
    CUSTOM AMAZING TEXT HERE!
    ---
    JOB_NAME: pi
    TIME: 2020-09-06 15:32:56.998511
    STATUS: MODIFIED
    CUSTOM AMAZING TEXT HERE!
    ----> This job succeeded, do something here!
    ---

    关于kubernetes - 将时间戳附加到 kubernetes --watch-only 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63252502/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com