ingress 介绍

ingress可以理解是一个反向代理,类似于 nginx

graph LR 客户端--ingress负载均衡器-->ingress--路由规则-->service-->pod1 service-->pod2

ingress 对应 的就是 springCloud 的 gateway 组件。

ingress 示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
    name: minimal-ingress
    annotations:
     nginx.ingress/kubernates.io/rewrite-target: /
spec:
    rules:
        -http:
            paths:
               - path: /testpath
                pathType: Prefix
                backend:
                    service:
                        name: test
                        port:
                            number: 80

ingress 仅仅是用于转发 http的流量的规则

1
2

k apply -f ingress-nginx-controller.yaml

ingress 控制器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
k create deployment webDeploymentName  --image=xxxx

k expose deployment webDeploymentName --type=NodePort --port-8080
# 创建 service,对外提供 8080端口对象

k get svc

# 查看外部端口
k get all


curl node1:31935

整个架构就是 先访问 ingress ,再访问 service,再访问Pod

参考博客

https://img2022.cnblogs.com/blog/118538/202204/118538-20220406171708745-1907043905.png

1
2
3
4

k get ing

# 可以添加域名映射等
1
2
3
4
5
6
7
8
   paths:
    - path: /testpath
    pathType: Prefix
    backend:
        service:
            name: test # 这里会匹配到这个叫做 test 的 service对象,然后转发
            port:
                number: 80