首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用kubectl命令获取集群id

如何使用kubectl命令获取集群id
EN

Stack Overflow用户
提问于 2018-06-26 18:03:04
回答 1查看 8.9K关注 0票数 2

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

代码语言:javascript
复制
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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 06:42:06

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

代码语言:javascript
复制
"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,并相应地进行解析。

示例:

代码语言:javascript
复制
kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}' | jq '.cluster_id'
"xxx"

如果安装jq失败了任何目的,我建议使用现有工具的组合(假设您使用的是Linux),如grepawksed

代码语言:javascript
复制
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
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51040132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档