【问题标题】:Find created POD name from JOB name using Kubernetes/OpenShift API使用 Kubernetes/OpenShift API 从 JOB 名称中查找创建的 POD 名称
【发布时间】:2020-02-02 23:05:10
【问题描述】:

我想通过作业控制器使用 OpenShift 或 Kubernetes REST API 查找创建的 Pod 的作业名称。

使用 CLI,这可以通过以下方式实现:

$ oc describe job testapi | grep -A 4 Events
Events:
  Type    Reason            Age   From            Message
  ----    ------            ----  ----            -------
  Normal  SuccessfulCreate  6m    job-controller  Created pod: testapi-gff8c

我们可以使用 REST API 做同样的操作吗?

我想获取 Pod 名称以获取 Job 生成的所有 pod 的日志。

【问题讨论】:

    标签: kubernetes openshift


    【解决方案1】:

    describe 命令聚合多个结果以提供其输出,因此您需要做一些额外的工作。

    调用events端点并使用jq之类的工具解析结果,或者可以通过grep部分提取。

    这是一个假设作业名称为 testapi 且命名空间为 myproject 的示例:

    curl -H "Authorization: Bearer $(oc whoami -t)" -k https://127.0.0.1:8443/api/v1/namespaces/myproject/events?fieldSelector=involvedObject.name%3Dtestapi%2CinvolvedObject.namespace%3Dmyproject%2CinvolvedObject.kind%3DJob | grep Created

    【讨论】:

    • 确实!为了与 oc describe 功能相同,我要补充一点,我们应该将 Job UID 与“involvedObject.uid”匹配。这是针对我们创建了多个同名作业的情况。你怎么看?
    • 是的,并且可能通过管道传输到 jq 以准确解析结果
    猜你喜欢
    • 2019-02-12
    • 2020-11-02
    • 2018-05-03
    • 2017-07-05
    • 2018-12-12
    • 2019-02-06
    • 2019-06-03
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多