Nodeport SFTP / S SH тайм-аут подключения при использовании kube-proxy ipvs - PullRequest
0 голосов
/ 04 августа 2020

В настоящее время мы осуществляем переход с Docker Swarm на k8s (голый металл) и не можем подключиться к службе SFTP в модуле. Сервис:

Name:                     mlflow-artifacts-store
Namespace:                mlflow
Labels:                   app.kubernetes.io/instance=mlflow-artifacts-store
                          app.kubernetes.io/managed-by=Helm
                          app.kubernetes.io/name=mlflow-artifacts-store
                          helm.sh/chart=mlflow-artifacts-store-0.1.0
Annotations:              meta.helm.sh/release-name: mlflow-artifacts-store
                          meta.helm.sh/release-namespace: mlflow
Selector:                 app.kubernetes.io/instance=mlflow-artifacts-store,app.kubernetes.io/name=mlflow-artifacts-store
Type:                     NodePort
IP:                       10.233.24.136
Port:                     ssh  80/TCP
TargetPort:               22/TCP
NodePort:                 ssh  30001/TCP
Endpoints:                10.233.93.77:22
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Но я не могу связаться с ним даже с того же сервера: (Тайм-аут добавлен для демонстрации)

OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u  20 Dec 2019
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 10.233.24.136 [10.233.24.136] port 30001.
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u7
Connection timed out during banner exchange
Couldn't read packet: Connection reset by peer

Сам сервер доступен из другого модуля в то же пространство имен - поэтому я предполагаю, что это, вероятно, как-то связано с выставлением самого себя или конфигурации NodePort.

Открытие службы с помощью hostPort работает, но я не хочу раскрывать его так Что мне не хватает?

1 Ответ

0 голосов
/ 12 августа 2020

Итак, после обсуждения всего этого на github поведение предполагается. При использовании kube-proxy с ipvs служба недоступна для интерфейса ipvs0. https://github.com/kubernetes/kubernetes/issues/93674#issuecomment -669200021

ipvs отключен по умолчанию и представляет собой фиктивную сеть без трафика c. В документации это написано как

По умолчанию --nodeport-addresses - пустой список. Это означает, что kube-proxy должен учитывать все доступные сетевые интерфейсы для NodePort.

Но ipvs0 недоступен - это предназначено. Итак, ответ: вы должны использовать реальный адрес узла.

...