从列表中获取字符串

Getting just a string from a list

如何只从“标签”获得 1 个输出?

尝试执行 -o=jsonpath='{.metadata.labels[0]}' 希望获得第一个字符串,但出现错误。

 "metadata": {
        "labels": {
            "beta.kubernetes.io/arch": "amd64",
            "beta.kubernetes.io/os": "linux",
            "kubernetes.io/arch": "amd64",
            "kubernetes.io/hostname": "143.110.156.190",
            "kubernetes.io/os": "linux",
            "node-role.kubernetes.io/controlplane": "true",
            "node-role.kubernetes.io/etcd": "true",
            "node-role.kubernetes.io/worker": "true"
        },

metadata.labels 不是数组,所以不要认为“{.metadata.labels[0]}”会起作用。

也许您可以尝试使用 shell 获取第一个值,如下所示:

kubectl get ingress -o json | jq '.items[0].metadata.labels' | head -2 |tr -d , |cat - <(echo "}") | jq

Kubectl 使用 JSONPath 表达式过滤 JSON 对象中的特定字段并格式化输出:

kubectl get ingress -o=jsonpath='{.items[0].metadata.labels}'

参考使用以下 link: https://kubernetes.io/docs/reference/kubectl/jsonpath/