67

次のコマンドが正常に機能するように、クラスターに関する情報を含む admin.conf ファイルがあります。

kubectl --kubeconfig ./admin.conf get nodes

configkubectl で、このファイルのクラスター、ユーザー、および認証をデフォルトとして 1 つのコマンドで使用するにはどうすればよいですか? 別の set-cluster、set-credentials、set-context、use-context などしか表示されません。単純に実行すると同じ出力が得られます。

kubectl get nodes
4

9 に答える 9

17

答えが非常に堅実で有益なものになる前に、ここに 2 セント追加してみます。

kubeconfig優先順位を認識してファイルを構成する

を使用している場合、使用するkubeconfigファイルkubectlを決定する際に有効になる設定は次のとおりです。

  1. --kubeconfig指定されている場合はフラグを使用
  2. KUBECONFIG指定されている場合は、環境変数を使用します
  3. $HOME/.kube/configファイルを使用

これにより、コマンドごとに使用するkubeconfigファイルを簡単にオーバーライドできます。kubectl

#
# using --kubeconfig flag
#
kubectl get pods --kubeconfig=file1
kubectl get pods --kubeconfig=file2

#
# or 
# using `KUBECONFIG` environment variable
#
KUBECONFIG=file1 kubectl get pods
KUBECONFIG=file2 kubectl get pods

#
# or 
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

注:--minifyフラグを使用すると、そのコンテキストに関する情報のみを抽出でき、フラグ--flattenを使用すると、資格情報を編集せずに保持できます。

あなたの例では

kubectl get pods --kubeconfig=/path/to/admin.conf

#
# or:
#
KUBECONFIG=/path/to/admin.conf kubectl get pods

#
# or: 
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date)
KUBECONFIG= $HOME/.kube/config:/path/to/admin.conf kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

この優先順位リストはドキュメントで正式に指定されていませんが、ここで体系化されています。Kubernetes 用のクライアント ツールを開発している場合は、プログラムに標準のフラグと検出をもたらすcli-runtimeライブラリの使用を検討する必要があります。--kubeconfig$KUBECONFIG

参照記事: https://ahmet.im/blog/mastering-kubeconfig/

于 2019-08-13T13:12:05.667 に答える
8

kubectl~/.kube/configデフォルトの構成ファイルとして使用します。したがって、それをコピーするだけadmin.confです。

于 2016-11-06T11:07:43.110 に答える