kubectl を使用してリモート minikube クラスターに接続する

kubectl を使用してリモート minikube クラスターに接続する

ローカル (Mac) kubectl を使用してリモートの minikube クラスター (Ubuntu ボックス) に接続できるかどうかを確認したいと考えています。現在 Docker を使用しており、 を使用してこれを簡単に実行できますdocker-machine。マシン名を eval するだけで、docker はリモート マシンを使用します。

minikube/kubectl にも同様のものがあるかと思いました。リモート ディレクトリをローカルにコピーして、いくつかの設定を変更する必要があると記載されている記事をいくつか見つけました~/.minikube。しかし、これは、ツールがdocker-machineシームレスに実行するものとしてはかなり複雑に思えます。

同様のツールはありますか? ない場合は、リモート クラスターに接続するために必要な手順について誰かが助けてくれますか?

リモートマシン 現在、私はdockerドライバーを使用しています (これはコマンドの完全な出力であり、1 行のみです)。

$ minikube config view
- driver: docker

数多くのNodePortサービスがあります:

$ kubectl get service -A
NAMESPACE     NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       apigateway        NodePort    10.100.122.255   <none>        8080:30601/TCP           19h
default       discoveryserver   NodePort    10.101.106.231   <none>        8761:30602/TCP           19h
default       elasticsearch     NodePort    10.97.197.14     <none>        9200:30604/TCP           19h
default       harness           NodePort    10.97.233.245    <none>        9090:30603/TCP           19h
default       kubernetes        ClusterIP   10.96.0.1        <none>        443/TCP                  19h
default       mongo             NodePort    10.97.172.108    <none>        27017:32625/TCP          19h
kube-system   kube-dns          ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   19h
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/meanwhileinhell/.minikube/ca.crt
    server: https://192.168.50.2:8443   <<<<<< `minikube ip`
  name: minikube
contexts:
- context:
    cluster: minikube
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /home/meanwhileinhell/.minikube/profiles/minikube/client.crt
    client-key: /home/meanwhileinhell/.minikube/profiles/minikube/client.key

ローカルマシン

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority: /Users/mih.mac/remote/.minikube/ca.crt
    server: https://192.168.1.5:8443   <<<<<< Static IP of my remote machine
  name: minikube
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: minikube
    user: minikube
  name: minikube
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: minikube
  user:
    client-certificate: /Users/mih.mac/remote/.minikube/client.crt
    client-key: /Users/mih.mac/remote/.minikube/client.key

答え1

利用できるツールはありません。 minikube にリモートでアクセスするには、SSH トンネリングを実行します。

1- Mac から Ubuntu ボックスに SSH 接続できる必要があります。

2-適切なSSHポート転送フラグを追加します。次のコマンドを実行します。

ssh -N -p 22 <user>@<public_ip> -L 127.0.0.1:18443:<minikube_ip>:8443

どこ:

ユーザーはあなたの名前です

public_ipはサーバーのパブリックIPです

minikube_ip は minikube の IP アドレスです。これは、コマンド minikube ip を使用してサーバー上で見つけることができます。おそらく 192.168.49.2 になります。

3- 次に、適切な K8s 資格情報を Mac 上の kubectl に入力します。

詳細については、次のリンクを参照してください。

https://www.zepworks.com/posts/access-minikube-remotely-kvm/ https://www.chevdor.com/post/2021/02/docker_to_k8s/

答え2

kubectl からリモート minikube クラスターに接続する手順:

  1. パブリックインターフェースでリッスンする minikube クラスターを作成し、生成された証明書にリモートホスト名や IP アドレスを追加します。 minikube start --listen-address=0.0.0.0 --apiserver-names=example.com --apiserver-ips=1.2.3.4
  2. docker psAPI サーバーのパブリック ポートを取得するために使用します。minikube コンテナー内の 8443 ポートにプロキシする必要があります (次のようになります0.0.0.0:32774->8443/tcp- ポートは 32774 です)
  3. minikube の kube 構成を取得しminikube kubectl -- config view、ローカル ファイルに保存します (例~/minikube.config)
  4. 編集clusters[0].cluster.serverフィールド~/minikube.config- 手順2で取得した適切なリモートホストとポートに設定します
  5. 証明書とキー用のローカル ディレクトリを作成します。mkdir -p ~/.minikube/profiles/minikube
  6. client.keyをminikubeホストからローカルホストに コピーしclient.crtます。ca.crtscp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/scp 'example.com:.minikube/ca.crt' ~/.minikube/
  7. ローカルで実行kubectl --kubeconfig ~/minikube.config get pod -Aして動作するか確認する

答え3

socat を使用して、minikube のデフォルト IP とポート (192.168.49.2:8443) をシステムのデフォルト ネットワーク カード IP に転送できます。

socat TCP4-LISTEN:8443,fork TCP4:192.168.49.2:8443

関連情報