Удаленный доступ Zero к JupyterHub через Ethe rnet с входом в Kubernets - PullRequest
0 голосов
/ 05 марта 2020

Контекст

Я установил Kubernetes на сервере без ПО (4 узла) и развернул на нем Zero to JupyterHub . Это прекрасно работает; Я могу правильно получить доступ к концентратору с главного узла.

Теперь я хочу получить доступ к концентратору на сервере с внешнего компьютера через Ethe rnet. Поэтому я следовал официальным инструкциям и установил MetalLB , чтобы предоставить внешний IP-адрес для моей proxy-publi c -сервиса (который правильно устанавливается) .
Кроме того, я установил 1039 * -ingress-controller , чтобы иметь возможность выполнять вход, который также успешно получает внешний IP-адрес (небольшой совет: используйте Helm -chart; я не смог запустить службу при применении других рекомендуемых шагов).

Поскольку у меня возникли небольшие проблемы с выяснением, как сделать этот вход, вот пример:

kubectl apply -f ingress.yaml --namespace jhub

#ingress.yaml:
#apiVersion: networking.k8s.io/v1beta1
#kind: Ingress
#metadata:
#  name: jupyterhub-ingress
#  annotations:
#    nginx.ingress.kubernetes.io/rewrite-target: /$1
#spec:
#  rules:
#  - host: jupyterhub.cluster
#    http:
#      paths:
#      - path: /
#        backend:
#          serviceName: proxy-public
#          servicePort: 80

Во всяком случае, я не могу открыть внешний IP proxy-publi c предоставляет (то есть я вставляю внешний IP в свой браузер).


Вопрос

Как я могу получить удаленный доступ к своему JupyterHub через внешний IP; что мне не хватает?

1 Ответ

1 голос
/ 05 марта 2020

Я пропустил, что это может быть достигнуто так же, как с Kubernetes-Dashboard : Вы должны установить sh открытое s sh -соединение (следовательно, открыть туннель -> туннелирование ) с внешнего компьютера.
Конечно, это не «внешний» доступ, который я имел в виду, а работающее и быстрое решение для моей тестовой среды (и, возможно, вашей).


Как установить sh это s sh -подключение

Сначала получите внешний IP-адрес вашего proxy-publi c:

$: kubectl get services --namespace jhub
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                      AGE
hub            ClusterIP      10.99.241.72     <none>          8081/TCP                     95m
proxy-api      ClusterIP      10.107.175.27    <none>          8001/TCP                     95m
proxy-public   LoadBalancer   10.102.171.162   192.168.1.240   80:31976/TCP,443:32568/TCP   95m

Примечание : диапазон внешнего IP-адреса был определен в моем layer2 в моем MetalLB -конфиге.

Используя эту информацию (и предполагая, что вы на Linux), откройте терминал и используйте следующую команду:

$ ssh pi@10.10.10.2 -L 8000:192.168.1.240:80
# -L opens a localhost-connection
# pi@10.10.10.2 logs me into my second node with user pi

Note1 : То localhost:8000 настроен как targetPort для proxy-publi c с http также можно увидеть, когда вы описываете сервис и смотрите спецификации портов (вы также можете получить настройки для https):

kind: Service
apiVersion: v1
metadata:
  name: proxy-public
  namespace: jhub
  ...
spec:
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 8000
      nodePort: 31976
    - name: https
...

Наконец, наберите http://localhost:8000/ в своем браузере - и вуаля, вы попадаете на страницу входа в JupyterHub!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...