Minikube 入口控制器未正确将请求转发到已部署的服务

Minikube ingress controller not forwarding request to deployed service properly

我在 minikube 集群中有以下设置

  1. SpringBoot 应用部署在 minikube 集群中

name : opaapp and containerPort: 9999

  1. 服务用于公开服务应用程序如下
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

  1. 如下创建入口控制器和入口资源
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 端口,这可以按照讨论的方式完成.