K8s - 什么是 Ingress 服务

发布时间 2023-07-14 14:30:25作者: 炎黄子孙,龙的传人

什么是 Ingress?

Ingress 将 HTTP 和 HTTPS 路由从集群外部公开到集群内的服务。
流量路由由入口资源上定义的规则控制。

应用举例

服务现状:
一个订单服务,一个用户服务,彼此间相互独立。

流量转发:

经过 Ingress 转发:

思考:Ingress与Nginx 的区别

问题:
如果不用ingress,直接使用nginx也能做到吧?
/api/user user服务
/api/order order服务

回答:
pod的ip是会变的,用ingress可以直接指向servicename(这个是不变的),
而service又指向了podname,这样就避免了pod ip发生变化带来的麻烦

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx-example
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          # 根据 service 名称进行绑定,而不是具体的 IP
          service:
            name: test
            port:
              number: 80

https://www.bilibili.com/video/BV1s64y1S7rZ
https://kubernetes.io/docs/concepts/services-networking/ingress/