Я не могу получить оболочку от localhost до Pod - PullRequest
0 голосов
/ 17 октября 2018

От Pod до localhost, ssh работает хорошо.И ping также хорошо работает друг с другом.В Pod есть centos7.Также, openssh-server установлен в Pod.Но всегда есть ошибка.

kubectl get pods -o wide

NAME                   READY   STATUS    RESTARTS   AGE   IP             NODE      NOMINATED NODE
hadoop-master-pod      1/1     Running   0          39m   10.244.9.25    slave10   <none>
hadoop-secondary-pod   1/1     Running   0          48m   10.244.11.11   slave12   <none>

ssh 10.244.9.25

ssh: connect to host 10.244.9.25 port 22: Connection refused

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

10.244.9.25 IP - это внутренний IP-адрес, предоставленный pod Kubernetes (вы можете прочитать больше о сетевой модели Kubernetes здесь ) для использования внутри кластера Kubernets, поэтому вы не сможете использовать SSH или дажепинговать эти IP-адреса из-за пределов кластера.Другими словами, сеть, содержащая 10.244.9.25, похожа на частную сеть внутри кластера K8, а ваш хост-компьютер (localhost) находится в другой сети.

Если вы хотите попасть в контейнер, например, здесь, вы можетеиспользуйте kubectl exec -it hadoop-master-pod -- /bin/bash или /bin/sh в зависимости от оболочки, установленной в контейнере, и вы можете делать все, что вы пытались сделать с помощью SSH, в модуль.

Если вы действительно хотите подключить SSH к модулю от localhost (вне кластера) вы можете написать сервис Kubernetes, возможно, предоставляющий более NodePort , который будет выставлять 22 (порт SSH по умолчанию) для внешнего через NodePort.

0 голосов
/ 17 октября 2018

Вы должны иметь возможность подключиться, используя kubectl exec -it hadoop-master-pod -- /bin/bash

. Затем вы можете проверить, поддерживает ли ваш модуль прослушивание порта 22 для 0.0.0.0

. Проверьте iptables, если ничего не заблокировано.

Убедитесь, что openssh работает и на каком порту он работает.

...