Назад | Перейти на главную страницу

Kubernetes hostPort: невидим для lsof?

Я играю со своим небольшим кластером Kubernetes.

Я пока не понимаю, как увидеть все открытые порты (= все, что слушают мои поды).

Я использую Traefik как вход с hostPorts: 80 и: 443 и я вижу это, слушая : 80 и : 443 когда я бегу sudo lsof -i.

Однако у меня также есть GitLab, работающий как Pod, и я назначил ему hostPort (54321), который указывает на порт стручков : 22. Я использую это для клонирования git.

Оба модуля имеют nodeSelector запустить только на мастере (... да, знаю.).

GitLab's hostPort: 54321 не появляется с sudo lsof -i. Это почему? Я не могу объяснить это с моими ограниченными знаниями.

С точки зрения конфигурации, единственное отличие Traefik Pods от Gitlab Pod заключается в том, что для Traefik hostPorts указать на тот же порт в модуле (: 80 ->: 80, : 443 ->: 443) в то время как для Gitlab Pod они отличаются (: 54321 ->: 22).

Кто-нибудь может мне это объяснить? Почему я не могу доверять lsof в таком случае?

Заранее спасибо!

пс. порт определенно открыт и слушает

HostPort GitLab: 54321 не отображается с sudo lsof -i. Это почему? Я не могу объяснить это с моими ограниченными знаниями.

lsof перечисляет информацию о файлы1 открыт процессы.

Там есть нет процесса на хосте, который держит hostPort открытым и, следовательно, ничего не отображается для lsof.

Наверное есть только сетевой фильтр (iptables) правило, которое перенаправляет трафик с этого порта на ваш Gitlab Pod. Проверить с sudo iptables-save и / или sudo iptables -L -v -n , sudo iptables -L -v -n -t security -t nat -t mangle


В очень широком смысле открытый файл может быть обычным файлом, каталогом, специальным файлом блока, специальным символьным файлом, исполняемой текстовой ссылкой, библиотекой, потоком или сетевым файлом (Интернет-сокет, файл NFS или сокет домена UNIX. )