Подключитесь к удаленному кластеру Minikube с помощью kubectl.

Я хочу посмотреть, смогу ли я подключиться к удаленному кластеру minikube (коробка Ubuntu) с помощью локального (Mac) kubectl. В настоящее время я использую Docker и могу сделать это очень легко, используя . Просто введите имя машины, и докер будет использовать удаленную машину.

Мне было интересно, есть ли что-нибудь подобное для minikube/kubectl? Я нашел несколько статей, в которых упоминается, что мне нужно скопировать свой пульт~/.minikubeкаталог в мой локальный и измените некоторые настройки. Но это кажется довольно сложным для такого инструмента, какdocker-machineделает без проблем.

Доступен ли аналогичный инструмент или, если нет, может ли кто-нибудь помочь мне с действиями, необходимыми для подключения к удаленному кластеру?

Удаленная машина. В настоящее время я используюdockerдрайвер (это полный вывод команды, всего одна строка):

      $ 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

3 ответа

Инструмента нет. Способ удаленного доступа к Minikube — это туннелирование SSH.

1. Вам необходимо иметь возможность подключаться по SSH с Mac к Ubuntu.

2- Добавьте соответствующие флаги переадресации портов SSH. Выполните следующую команду.

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

Где:

пользователь - ваше имя

public_ip — публичный IP вашего сервера.

minikube_ip — IP-адрес миникуба, его можно найти на сервере с помощью команды minikube ip. Скорее всего, это будет 192.168.49.2.

3. Затем просто подключите соответствующие учетные данные K8s к kubectl на Mac.

Пожалуйста, перейдите по ссылке для получения дополнительной информации:

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

Шаги по подключению к удаленному кластеру Minikube из kubectl:

  1. создать кластер minikube, прослушивающий общедоступный интерфейс, добавить имя удаленного хоста и/или IP-адреса в сгенерированный сертификатminikube start --listen-address=0.0.0.0 --apiserver-names=example.com --apiserver-ips=1.2.3.4
  2. использоватьdocker psчтобы получить общедоступный порт для сервера API — он должен проксировать порт 8443 внутри контейнера minikube (это будет выглядеть так0.0.0.0:32774->8443/tcp- порт 32774)
  3. получить конфигурацию kube для minikube, используяminikube kubectl -- config viewи сохраните его в локальный файл (например)
  4. редактироватьclusters[0].cluster.serverполе в~/minikube.config- установите для него соответствующий удаленный хост и порт, полученные на шаге 2.
  5. создайте локальный каталог для сертификатов и ключа:mkdir -p ~/.minikube/profiles/minikube
  6. копироватьclient.key,client.crtиca.crtс хоста minikube на локальный хост:scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/иscp 'example.com:.minikube/ca.crt' ~/.minikube/
  7. запускать локальноkubectl --kubeconfig ~/minikube.config get pod -Aчтобы убедиться, что это работает

Вы можете использовать socat переадресовать IP-адрес и порт minikube по умолчанию (192.168.49.2:8443) на IP-адрес сетевой карты по умолчанию.

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

Другие вопросы по тегам