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