今天线上打镜像发现编译机出问题了,查看了pod发现k8s的nginx-ingress一直在crash,于是查看了日志,发现一直在报:

2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: bind() to 0.0.0.0:80 failed (98: Address already in use)
2022/03/02 02:43:29 [emerg] 36#36: still could not bind()
W0302 02:43:32.515637       7 controller.go:220] Dynamic reconfiguration failed: Post http+unix://nginx-status/configuration/backends: read unix @->/tmp/nginx-status-server.sock: read: connection reset by peer

发现有其他进程占用了80端口,导致nginx-ingress一直绑定不上,最后crash了。
使用命令

sudo netstat -ntlp | grep :80

发现是kube-proxy占用了80端口,那么剩下的问题就简单了,将kube-proxy所在的pod删除就行。

kubectl delete pod kube-proxy-xxxx -n kube-system

相对的如果是其他进程占用了80端口,那么也可以直接kill -9 pid即可

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐