一、ingress简介
单独用service暴露服务的方式,在实际生产环境中不太合适
ClusterIP的方式只能在集群内部访问。
NodePort方式的话,测试环境使用还行,当有几十上百的服务在集群中运行时,NodePort的端口管理是灾难。
LoadBalance方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。
ingress可以简单理解为service的service,他通过独立的ingress对象来制定请求转发的规则,把请求路由到一个或多个service中。这样就把服务与请求规则解耦了,可以从业务维度统一考虑业务的暴露,而不用为每个service单独考虑。
Kubernetes 里的Ingress 服务是一种全局的、为了代理不同后端Service 而设置的负载均衡服务。
Ingress由两部分组成:Ingress controller和Ingress服务。
Ingress Controller 会根据你定义的Ingress 对象,提供对应的代理能力。业界常用的各种反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维护了对应的Ingress Controller。
官网:Welcome - NGINX Ingress Controller
二、ingress的安装部署
(1)创建ingress目录并进入
[root@server2 ~]# mkdir ingress
[root@server2 ~]# cd ingress/
[root@server2 ingress]# ls
[root@server2 ingress]#
2)在官网上找到将裸金属环境下ingress-nginx部署所需资源清单文件deploy.yaml
下载资源清单文件deploy.yaml
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.2/deploy/static/provider/cloud/deploy.yaml ###版本号为1.1.2
(3)查看资源清单中所需的镜像,在server1(harbor仓库)中下载所需镜像并上传到harbor仓库
[root@server2 ingress]# ls
deploy.yaml
[root@server2 ingress]# vim deploy.yaml
需要两个镜像 ingress-nginx-controller:v1.1.2 和 kube-webhook-certgen:v1.1.1
在Docker Hub中查找镜像,注意版本号
在harbor仓库中新建ingress-nginx项目,访问级别为公开
拉取所需要的镜像并上传至仓库