gpt4 book ai didi

kubernetes - 如何使用 kubectl 命令获取集群 ID

转载 作者:行者123 更新时间:2023-12-02 11:58:25 25 4
gpt4 key购买 nike

我需要使用 kubectl 命令的 cluster-id。

root@vagrant-xenial64:~# kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}'
{
"cluster_id": "xxx",
"cluster_name": "prod-yyy-mmm",
"cluster_type": "rrr",
"cluster_pay_tier": "vvv",
"datacenter": "cse",
"account_id": "456777",
"created": "2018-06-32323dffdf:35:48+0000"
}

我需要这个特定 json 的 cluster-id

root@vagrant-xenial64:~# kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json.cluster_id}'
root@vagrant-xenial64:~#

以上命令返回空字符串。我也尝试了很多其他组合

最佳答案

您的 ConfigMap 资源 data 字段包含一个字符串,当您运行 jsonpath 以通过 选择它时,该字符串将按原样解释'{.data.cluster-config\.json}'。我的意思是,尽管它在 Kubernetes 中的存储方式不同,但您使用的 shell 会将其打印为 stdout 中的 JSON。如果您运行 kubectl get cm cluster-info -n kube-system -o json 并查看 data 字段,它可能看起来像这样:

"data": {
"cluster-config.json": "{\n \"cluster_id\": \"xxx\",\n \"cluster_name\": \"prod-yyy-mmm\",\n \"cluster_type\": \"rrr\",\n \"cluster_pay_tier\": \"vvv\",\n \"datacenter\": \"cse\",\n \"account_id\": \"456777\",\n \"created\": \"2018-06-32323dffdf:35:48+0000\"\n}\n"
}

您将无法使用 jsonpath 访问该字符串中的“字段”,因为它实际上不是 ConfigMap API resource 字段的一部分。

您可以尝试使用第二个工具来获取它,使用 jq ,一个命令行 JSON 处理器。该工具会将 jsonpath 的输出即时解释为 JSON 并相应地对其进行解析。

例子:

kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}' | jq '.cluster_id'
"xxx"

如果安装例如jq 打败任何目的我建议使用现有工具的组合(假设您在 Linux 上),如 grepawksed:

kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}' | grep cluster_id | awk '{ print $2 }' | sed -e 's/"//' -e 's/",//'
xxx

关于kubernetes - 如何使用 kubectl 命令获取集群 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51040132/

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