Ответ 1
Я смог запустить с чем-то простым:
kubectl proxy --address='0.0.0.0' --disable-filter=true
Вопрос Kubernetes о новичках (или, скорее, базовый): Установлен одиночный мини-куб node (выпуск 0.23) в ящике ubuntu, запущенном на моем языке (по IP-адресу 192.168.0.20) с помощью виртуального бокса.
Команда запуска minikube также успешно завершена
minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
панель инструментов minikube также подходит успешно. (работает на 192.168.99.100:30000)
то, что я хочу сделать, - это доступ к панели инструментов minikube из моей macbook (работает на 192.168.0.11) в той же локальной сети.
Также я хочу получить доступ к одной и той же панели мониторинга minikube из Интернета.
Для доступа к локальной сети: Теперь из того, что я понимаю, я использую virtualbox (опция vm по умолчанию), я могу изменить тип сети (на NAT с переадресацией портов) с помощью команды vboxnet
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
как указано здесь
В моем случае это будет что-то вроде этого
VBoxManage modifyvm "VM name" --natpf1 "guesthttp,http,,30000,,8080"
Я думаю о правильных строках здесь?
Также для удаленного доступа к одному и тому же адресу панели мини-коммутатора, я могу настроить службу no-ip.com как услугу. Они попросили установить свою утилиту в linux box, а также настроить переадресацию портов в настройках маршрутизатора, которые будут перенаправляться с порта хоста на гостевой порт. Это верно? Я что-то пропустил?
Я смог запустить с чем-то простым:
kubectl proxy --address='0.0.0.0' --disable-filter=true
Способ ssh
Предположим, что у вас есть ssh в вашем блоке ubuntu.
Сначала запустите kubectl proxy &
, чтобы открыть панель управления на http://localhost:8001
Затем выведите панель управления с помощью перенаправления портов ssh, выполнив:
ssh -R 30000:127.0.0.1:8001 [email protected]
Теперь вы должны получить доступ к панели управления из своего macbook в своей локальной сети, указав браузер на http://192.168.0.20:30000
Чтобы открыть его извне, просто выведите порт 30000 с помощью no-ip.com, возможно, измените его на какой-то стандартный порт, например 80.
Обратите внимание, что это не самое простое решение, но в некоторых местах работало бы без прав суперпользователя;) Вы можете автоматизировать логин после перезапуска окна ubuntu с помощью init script и установки открытого ключа для подключения.
@Джефф дал идеальный ответ, давай больше советов новичкам.
Запустите прокси-сервер, используя скрипт @Jeff, по умолчанию он откроет прокси-сервер на 0.0.0.0:8001.
kubectl proxy --address='0.0.0.0' --disable-filter=true
Посетите панель инструментов по ссылке ниже:
curl http://your_api_server_ip:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
Более подробную информацию вы можете найти в официальном документе.
Недавно у меня была такая же проблема, и я решил ее следующим образом:
bridge
. Для меня это было сделано путем изменения виртуальной машины minikube в пользовательском интерфейсе VirtualBox и требовало остановки/запуска виртуальной машины. Не уверен, как это будет работать, если вы используете гиперкит. Не связывайтесь с сетевыми адаптерами по умолчанию, настроенными minikube: от них зависит minikube. https://github.com/kubernetes/minikube/issues/1471Добавьте кластер и связанную конфигурацию к ~/.kube/config
, как показано ниже, изменив IP-адрес сервера в соответствии с вашим недавно выставленным IP-адресом виртуальной машины. Имена также могут быть изменены при желании. Обратите внимание, что insecure-skip-tls-verify: true
необходим, потому что сертификат https, сгенерированный minikube, действителен только для внутренних IP-адресов виртуальной машины.
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://192.168.0.101:8443
name: mykubevm
contexts:
- context:
cluster: mykubevm
user: kubeuser
name: mykubevm
users:
- name: kubeuser
user:
client-certificate: /Users/myname/.minikube/client.crt
client-key: /Users/myname/.minikube/client.key
Скопируйте файлы ~/.minikube/client.*
, на которые есть ссылки в конфигурации, с вашего хоста Linux Minikube. Это файлы ключей безопасности, необходимые для доступа.
Установите контекст kubectl: kubectl config set-context mykubevm
. На этом этапе ваш кластер миникубов должен быть доступен (попробуйте kubectl cluster-info
).
Запустите kubectl proxy http://localhost:8000
, чтобы создать локальный прокси для доступа к панели мониторинга. Перейдите по этому адресу в вашем браузере.
Также возможно ssh к миникубе VM. Скопируйте пару ключей ssh из ~/.minikube/machines/minikube/id_rsa*
в каталог .ssh (переименование, чтобы избежать удаления других ключей, например mykubevm
и mykubevm.pub
). Тогда ssh -i ~/.ssh/mykubevm [email protected]<kubevm-IP>
Незначительные изменения в подходе выше.
У меня есть веб-сервис http с NodePort 30003. Я делаю его доступным через порт 80, запустив:
sudo ssh -v -i ~/.ssh/id_rsa -N -L 0.0.0.0:80:localhost:30003 ${USER}@$(hostname)
Джефф Прути добавил полезный ответ:
Я смог запустить что-то такое простое, как:
kubectl proxy --address='0.0.0.0' --disable-filter=true
Но для меня это не сработало изначально.
Я запускаю эту команду на компьютере CentOS 7 с запущенным kubectl (локальный IP: 192.168.0.20).
Когда я попытался получить доступ к панели мониторинга с другого компьютера (который, очевидно, находился в локальной сети):
http://192.168.0.20:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/
тогда в моем веб-браузере был только тайм-аут.
Решение для моего случая состоит в том, что в CentOS 7 (и, возможно, других дистрибутивах) вам нужно открыть порт 8001
в брандмауэре ОС.
Так что в моем случае мне нужно работать в терминале CentOS 7:
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload
И после этого. Оно работает! :)
Конечно, вы должны знать, что это небезопасное решение, потому что сейчас у кого-нибудь есть доступ к вашей панели инструментов. Но я думаю, что для локального лабораторного тестирования этого будет достаточно.
В других дистрибутивах Linux команда для открытия портов в брандмауэре может отличаться. Пожалуйста, используйте Google для этого.
Спасибо за ваши ценные ответы. Если вам нужно использовать прокси-команду kubectl, которая не может быть просмотрена постоянно, используйте объект "Сервис", указанный ниже, в файле YAML, который можно просматривать удаленно, пока вы не остановите его. Создайте новый файл yaml minikube-dashboard.yaml
и напишите код вручную, я не рекомендую копировать и вставлять его.
apiVersion : v1
kind: Service
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard-test
namespace: kube-system
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9090
nodePort: 30000
selector:
app: kubernetes-dashboard
type: NodePort
Выполнить команду,
$ sudo kubectl apply -f minikube-dashboard.yaml
Наконец, откройте URL:http://your-public-ip-address:30000/#!/persistentvolume?namespace=default