如何从K8S API获取Kubernetes集群名称

jdgnovmf  于 2022-09-20  发布在  Kubernetes
关注(0)|答案(9)|浏览(640)

如标题所述,是否可以从接口中查询到K8S集群名称?我环顾了一下API,但没有找到。

jecbmhm3

jecbmhm31#

kubectl config current-context做到了这一点(它输出的内容稍微多一点,比如项目名称、地区等,但它应该会给出您需要的答案)。

tgabmvqs

tgabmvqs2#

遗憾的是,集群不知道自己的名称,也不知道其他任何唯一标识它的名称(K8s issue #44954)。我想知道的是helm issue #2055

更新:常见的解决方法是创建一个包含集群名称的配置Map,并在需要时阅读该配置Map(#2055评论1244537799)。

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-info
  namespace: kube-system
data:
  cluster-name: foo
ui7jx7zq

ui7jx7zq3#

我不相信有K8S集群名称。此命令可以提供一些有用的信息
Kubectl集群信息

kiayqfof

kiayqfof4#

如果您在.kube/config文件中拥有的名称对您来说就足够了,下面这一行可以帮助您:

kubectl config view --minify -o jsonpath='{.clusters[].name}'

注1:--minify在这里是关键字,因此它将仅输出您当前上下文的名称。这里还有其他类似的答案,但如果没有“minify”,您将在您的配置中列出其他可能会让您困惑的上下文。

**注意2:*您的.kube/配置中的名称可能不会反映您的云提供商中的名称,如果文件是由云提供商自动生成的,则名称应该匹配,如果您手动配置,则可以仅为本地配置键入任何名称。

**注意3:*不要依赖kubectl config current-context这只返回上下文的名称,而不返回集群的名称。

dluptydi

dluptydi5#

这个问题没有得到很好的描述。然而,如果这个问题与Google Container Engine相关,那么正如coreypobrien所提到的,集群的名称存储在节点的定制元数据中。在节点内部,运行以下命令,输出将是集群名称:

curl http://metadata/computeMetadata/v1/instance/attributes/cluster-name -H "Metadata-Flavor: Google"

如果您指定了您的用例,我也许能够扩展我的答案以涵盖它。

ubof19bj

ubof19bj6#

Kubernetes API不太了解GKE集群名称,但您可以很容易地从Google元数据服务器获得集群名称,如下所示

kubectl run curl --rm --restart=Never -it --image=appropriate/curl -- -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name
nhhxz33t

nhhxz33t7#

这与获取当前配置相同,但以下命令会给出清晰的输出:

kubectl config view

ddhy6vgd

ddhy6vgd8#

如您所知,此命令将检查所有可能的集群。KUBECONFIG可能有多个上下文

kubectl config view -o jsonpath='{"Cluster nametServern"}{range .clusters[*]}{.name}{"t"}{.cluster.server}{"n"}{end}'

您将得到如下输出

Cluster name    Server
kubernetes      https://localhost:6443
nuypyhwy

nuypyhwy9#

至少对于库贝斯普赖斯集群来说,以下几点对我很管用

kubectl config current-context | cut -d '@' -f2

相关问题