多个服务的ingress 以path区分后访问异常

来源:11-2 ingress -- 四层代理、session保持、定制配置、流量控制(中)

shengxi

2019-11-19

按照迁移服务至k8s章节的内容尝试了前端静态资源和动态服务单独服务用ingress代理都能够正常访问,
之后尝试两个服务的ingress合在一起以path区分代理,path: / 是代理到前端静态web    另一个path:/corpApi 是代理到eureka服务。
apply之后前端仍能够正常访问,但是后端的eureka管理页面无法正常显示报错Whitelabel Error Page。
看报错应该也是代理到了eureka服务里但是没显示出正常访问 / 的服务监控情况页面。

另外还有一个问题,如果spring-boot服务使用eureka或者nacos作为微服务注册中心,那原先服务是使用eureka服务器的IP和端口作为key:eureka.client.service-url.defaultZone的值,在k8s体系内是仍然使用域名+/path的方式来访问还是可以直接用service直接内部转发?


yaml文件如下

#eureka-deployment

apiVersion: apps/v1

kind: Deployment

metadata:

  name: eureka-server

spec:

  selector:

    matchLabels:

      app: eureka-server

  replicas: 1

  template:

    metadata:

      labels:

        app: eureka-server

    spec:

      containers:

      - name: eureka-server

        image: 10.5.118.197/kubernetes/eureka-server:latest

        ports:

        - containerPort: 8888

---

#eureka-service

apiVersion: v1

kind: Service

metadata:

  name: eureka-server

spec:

  ports:

  - port: 80

    protocol: TCP

    targetPort: 8888

  selector:

    app: eureka-server

  type: ClusterIP


---

#pcbook-deploy

apiVersion: apps/v1

kind: Deployment

metadata:

  name: pcbook

spec:

  selector:

    matchLabels:

      app: pcbook

  replicas: 2

  template:

    metadata:

      labels:

        app: pcbook

    spec:

      containers:

      - name: pcbook

        image: 10.5.118.197/kubernetes/pcbook:latest

        imagePullPolicy: Always

        ports:

        - containerPort: 80


---

#pcbook-service

apiVersion: v1

kind: Service

metadata:

  name: pcbook

spec:

  ports:

  - port: 80

    protocol: TCP

    targetPort: 80

  selector:

    app: pcbook

  type: ClusterIP


---

#ingress

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: ingress-nginx

spec:

  rules:

    - host: springboot.test.com

      http:

        paths:

        - path: /

          backend:

            serviceName: pcbook

            servicePort: 80

        - path: /corpApi

          backend:

            serviceName: eureka-server

            servicePort: 80


写回答

1回答

刘果国

2019-11-20

既然打到了对应的后端,基本的ingress配置就是没问题的。先查一下eureka的访问日志,注意请求的path,这块的问题面大。

服务发现的问题:一般自带服务发现组件的应用最好使用原有的服务发现方案。

0
3
shengxi
非常感谢!
2019-12-18
共3条回复

Kubernetes生产落地全程实践

一个互联网公司落地Kubernetes全过程点点滴滴

2293 学习 · 2216 问题

查看课程