web-dev-qa-db-ja.com

K8s APIからKubernetesクラスター名を取得する方法

タイトルで述べたように、APIからK8sクラスター名を見つけることは可能ですか? APIを調べてみましたが、見つかりませんでした。

31
Alex

残念ながら、クラスターはそれ自身の名前、またはクラスターを一意に識別する他の名前を知りません( K8s issue#44954 )。 helm issue#2055 について知りたかった。

5
tback

kubectl config current-contextはトリックを実行します(プロジェクト名、地域などのように、もう少し出力しますが、必要な答えが得られるはずです)。

15
usamec

質問はあまりよく説明されていません。ただし、この質問がGoogle Container Engineに関連している場合、coreypobrienが述べたように、クラスターの名前はノードのカスタムメタデータに保存されます。ノード内から次のコマンドを実行すると、出力はクラスターの名前になります。

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

ユースケースを指定していただければ、それをカバーするために答えを拡張できるかもしれません。

8
Kamran

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
7
coreypobrien

K8sクラスター名があるとは思わない。このコマンドはいくつかの素晴らしい情報を提供できます

kubectl cluster-info

7
Jonathan MULLER

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

DNSにCoreDNSを使用しているクラスターの場合、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 {
1
Evgeny

現在の設定を取得するのと同じですが、以下のコマンドは明確な出力を提供します。

kubectl config view

1
Binoy Thomas

$ kubectl config get-clusters->既存のクラスターのリストを取得する

0