参考

前言

上一文《从零开始搭建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
  • 在节点上通过域名访问