我正在使用Windows 10 Pro计算机。
运行netstat
时,它显示kubernetes:port
作为活动连接中的外部地址。
这是什么意思?我已经检查过,并且我的机器上没有正在运行的kubernetes集群。
如何关闭这些连接?
Minikube状态:
$ minikube status
host:
kubelet:
apiserver:
kubectl:
答案 0 :(得分:6)
发生这种情况是因为netstat
呈现输出的方式。它与实际的Kubernetes无关。
我有适用于Windows的Docker Desktop,它将其添加到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
将显示创建它们的应用程序)。与Kubernetes无关。
答案 1 :(得分:1)
好的,看来您的minikube
实例确实已删除。请记住,在 Linux 或其他基于
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
只不过是您的计算机/ VM /实例之一的hostname
。也许您在其中运行了minikube
的{{1}}就是那个主机,这就是为什么此主机名当前出现在活动网络连接中的原因。基本上,它与运行 kubernetes集群无关。
为清楚起见,您可以kubernetes
cat
文件的内容,并寻找条目/etc/hosts
。然后,您可以将它们与网络接口地址进行比较(运行kubernetes
)。 ip -4 a
中的kubernetes
条目很可能被映射到其中之一。
让我知道是否可以澄清您的疑问。
我已经在我的Linux实例的 Minikube 上重现了该文件,并注意到了完全相同的行为,但是看起来好像建立/etc/hosts
之后才显示已建立的连接。 minikube stop
之后,他们消失了。看起来那些连接确实属于kubernetes的各个组成部分,但由于某种原因并未终止。基本上,关闭已建立的网络连接是创建它们的应用程序的责任,并且由于某种原因,minikube似乎没有终止它们。
如果您运行:
minikube delete
它另外显示了sudo netstat -ntp ### important: it must be run as superuser
列,您可以在其中查看通过哪个程序特定的连接。您将看到许多PID/Program name
网络连接,它们属于ESTABLISHED
和etcd
。
首先,我尝试重新引导整个实例。显然它关闭了所有连接,但随后我进行了几次验证,看来成功执行的kube-apiserver
也关闭了所有连接。
另外,您可能希望通过运行以下命令检查可用的Docker容器:
minikube delete
或:
docker ps
在停止minikube实例之后,它仍然显示那些容器,并且看起来像docker container ls
命令仍显示与某些 kubernetes 组件**的许多连接的原因。
然而,netstat
和minikube delete
与{strong> kubernetes集群组件的连接不再可用。
答案 2 :(得分:1)
似乎Windows docker更改了您的hosts
文件。
因此,如果要摆脱这些连接,只需注释掉hosts
文件中的相应行。
Windows 10上的hosts
文件位于C:\Windows\System32\drivers\etc
中,并且
记录可能类似于127.0.0.1 kubernetes.docker.internal
。
我很确定它将破坏Windows上的docker服务(但是,我不是专家),所以当您需要恢复docker服务时,请不要忘记取消注释这些行。