第二十七章 九析带你轻松完爆 Istio - k8s 流量进入集群之 Ingress

系列文章:


总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 邀约

3 Ingress 介绍

4 ingress 实例

    4.1 ingress 资源文件

    4.2 service 资源文件

    4.3 pod 资源文件

5 访问 ingress

    5.1 获取 ingress HOST

    5.2 域名解析绑定

    5.3 访问 ingress

6 结论


1 前言

        如果你对博客有任何疑问,请告诉我。1.png


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:clipboard2.png


3 Ingress 介绍

        Ingress 中文含义就是“入口”,非常形象地定义了这种资源的本质:Ingress 就是 k8s 的门户。

        就像一幢建筑物,比如酒店、商场等,不止一个入口,k8s 也可以定义多个入口放流量进来。

        k8s 集群必须部署一个 Ingress 控制器(比如 nginx、traefik 等),Ingress 控制器的作用就是创建 Ingress 资源,好让其生效。Ingress 控制器跟 Ingress 的关系就像 nginx 跟 nginx.conf( nginx 配置文件) 一样。

        Ingress 控制器容器内一般有两个关键的进程,分别是一个负载均衡器(比如 nginx、haproxy 等)和一个控制器守护进程。控制器守护进程会从 k8s 接收所需的 Ingress 创建需求,并将其生成一个 nginx 或 haproxy 的配置片段,并重新加载负载均衡器来使其生效。

        就拿 nginx-ingress-controller 举例,nginx 是 nginx-ingress-controller 内部进程,也是其负载均衡器,而 nginx-ingress-controller 是 k8s 的负载均衡器。

nginx-ingress-controller 内部进程截图如下所示:clipboard3.png


4 ingress 实例

        如果要展示 ingress 实例,需要三个资源文件:

1 ingress 流量入口资源文件

2 service 流量从入口进入后的流向资源文件

3 pod 流量最终目的地资源文件

4.1 ingress 资源文件

spacer.gifclipboard4.png

4.2 service 资源文件

spacer.gifclipboard5.png

4.3 pod 资源文件

spacer.gifclipboard6.png


5 访问 ingress

5.1 获取 ingress HOST

        上面介绍了 nginx-ingress-controller 其实就是 k8s 的负载均衡器,或者说 nginx-ingress-controller 就是 k8s 的 nginx。那么 nginx-ingress-controller pod 所在宿主机地址就是 k8s 的入口地址。如下截图所示:clipboard7.png

        因为我的 nginx-ingress-controller pod 直接采用的是 hostNetwork: true,也就是使用了宿主机的网络命名空间。因此这里的 Pod IP 就是宿主机的 IP,也就是说访问的时候可以直接使用此 IP。

5.2 域名解析绑定

        编辑 /etc/hosts(centos)文件,添加域名解析定义:

10.110.101.100 ingress.jiuxi.org

5.3 访问 ingress

        执行如下命令访问 ingress:

curl http://ingress.jiuxi.org

        命令执行结果如下所示:clipboard8.png


6 结论

        使用 nodeport、loadbalancer 跟 ingress 在实现路由方式上有所不同。对于 loadbalancer 和 nodeport,都是将流量导入到节点上的 kube-proxy 进程,后者再将流量转发到后面的 pod。而 Ingress 负载均衡器则将流量直接转发到选定的 Pod,这样效率更高。

猜你喜欢

转载自blog.51cto.com/14625168/2489623