web-dev-qa-db-ja.com

Azureのリモートkubernetesクラスターにアクセスするためのkubectlコマンドの構成

Azureでkubernetesクラスターを実行しています。ローカルkubectlコマンドからクラスターにアクセスする方法は何ですか。 here を参照しましたが、kubernetesマスターノードにはkube configファイルがありません。また、kubectl configビューの結果は

apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
21
Phagun Baya

クラスター内のノードの1つにsshすることなく、リモートkubernetesクラスターにアクセスする方法を見つけました。以下のように〜/ .kube/configファイルを編集する必要があります。

apiVersion: v1 
clusters:    
- cluster:
    server: http://<master-ip>:<port>
  name: test 
contexts:
- context:
    cluster: test
    user: test
  name: test

次に、次を実行してコンテキストを設定します。

kubectl config use-context test

この後、クラスターと対話できるようになります。

注:証明書とキーを追加するには、次のリンクを使用してください: http://kubernetes.io/docs/user-guide/kubeconfig-file/

または、次のコマンドを試すこともできます

kubectl config set-cluster test-cluster --server=http://<master-ip>:<port> --api-version=v1
kubectl config use-context test-cluster
47
Phagun Baya

--kubeconfigパラメーターを渡すことにより、kubeconfigのファイルパスを定義することもできます。

たとえば、リモートKubernetesホストの~/.kube/configをローカルプロジェクトの~/myproject/.kube/configにコピーします。 ~/myprojectでは、kubectl get pods --kubeconfig ./.kube/configを実行して、リモートKubernetesサーバーのポッドをリストできます。

リモートKubernetesサーバーから値をコピーする場合、構成ファイルの秘密が表示されないため、単純なkubectl config viewでは十分ではないことに注意してください。代わりに、cat ~/.kube/configのような処理を行うか、scpを使用してファイルの内容全体を取得する必要があります。

参照: https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/

8
toldjuuso

K8sマシンで.kubeディレクトリを見つけます。
linux/Unixでは、/ root/.kubeにあります。
Windowsでは、C:/ User //。kubeにあります
構成ファイルをk8sクラスターの.kubeフォルダーからローカルマシンの.kubeフォルダーにコピーします。
クライアント証明書のコピー:/etc/cfc/conf/kubecfg.crt
クライアントキー:/etc/cfc/conf/kubecfg.key
ローカルマシンの.kubeフォルダーに。
ローカルマシンの.kubeフォルダー内の構成ファイルを編集し、ローカルマシン上のkubecfg.crtおよびkubecfg.keyのパスを更新します。
/etc/cfc/conf/kubecfg.crt-> C:\ Users\.kube\kubecfg.crt
/etc/cfc/conf/kubecfg.key-> C:\ Users\.kube\kubecfg.key
これで、クラスターと対話できるようになります。 「kubectl get pods」を実行すると、k8sクラスターにポッドが表示されます。

1
Gajendra D Ambi

クラウドプロバイダーのvmを使用して手動で作成されたクラスターの場合は、~/.kube/configからkubeconfigを取得するだけです。ただし、GKEのようなマネージドサービスの場合、gcloudに依存して、適切なトークンでランタイムに生成されたkubeconfigを取得する必要があります。

通常、生成されたトークンで適切なkubeconfigを取得するのに役立つサービスアカウントを作成できます。同様の何かがAzureにもあります。

0
Santosh

元々kopsクラスターを作成したクライアントとは異なるクライアントでkubectlをセットアップしようとしていました。これがAzureで機能するかどうかはわかりませんが、AWSがサポートする(kops)クラスターでは機能しました。

kops/kubectl-別のサーバーで作成された状態をインポートするにはどうすればよいですか?

0
Geremy

クラスターをどのようにセットアップしましたか?クラスターにリモートでアクセスするには、kubeconfigファイル(ファイルがないように見えます)が必要です。セットアップスクリプトは、クラスター展開プロセスの一部としてローカルkubeconfigファイルを生成します(そうしないと、展開したばかりのクラスターが使用できないため) 。他の誰かがクラスターをデプロイした場合は、リンクしたページの指示に従って、クラスターに接続するために必要なクライアント資格情報のコピーを取得する必要があります。

0
Robert Bailey

Azureセットアップは、sshポートのみを外部に公開します。これは./output/kube_xxxxxxxxxx_ssh_confにあります。sshポートトンネルを追加して、マシンでsshをトンネルできるようにしました。上記のファイルに移動して、「Host *」セクションの下に次のような行を追加します。

LocalForward 8080 127.0.0.1:8080

これは、ローカルマシンのポート8080(kubectlがデフォルトコンテキストを検索する場所)を、マスターがapi呼び出しをリッスンするリモートマシン8080のポートにマップします。通常のドキュメントが示すように、sshをkube-00に開くと、追加の構成なしでローカルkubectlからの呼び出しを実行できるようになりました。

0
aofry