
Я экспериментирую со своим собственным небольшим кластером 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).