前言
如果kubernetes集群决定使用Ingress-Nginx七层负载均衡,那么可以参考本教程。
准备
- 一台能访问互联网的PC。
- 一个完整的k8s集群 。
- 一个待被负载的应用。
- 最好有一个docker私有仓库。
步骤
一、组件准备
1.1. 首先打开github的Ingress-Nginx仓库,如图找到nginx-0.30.0
1.2. 访问deploy文件夹
1.3.打开文档
1.4.直接在k8s主节点执行此语句。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
没错,第4步很臭屁,我知道你的集群应该没有连互联网,更不可能连上google的k8s镜像仓库。所以给我点个关注,然后移步至附录,我会手把手地教你。
二、部署Nginx服务
2.1. 首先查看已有应用的service文件,查看已部署的应用port,与服务名。
2.2. 编写Nginx.yml文件,将service名与port值写到backend下面的标签中。
2.3. 输入命令kubectl create -f nginx.yml
执行即可
(这句话也是多余我知道~)
三、访问
如果你毫无压力完成以上两步,那么你已经部署成功了,接下来我们去宿主机访问即可:
3.1.查询你的1.4步产生的pod
所在Node的Ip地址,命令如下:
kubectl get pod -o wide -n ingress-nginx
3.2.在一个能访问到k8s集群的局域网主机中,打开C:\Windows\System32\drivers\etc\hosts
,将你3.1步查到的IP与2.2步设置的host写入该文件中。
3.3打开浏览器,搜索2.2步的host+path
,然后你就能访问到你所部署的应用了。
四、附录
4.1.在能访问互联网的系统中下载yaml文件:
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
4.2. 打开yaml文件,输入以下内容。
4.3在k8s集群中找一个NODE打个标签。
kubectl label node 你所选NODE的IP nginx=nginx
4.4找把梯子,通过docker下载该镜像。
如果没有梯子,那就直接下载我打包好的镜像(免费!),然后直接跳至4.6
如果有私有仓库,将镜像tag然后push即可。不用再做4.5 ,4.6,4.7但是需要将mandatory文件中images改为私有仓库镜像名。
4.5 使用docker save -o nginx-ingress-controller.tar quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
导出镜像。
4.6使用docker load < nginx-ingress-controller.tar
将文件导入到4.3你打标签的Node中(记得先把nginx-ingress-controller.tar
文件拷贝到当前目录)。
4.7 在mandatory.yml中添加imagePullPolicy: Never
.
4.8在k8s主节点执行kubectl create -f mandatory.yml
即可,然后继续按照步骤进行即可。
写在后面
发博文比真正部署要难得多,而且过程枯燥无味。如果大家不多多支持,我就真的没有写下去的勇气了!!!点赞、评论、关注!三连!三连啊!!