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