タイトルで述べたように、APIからK8sクラスター名を見つけることは可能ですか? APIを調べてみましたが、見つかりませんでした。
残念ながら、クラスターはそれ自身の名前、またはクラスターを一意に識別する他の名前を知りません( K8s issue#44954 )。 helm issue#2055 について知りたかった。
kubectl config current-context
はトリックを実行します(プロジェクト名、地域などのように、もう少し出力しますが、必要な答えが得られるはずです)。
質問はあまりよく説明されていません。ただし、この質問がGoogle Container Engine
に関連している場合、coreypobrienが述べたように、クラスターの名前はノードのカスタムメタデータに保存されます。ノード内から次のコマンドを実行すると、出力はクラスターの名前になります。
curl http://metadata/computeMetadata/v1/instance/attributes/cluster-name -H "Metadata-Flavor: Google"
ユースケースを指定していただければ、それをカバーするために答えを拡張できるかもしれません。
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
K8sクラスター名があるとは思わない。このコマンドはいくつかの素晴らしい情報を提供できます
kubectl cluster-info
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 {
現在の設定を取得するのと同じですが、以下のコマンドは明確な出力を提供します。
kubectl config view
$ kubectl config get-clusters->既存のクラスターのリストを取得する