用一句话概括:Ingress由三部分组成:Ingress规则、IngressController、IngressClass。入口资源只是一系列的路由和转发配置。路由规则生效必须使用IngressController,IngressClass是IngressController的具体实现。使用原则:先部署IngressController→再部署Ingress资源。
? IP:nodePort可以访问集群内部。服务 这种形式的公开服务工作在 TCP/IP 层。或者将 Pod 的端口映射到 HostPort。但是这种方法有很多缺点,比如暴露过多的Node端口、无法转发域名等。
于是引入了Ingress的概念。 Ingress是一个七层路由转发器,类似于Nginx。使用Ingress进行路由转发时,ingressController会根据ingress规则将客户端请求直接转发到Service对应的Pod。这样会跳过kube-proxy设置的路由转发规则,提高网络转发效率。
Ingress 资源是虚拟资源和规则定义,需要与 ingressController 配合才能生效。因此,为了使 Ingress 资源正常工作,集群必须有一个正在运行的 ingressController。
Ingress 由三部分组成:Ingress 规则、IngressController 和 IngressClass。 Ingress规则只是一系列配置,必须使用IngressController才能使其生效,而IngressClass是IngressController的具体实现。关系如下图:
api版本:v1
种类: 豆荚
元数据:
名称:网络应用程序
命名空间:演示
标签:
应用程序:网络应用程序
规格:
容器:
- 名称:网络应用程序
图片:nginx
imagePullPolicy:IfNotPresent
端口:
- 集装箱端口:80
---
api版本:v1
种类: 服务
元数据:
名称:网络服务
命名空间:演示
标签:
应用程序:网络服务
规格:
选择器:
应用程序:网络应用程序
# 集群IP |负载均衡器| NodePort,使用Ingress 缺乏必要设置成NortPort
类型:集群IP
集群IP:无
端口:
- 名称:Web 服务端口
协议:TCP
端口:80
目标端口:80
---
#创建Ingress策略
api版本:www.sychzs.cn/v1
种类: 入口
元数据:
注释:
www.sychzs.cn/rewrite-target:/
名称:网络入口
命名空间:演示
规格:
# 指定ingressClass
ingressClassName: nginx
规则:- 主机:www.sychzs.cn
http:
路径:
- 小路: /
路径类型:前缀
后端:
服务:
名称:网络服务
港口:
数量:80
Yaml编排完成后,使用kubectl apply命令进行部署。部署完成后,在本地/etc/hosts中配置域名与某个K8S-Node节点的映射关系(当然,生产环境的访问链路比这个长,后面的时候会介绍)有机会的话,这篇文章为了快速测试,本地直接配置了DNS),映射关系类似于这一点:
10.20.1.23 www.sychzs.cn
然后浏览器访问http://www.sychzs.cn/,界面如下,说明ingress使用成功。
kubectl 获取 Pod - n 入口-nginx
kubectl exec ingress-nginx-controller-nginx-d864d97df-22ljk -it -n ingress-nginx /bin/bash