容器节点上端口被占用异常[docker-proxy] <defunct>,导致浏览器总是弹出输入用户名和密码的对话框

昨天晚上在测试环境中准备安装haproxy做个验证,开始发现80端口被占用

[root@vm-vmw45641-app syslog]# netstat -nltp|grep 80
tcp        0      0 172.20.209.28:2380      0.0.0.0:*               LISTEN      103060/etcd
tcp        0      0 0.0.0.0:30080           0.0.0.0:*               LISTEN      102588/kube-proxy
tcp6       0      0 :::80                   :::*                    LISTEN      120635/docker-prox
[root@vm-vmw45641-app syslog]# ps -ef|grep docker-proxy
root      30842  79215  0 22:22 pts/1    00:00:00 grep --color=auto docker-proxy
root     120017 101148  0 Aug22 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.-container-ip 172.19.0.2 -container-port 3306
root     120635 101148  0 Aug22 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.ontainer-ip 172.19.0.3 -container-port 8081
[root@vm-vmw45641-app syslog]# ps -ef|grep 101148
root      40410  79215  0 22:26 pts/1    00:00:00 grep --color=auto 101148
root     101148      1 10 Jul28 ?        3-20:28:47 /usr/bin/dockerd -H fd:// --containerd=/run/cod.sock
root     120017 101148  0 Aug22 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.-container-ip 172.19.0.2 -container-port 3306
root     120635 101148  0 Aug22 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.ontainer-ip 172.19.0.3 -container-port 8081

因为记不清楚之前是怎么配置的,手懒,直接给kill这个进程

[root@vm-vmw45641-app syslog]# kill -9 120635
[root@vm-vmw45641-app syslog]# ps -ef|grep docker-proxy
root      41283  79215  0 22:27 pts/1    00:00:00 grep --color=auto docker-proxy
root     120017 101148  0 Aug22 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.-container-ip 172.19.0.2 -container-port 3306
root     120635 101148  0 Aug22 ?        00:00:00 [docker-proxy] <defunct>

[root@vm-vmw45641-app ~]# netstat -nltp |grep 80
tcp        0      0 172.20.209.28:2380      0.0.0.0:*               LISTEN      103060/etcd       
tcp        0      0 0.0.0.0:30080           0.0.0.0:*               LISTEN      102588/kube-proxy 

发现80端口没了,haproxy也能正常启动,但访问是出现如下的问题:

第一次碰到这个问题,还以为是haproxy的问题。停了haproxy,端口已经不存在了,神奇的事情发生了,telnet这个端口居然仍能被访问。

[root@vm-vmw45641-app ~]# telnet 172.20.209.28 80
Trying 172.20.209.28...
Connected to 172.20.209.28.
Escape character is '^]'.
^CConnection closed by foreign host.

于是判定与haproxy无关,这个问题中间还怀疑是iptables的原因,还尝试重启iptables,结果也没用。想到之前的骚操作,还是认真点吧。重启docker看一下。

[root@vm-vmw45641-app ~]# systemctl stop docker
[root@vm-vmw45641-app ~]# systemctl start docker
[root@vm-vmw45641-app ~]# ps -ef|grep docker-proxy
root      11151  76872  0 23:13 pts/0    00:00:00 grep --color=auto docker-proxy
[root@vm-vmw45641-app ~]# telnet 172.20.209.28 80
Trying 172.20.209.28...
telnet: connect to address 172.20.209.28: Connection refused
[root@vm-vmw45641-app ~]#

还要处理点其它事,有些细节的地方还没有考虑清楚,就先这样吧。不过算是找到一种模拟端口异常的方法。

posted @ 2022-09-03 10:06  liujw2001  阅读(1510)  评论(0)    收藏  举报