netstat, показывающий иностранные порты как kubernetes: порт. Что это значит? - PullRequest
1 голос
/ 26 января 2020

Я использую Windows 10 Pro.

Когда я запускаю netstat, он показывает kubernetes:port как внешний адрес в активных соединениях.

Что это значит? Я проверил, и на моей машине не работает кластер kubernetes.

Как закрыть эти соединения?

enter image description here

РЕДАКТИРОВАТЬ: Состояние Minikube

$ minikube status
host:
kubelet:
apiserver:
kubectl:

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

Это происходит из-за того, как netstat отображает вывод, он не имеет ничего общего с настоящим Kubernetes.

У меня есть Docker Рабочий стол для Windows, и он добавляет это в файл hosts:

# Added by Docker Desktop
192.168.43.196 host.docker.internal
192.168.43.196 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section

Существует запись, которая сопоставляет 127.0.0.1 с kubernetes.docker.internal. Когда netstat рендерит свои выходные данные, он разрешает внешний адрес, просматривает файл hosts и видит эту запись. Там написано kubernetes, и это то, что вы видите в консоли. Вы можете попробовать изменить его на

127.0.0.1 tomato.docker.internal

. С помощью этого netstat будет напечатано:

  Proto  Local Address          Foreign Address        State
  TCP    127.0.0.1:6940         tomato:6941            ESTABLISHED
  TCP    127.0.0.1:6941         tomato:6940            ESTABLISHED
  TCP    127.0.0.1:8080         tomato:40347           ESTABLISHED
  TCP    127.0.0.1:8080         tomato:40348           ESTABLISHED
  TCP    127.0.0.1:8080         tomato:40349           ESTABLISHED

Так что на самом деле происходит подключение локального хоста к локальному (netstat -b покажет приложения которые их создают). Ничего общего с Кубернетесом.

0 голосов
/ 03 марта 2020

Кажется, что Windows docker изменил ваш hosts файл. Итак, если вы хотите избавиться от этих соединений, просто закомментируйте соответствующие строки в файле hosts.

Файл hosts в Windows 10 находится в C:\Windows\System32\drivers\etc, и записи могут выглядеть примерно как 127.0.0.1 kubernetes.docker.internal. Я почти уверен, что это нарушит вашу docker службу на Windows (но я не эксперт), поэтому не забывайте раскомментировать эти строки всякий раз, когда вам нужно вернуть службу docker. Надеюсь, это поможет.

0 голосов
/ 11 февраля 2020

ОК, похоже, ваш minikube экземпляр определенно удален. Имейте в виду, что в Linux или других системах на базе nix совершенно нормально, что многие процессы используют сетевые сокеты для связи друг с другом, например, вы увидите много установленных соединений с обоими для локальных и внешних адресов установлено значение localhost:

tcp        0      0 localhost:45402         localhost:2379          ESTABLISHED
tcp        0      0 localhost:45324         localhost:2379          ESTABLISHED
tcp        0      0 localhost:2379          localhost:45300         ESTABLISHED
tcp        0      0 localhost:45414         localhost:2379          ESTABLISHED
tcp        0      0 localhost:2379          localhost:45388         ESTABLISHED
tcp        0      0 localhost:40600         localhost:8443          ESTABLISHED

kubernetes в вашем случае является не чем иным, как hostname одной из ваших машин / виртуальных машин / экземпляров. Возможно тот, поверх которого вы запускали свой minikube, который вы назвали kubernetes, и именно поэтому это имя хоста в настоящее время появляется в ваших активных сетевых подключениях. По сути, это не имеет ничего общего с запуском кластера kubernetes .

. Чтобы сделать его более понятным, вы можете cat содержимое файла /etc/hosts и найти запись kubernetes. Затем вы можете сравнить их с адресами вашего сетевого интерфейса (запустите ip -4 a). Скорее всего, запись kubernetes в /etc/hosts сопоставлена ​​с одним из них.

Дайте мне знать, если это прояснит ваши сомнения.


РЕДАКТИРОВАТЬ:

I я воспроизвел его на Minikube на моем linux экземпляре и заметил точно такое же поведение, но похоже, что соединения ESTABLISHED отображаются только после успешного выполнения minikube stop. После minikube delete они ушли. Похоже, эти соединения действительно принадлежат различным компонентам kubernetes, но по какой-то причине не прекращаются. Ответственность за закрытие установленных сетевых подключений лежит на приложении, которое их создает, и, похоже, по какой-то причине minikube их не завершает.

Если вы запустите:

sudo netstat -ntp ### important: it must be run as superuser

, то дополнительно отобразится PID/Program name столбец, в котором вы можете видеть, по какой программе c установлено соединение. Вы увидите множество ESTABLISHED сетевых подключений, принадлежащих etcd и kube-apiserver.

Сначала я пытаюсь перезагрузить весь экземпляр. Он, очевидно, закрывает все соединения, но затем я проверил несколько раз, и похоже, что успешно выполненный minikube delete также закрывает все соединения.

Кроме того, вы можете проверить доступные контейнеры docker, выполнив:

docker ps

или:

docker container ls

После остановки экземпляра мини-куба он по-прежнему показывает эти контейнеры и выглядит как причина, по которой много соединений с определенными kubernetes компонентами ** по-прежнему отображаются командой netstat.

Однако после minikube delete ни containers, ни ESTABLISHED соединения с кластером kubernetes больше не доступны.

...