如何从K8s API中获取Kubernetes集群名称

106

如标题所述,是否可以从API中找出K8s集群的名称?我查看了API但没有找到。

在API中无法找到K8s集群名称。
17个回答

1

这将返回一个集群名称。

K8s: kubectl config view -o jsonpath='{.clusters[].name}{"\n"}'

Openshift: oc config view -o jsonpath='{.clusters[].name}{"\n"}'


2
这是不正确的!它只返回第一个群集名称。这可能与当前上下文的群集不同。 - Polymerase

1
我找到的解决方案是从kubeConfig对象中读取当前上下文。 例如,使用NPM @kubernetes/client-node:
const k8s = require('@kubernetes/client-node');
const kubeConfig = new k8s.KubeConfig();
kubeConfig.loadFromFile(process.env.KUBECONFIG_PATH);
clusterName = kubeConfig.getCurrentContext();

0
kubectl config get-clusters
    
kubectl config get-contexts

0

$ kubectl config get-clusters --> 获取现有集群列表


0

有一个很棒的工具叫做kubectxhttps://github.com/ahmetb/kubectx

kubectx - 列出所有先前添加的集群,并突出显示当前使用的集群。这只需要输入一个单词,而不是kubectl config current-context

kubectx <cluster> - 切换到所选的集群。

此外,这个工具还带有kubens,它对命名空间执行完全相同的操作:

kubens - 列出所有命名空间并显示当前命名空间,

kubens <namespace> - 切换到所选的命名空间。


0
使用Python k8s客户端。但这无法与incluster_kubeconfig一起使用。
from kubernetes import config

cluster_context = config.kube_config.list_kube_config_contexts()
print (cluster_context)
([{'context': {'cluster': 'k01.test.use1.aws.platform.gov', 'user': 'k01-test'}, 'name': 'k01.test.use1.aws.platform.gov'}], {'context': {'cluster': 'k01.test.use1.aws.platform.gov', 'user': 'k01-test'}, 'name': 'k01.test.use1.aws.platform.gov'})

cluster_name = cluster_context[1]['context']['cluster']
print (cluster_name)
k01.test.use1.aws.platform.gov

0
使用 kubectl 命令:
$ kubectl config get-clusters
NAME
kubernetes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接