Minikube 入口控制器未正确将请求转发到已部署的服务
Minikube ingress controller not forwarding request to deployed service properly
我在 minikube 集群中有以下设置
- SpringBoot 应用部署在 minikube 集群中
name : opaapp and containerPort: 9999
- 服务用于公开服务应用程序如下
apiVersion: v1
kind: Service
metadata:
name: opaapp
namespace: default
labels:
app: opaapp
spec:
selector:
app: opaapp
ports:
- name: http
port: 9999
targetPort: 9999
type: NodePort
- 如下创建入口控制器和入口资源
apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
name: opaapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: opaapp.info
http:
paths:
- path: /
backend:
serviceName: opaapp
servicePort: 9999
我已经设置主机文件如下
172.17.0.2 opaapp.info
现在,如果我按如下方式访问服务
http://opaapp.info:32746/api/ping : 我正在收到回复
但如果我尝试以
身份访问
http://opaapp.info/api/ping:出现 404 错误
无法找到配置错误
nginx 入口控制器已通过 NodePort 32746
公开,这意味着 nginx 未在主机 (172.17.0.2) 网络中侦听端口 80/443,而是在主机 (172.17.0.2) 网络中侦听端口 80/443不同于主机网络的 Kubernetes pod 网络。因此通过 http://opaapp.info/api/ping
访问它是行不通的。为了使其按照您期望的方式工作,需要使用 hostNetwork: true
选项部署 nginx 入口控制器,以便它可以直接在主机(172.17.0.2)网络中侦听 80/443 端口,这可以按照讨论的方式完成.
我在 minikube 集群中有以下设置
- SpringBoot 应用部署在 minikube 集群中
name : opaapp and containerPort: 9999
- 服务用于公开服务应用程序如下
apiVersion: v1
kind: Service
metadata:
name: opaapp
namespace: default
labels:
app: opaapp
spec:
selector:
app: opaapp
ports:
- name: http
port: 9999
targetPort: 9999
type: NodePort
- 如下创建入口控制器和入口资源
apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
name: opaapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: opaapp.info
http:
paths:
- path: /
backend:
serviceName: opaapp
servicePort: 9999
我已经设置主机文件如下
172.17.0.2 opaapp.info
现在,如果我按如下方式访问服务
http://opaapp.info:32746/api/ping : 我正在收到回复
但如果我尝试以
身份访问http://opaapp.info/api/ping:出现 404 错误
无法找到配置错误
nginx 入口控制器已通过 NodePort 32746
公开,这意味着 nginx 未在主机 (172.17.0.2) 网络中侦听端口 80/443,而是在主机 (172.17.0.2) 网络中侦听端口 80/443不同于主机网络的 Kubernetes pod 网络。因此通过 http://opaapp.info/api/ping
访问它是行不通的。为了使其按照您期望的方式工作,需要使用 hostNetwork: true
选项部署 nginx 入口控制器,以便它可以直接在主机(172.17.0.2)网络中侦听 80/443 端口,这可以按照讨论的方式完成