VirtualBox Debian VM 上のリモート Minikube クラスターにアクセスするための kubectl コマンドの設定

VirtualBox Debian VM 上のリモート Minikube クラスターにアクセスするための kubectl コマンドの設定

シンプルなクラスター Debian VM を使用して Debian Minikube を正常にセットアップしました。

umen@debian12:~$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
hello-77c947d946-jq2s4   1/1     Running   0          45m
hello-77c947d946-wm6n2   1/1     Running   0          45m

umen@debian12:~$ minikube service list -p multinode-demo
|-------------|------------|--------------|---------------------------|
|  NAMESPACE  |    NAME    | TARGET PORT  |            URL            |
|-------------|------------|--------------|---------------------------|
| default     | hello      |           80 | http://192.168.49.2:31000 |
| default     | kubernetes | No node port |                           |
| kube-system | kube-dns   | No node port |                           |
|-------------|------------|--------------|---------------------------|

umen@debian12:~$ curl http://192.168.49.2:31000
Hello from hello-77c947d946-wm6n2 (10.244.1.2)

ご覧の通り、すべての作業は

今、私のWindowsホストでこのクラスターに接続しようとしています。Debianサーバーから証明書をダウンロードしました

./kube/config_debian を実行します。

apiVersion: v1
clusters:
- cluster:
    certificate-authority: debian/ca.crt
    extensions:
    - extension:
        last-update: Mon, 23 Oct 2023 08:54:23 IDT
        provider: minikube.sigs.k8s.io
        version: v1.31.2
      name: cluster_info
    server: https://192.168.49.2:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Mon, 23 Oct 2023 08:54:23 IDT
        provider: minikube.sigs.k8s.io
        version: v1.31.2
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: debian/client.crt
    client-key: debian/client.key

接続しようとすると次のメッセージが表示されます:

$ kubectl -v=8 --kubeconfig=config_debian get pods
I1023 10:55:55.058414   16936 loader.go:372] Config loaded from file:  config_debian
I1023 10:55:55.154616   16936 cert_rotation.go:137] Starting client certificate rotation controller
I1023 10:55:55.154616   16936 round_trippers.go:432] GET https://192.168.49.2:8443/api?timeout=32s
I1023 10:55:55.155136   16936 round_trippers.go:438] Request Headers:
I1023 10:55:55.155136   16936 round_trippers.go:442]     Accept: application/json, */*
I1023 10:55:55.155136   16936 round_trippers.go:442]     User-Agent: kubectl.exe/v1.22.0 (windows/amd64) kubernetes/c2b5237
I1023 10:56:16.186405   16936 round_trippers.go:457] Response Status:  in 21031 milliseconds
I1023 10:56:16.186405   16936 round_trippers.go:460] Response Headers:
I1023 10:56:16.186405   16936 cached_discovery.go:121] skipped caching discovery info due to Get "https://192.168.49.2:8443/api?timeout=32s": dial tcp 192.168.49.2:8443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
I1023 10:56:16.188079   16936 round_trippers.go:432] GET https://192.168.49.2:8443/api?timeout=32s
I1023 10:56:16.188079   16936 round_trippers.go:438] Request Headers:
I1023 10:56:16.188079   16936 round_trippers.go:442]     Accept: application/json, */*
I1023 10:56:16.188079   16936 round_trippers.go:442]     User-Agent: kubectl.exe/v1.22.0 (windows/amd64) kubernetes/c2b5237
I1023 10:56:37.192081   16936 round_trippers.go:457] Response Status:  in 21003 milliseconds
I1023 10:56:37.192189   16936 round_trippers.go:460] Response Headers:
I1023 10:56:37.192189   16936 cached_discovery.go:121] skipped caching discovery info due to Get "https://192.168.49.2:8443/api?timeout=32s": dial tcp 192.168.49.2:8443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
I1023 10:56:37.193955   16936 shortcut.go:89] Error loading discovery information: Get "https://192.168.49.2:8443/api?timeout=32s": dial tcp 192.168.49.2:8443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
I1023 10:56:37.194510   16936 round_trippers.go:432] GET https://192.168.49.2:8443/api?timeout=32s
I1023 10:56:37.194510   16936 round_trippers.go:438] Request Headers:
I1023 10:56:37.195088   16936 round_trippers.go:442]     Accept: application/json, */*
I1023 10:56:37.195088   16936 round_trippers.go:442]     User-Agent: kubectl.exe/v1.22.0 (windows/amd64) kubernetes/c2b5237

仮想ボックスでは、次のようにポート転送を設定します。 ここに画像の説明を入力してください

問題は、なぜリモートクラスタに接続できないのかということです

答え1

によるとGithub の問題 #2575以下に説明する接続の問題の原因と軽減策を確認してください。

  1. Docker Toolbox (VirtualBox を使用した古いバージョン) と Docker for Windows (Hyper-V を使用) の両方がインストールされている場合に問題が発生している可能性があります。Docker Toolbox を削除して Docker for Windows を再インストールすると、問題が解決する場合があります。

  2. サーバーのリソースが不足していないか確認します。送信するリクエストの数を処理するのに十分なリソース (メモリなど) がサーバーにあることを確認します。

認証側では、以下の2つの手順を試し、ドキュメントに従ってください。検証なしの minikube TLS問題をさらに解決するのに役立つ可能性があります:

  1. 仮想ボックスでホスト 8443 から Minikube vm 8443 へのポート転送を設定する

  2. TLS 検証なしで新しいコンテキスト minikube-vpn を作成します。

関連情報