简单介绍:
Ingress是Kubernetes API的标准资源类型之一,它其实就是一组基于DNS名称或URL路径把请求转发至指定的Service资源的规则,用来将集群外部的请求流量转发至集群内部。但是,Ingress资源自身并不能进行“流量穿透”,它仅是一组路由规则的集合,这些规则想要真正发挥作用还需要其他功能的辅助,如监听某套接字,然后根据这些规则的匹配机制路由请求流量。这种能为Ingress资源监听套接字并转发流量的组件称为Ingress控制器(Ingress Controller)。
部署方法:① helm安装ingress ②传统yaml文件安装ingress
测试环境:
一个kubernetes集群,配置了helm
操作步骤:
方法①
1. 用helm搜索并安装
[root@k8s-master ~]# helm search nginx-ingress
NAME CHART VERSION APP VERSION DESCRIPTION
stable/nginx-ingress 0.9. 0.10. An nginx Ingress controller that uses ConfigMap to store ...
stable/nginx-lego 0.3. Chart for nginx-ingress-controller and kube-lego
[root@k8s-master ~]# helm install --name nginx-ingress --set "controller.hostNetwork=true,rbac.create=true" stable/nginx-ingress
NAME: nginx-ingress
LAST DEPLOYED: Sat May ::
NAMESPACE: default
STATUS: DEPLOYED RESOURCES:
==> v1/ConfigMap
……
……
2. 查看pod运行状态
[root@k8s-master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-ingress-controller-78f9df54dd-dmxvr / Running 59s 172.19.5.40 k8s-node3
nginx-ingress-default-backend-6f598d9c4c-ms7xx / Running 58s 192.168.1.43 k8s-node1
注:上面的高亮IP是某一个节点的IP,此刻这个节点上已经启动了80和443端口;同时,也起了一个默认的后端(default backend),这个默认的后端就做了一件事:返回404(如果访问根)。
3. 浏览器IP测试和域名(k8s.xxx.cn)测试效果
以上是安装后的默认配置,如果需要添加其他类似于api.xxx.com或者www.xxx.com/api 这样的域名,继续添加或者修改ingress资源,然后在ingress中引用ServiceName就能指向到后端的pod。