如标题所述,是否可以从API中找到K8s群集名称?我环顾了API并找不到它。
答案 0 :(得分:10)
kubectl config current-context
可以解决这个问题(它会输出更多的内容,例如项目名称,区域等,但是它应该会为您提供所需的答案)。
答案 1 :(得分:8)
我不相信有一个k8s群集名称。这个命令可以提供一些很好的信息
kubectl cluster-info
答案 2 :(得分:8)
这个问题并没有得到很好的描述。但是,如果此问题与Google Container Engine
有关,那么当coreypobrien提到群集的名称存储在节点的自定义元数据中时。从节点内部运行以下命令,输出将是集群名称:
curl http://metadata/computeMetadata/v1/instance/attributes/cluster-name -H "Metadata-Flavor: Google"
如果您指定用例,我可以扩展我的答案以涵盖它。
答案 3 :(得分:3)
kubernetes API对GKE群集名称了解不多,但您可以轻松地从Google metatdata服务器获取群集名称
listObject?.Delete();
listObject = sheet.ListObjects.Add(Source: ((Worksheet)sheet).Range["D3"]);
答案 4 :(得分:2)
不幸的是,群集不知道它自己的名称,或其他任何唯一标识它的名称(K8s issue #44954)。我想知道helm issue #2055。
答案 5 :(得分:2)
$ kubectl config get-clusters - >为您提供现有集群列表
答案 6 :(得分:2)
如果您在.kube / config文件中拥有的名称足以满足您的需要,那么此单线代码可以解决问题:
kubectl config view --minify -o jsonpath='{.clusters[].name}'
注释1:这里的--minify
是关键,因此它将仅输出您当前上下文的名称。这里还发布了其他类似的答案,但是如果没有“最小化”,您将在配置中列出可能使您感到困惑的其他上下文。
注意2:。.kube / config中的名称可能不反映您的云提供商中的名称,如果文件是由云提供商自动生成的,则该名称应匹配,如果您手动配置了该名称您可以为本地配置键入任何名称。
注意3::不要依赖kubectl config current-context
,它只返回上下文的名称,而不返回集群的名称。
答案 7 :(得分:1)
与获取当前配置相同,但是以下命令给出了清晰的输出:
kubectl config view
答案 8 :(得分:0)
对于使用kubeadm
安装的集群,存储在kubeadm-config
configmap中的配置具有安装集群时使用的集群名称。
$ kubectl -n kube-system get configmap kubeadm-config -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kubeadm-config
namespace: kube-system
data:
ClusterConfiguration: |
clusterName: NAME_OF_CLUSTER
对于将CoreDNS用于其DNS的群集,来自kubeadm的“群集名称”也用作域后缀。
$ kubectl -n kube-system get configmap coredns -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
kubernetes NAME_OF_CLUSTER.local in-addr.arpa ip6.arpa {
答案 9 :(得分:0)
如您所知,此命令将检查所有可能的群集。KUBECONFIG可能具有多个上下文
kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
您将得到类似的输出
Cluster name Server
kubernetes https://localhost:6443
答案 10 :(得分:0)
这恰好返回一件事,集群名称
kubectl配置视图-o jsonpath ='{。clusters []。name} {“ \ n”}' oc config view -o jsonpath ='{。clusters []。name} {“ \ n”}'
答案 11 :(得分: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
答案 12 :(得分:0)
至少对于 kubespray 集群,以下对我有用
kubectl config current-context | cut -d '@' -f2