Nginx Ingress 在所有自定义命名空间中寻找服务
Nginx Ingress Looking for Service in all Custom Namespaces
我有三个命名空间 dev、test 和 staging。 test 和 staging 中没有 pods。在开发中,我有 nginx、ingress 和前端服务。对于所有对 nginx 的请求,它都被转发到前端服务。
但问题是开发中的 nginx 也在尝试在测试和暂存命名空间中查找前端服务。它在 3 个名称空间之间进行循环。所以有时页面正在加载,有时是 503 错误。
这里是入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-ingress
namespace: dev
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: frontend
servicePort: 80
这里是 nginx 的日志:
I0327 07:54:50.867120 1 command.go:76] change in configuration detected. Reloading...
W0327 07:54:50.867339 1 controller.go:841] service test/frontend does not have any active endpoints
W0327 07:54:50.867370 1 controller.go:841] service staging/frontend does not have any active endpoints
W0327 07:54:50.868198 1 controller.go:777] upstream test-frontend-80 does not have any active endpoints. Using default backend
W0327 07:54:50.868219 1 controller.go:777] upstream staging-frontend-80 does not have any active endpoints. Using default backend
部署 nginx pod 时指定 --force-namespace-isolation=true
参数。并将图像更新为 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.12.0
我想详细说明@Narayan-Prusty 的回答。
我必须添加 --force-namespace-isolation=true
并将图像设置为 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.12.0
,但还必须添加 --watch-namespace=$(POD_NAMESPACE)
。
我有三个命名空间 dev、test 和 staging。 test 和 staging 中没有 pods。在开发中,我有 nginx、ingress 和前端服务。对于所有对 nginx 的请求,它都被转发到前端服务。
但问题是开发中的 nginx 也在尝试在测试和暂存命名空间中查找前端服务。它在 3 个名称空间之间进行循环。所以有时页面正在加载,有时是 503 错误。
这里是入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-ingress
namespace: dev
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: frontend
servicePort: 80
这里是 nginx 的日志:
I0327 07:54:50.867120 1 command.go:76] change in configuration detected. Reloading...
W0327 07:54:50.867339 1 controller.go:841] service test/frontend does not have any active endpoints
W0327 07:54:50.867370 1 controller.go:841] service staging/frontend does not have any active endpoints
W0327 07:54:50.868198 1 controller.go:777] upstream test-frontend-80 does not have any active endpoints. Using default backend
W0327 07:54:50.868219 1 controller.go:777] upstream staging-frontend-80 does not have any active endpoints. Using default backend
部署 nginx pod 时指定 --force-namespace-isolation=true
参数。并将图像更新为 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.12.0
我想详细说明@Narayan-Prusty 的回答。
我必须添加 --force-namespace-isolation=true
并将图像设置为 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.12.0
,但还必须添加 --watch-namespace=$(POD_NAMESPACE)
。