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

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

Я экспериментирую со своим собственным небольшим кластером Kubernetes.

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

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

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

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

GitLab'sхостПорт: 54321не отображается с sudo lsof -i. Почему так? Я не могу объяснить это с моими ограниченными знаниями.

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

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

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

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

решение1

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

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

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

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


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

Связанный контент