现象
例如:
http://bar.com
, 自动重定向到https://bar.com/harbor/sign-in
。- 即使配置ingress中
ssl-redirect:false
,其他的ingress,http://foo.com
也会重定向到https://foo.com/harbor/sign-in
。
解决问题
- 关闭nginx-ingress的
ssl-redirect
。关闭后,仍然重定向到https。一头雾水。难道是配置没有生效。 - 查看nginx-ingress-controller的
nginx.conf
配置,发现配置已经生效。那为什么还会重定向?这里我卡了很久都没有想明白。 - 直接把nginx-ingress删了重装,在删了nginx-ingress后,无意间访问ingress地址,还是有响应,那说明不是nginx-ingress的配置问题。
- 考虑到环境中使用ingress是通过配置主机的HOST文件实现,有可能会有两种情况:
- ip的80端口是nginx-ingress服务;
- ip的80端口不是nginx-ingress服务,然后它造成了http重定向到https。
我的故障是由于4.2 造成的。
问题分析
在kubernetes master节点上使用docker-compose
运行了harbor,使用docker-compose运行的harbor和nginx-ingress抢占kubernetes节点80端口。初次使用docker-compose部署harbor在nginx-ingress之后,无法使用一直被nginx-ingress占用的80端口,所以不妨碍其他k8s服务正常访问。当断电重启时,docker-compose运行的harbor在nginx前抢占80端口,造成nginx服务故障。故障的表现如上。
启发
不要再使用kubernetes的节点上部署本地程序服务,可能会有意外情况发生。
--Edited from Rpc