14. k8s集群搭建之创建ingress
前言
上一文《从零开始搭建Kubernetes集群(四、搭建K8S Dashboard)》介绍了如何搭建Dashboard。本篇将介绍如何搭建Ingress来访问K8S集群的Service。
Ingress简介
Ingress简单来讲,就是一个负载均衡的玩意,其主要用来解决使用NodePort暴露Service的端口时Node IP会漂移的问题。同时,若大量使用NodePort暴露主机端口,管理会非常混乱。
好的解决方案就是让外界通过域名去访问Service,而无需关心其Node IP及Port。那为什么不直接使用Nginx?这是因为在K8S集群中,如果每加入一个服务,我们都在Nginx中添加一个配置,其实是一个重复性的体力活,只要是重复性的体力活,我们都应该通过技术将它干掉。
Ingress就可以解决上面的问题,其包含两个组件Ingress Controller和Ingress:
- Ingress
将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的Ingress的yaml文件即可 - Ingress Controller
将新加入的Ingress转化成Nginx的配置文件并使之生效
操作
- kubectl create -f 1.default-backend.yaml
- kubectl create -f 2.ingress-role.yaml
- kubectl create -f 3.ingress-ServiceAccount.yaml
- 修改4.nginx-ingress-controller.yaml中的
kubernetes.io/hostname
为某一node name,使得ingress pod在该节点上运行,后续所有的域名均解析至该节点上 - kubectl create -f 4.nginx-ingress-controller.yaml
测试
- kubectl create -f 5.test-frontend-ingress.yaml,转发到某service
- 在其它节点上配置hosts到该node
- 在节点上通过域名访问