系列文章:node
总目录索引:九析带你轻松完爆 istio 服务网格系列教程nginx
目录centos
1 前言网络
2 邀约负载均衡
3 Ingress 介绍curl
4 ingress 实例ide
4.1 ingress 资源文件url
4.2 service 资源文件spa
4.3 pod 资源文件orm
5 访问 ingress
5.1 获取 ingress HOST
5.2 域名解析绑定
5.3 访问 ingress
6 结论
1 前言
若是你对博客有任何疑问,请告诉我。
2 邀约
你能够从 b 站搜索 “九析”,获取免费的、更生动的视频资料:
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 内部进程截图以下所示:
4 ingress 实例
若是要展现 ingress 实例,须要三个资源文件:
1 ingress 流量入口资源文件
2 service 流量从入口进入后的流向资源文件
3 pod 流量最终目的地资源文件
4.1 ingress 资源文件
4.2 service 资源文件
4.3 pod 资源文件
5 访问 ingress
5.1 获取 ingress HOST
上面介绍了 nginx-ingress-controller 其实就是 k8s 的负载均衡器,或者说 nginx-ingress-controller 就是 k8s 的 nginx。那么 nginx-ingress-controller pod 所在宿主机地址就是 k8s 的入口地址。以下截图所示:
由于个人 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:
命令执行结果以下所示:
6 结论
使用 nodeport、loadbalancer 跟 ingress 在实现路由方式上有所不一样。对于 loadbalancer 和 nodeport,都是将流量导入到节点上的 kube-proxy 进程,后者再将流量转发到后面的 pod。而 Ingress 负载均衡器则将流量直接转发到选定的 Pod,这样效率更高。