部署ingress控制器:ingress-nginx

ingress-nginx是使用nginx作为反向代理和负载均衡的k8s的ingress控制器

1.去官网查看ingress-nginx安装指南,复制deploy.yaml文件下载地址:

官网:Installation Guide - Ingress-Nginx Controller

deploy.yaml文件是一个资源清单

2.在服务器wget命令下载官网上的deploy.yaml文件,sz下载到本地

3.修改deploy.yaml文件中ingress-nginx-controller控制器镜像拉取镜像地址,改成阿里云镜像地址,并添加配置项

阿里云镜像首页:https://dev.aliyun.com/

选择谷歌镜像:google_containers/nginx-ingress-controller,选择阿里云镜像最新版本修改deploy.yaml文件中的拉取镜像地址

添加hostNetwork配置项:

注意:如果开始这一步添加了该配置项,那下边的第7步应该会直接浏览器访问nginx服务成功,如果没有添加这一步,则需要重新搭建ingress环境,把应用deploy.yaml文件产生的ingress-nginx命名空间下的servie、pod、deploy删除

4.rz命令将本地修改的deploy.yaml文件上传到服务器:

5.应用文件,创建资源:kubectl apply -f deploy.yaml文件,查询ingress-nginx命名空间下创建的资源状态是否正常

创建之后ingress-nginx命名空间下pods状态不正常:

即有对应的service和deploy,但是没有正常的pod即pod状态不是Running,把ingress-nginx命名空间下的service和deploy全部删除(deploy删除之后pods会自动被删除),重新再执行kubectl apply -f deploy.yaml命令显示成功,pods状态正常:

6.创建ingress-nginx-rule.yaml规则文件,配置ingress规则:

(1)在本地创建ingress-nginx-rule.yaml规则配置文件,并rz命令上传到服务器:

注:后台服务名称写啥要看在k8s内部的service名称是啥

(2)应用上传的ingress配置文件:kubectl apply -f ingress-nginx-rule.yaml

注意:以下截图注释有点问题,kubectl get ing(ress)查询的是规则是否建立,即ingress-nginx-rule.yaml规则的配置文件文件中有一个name名称指明了规则的名称,如果规则文件应用成功,则正常ing会创建,如果之前已经应用过规则文件,再次应用相同规则文件时记得把之前应用生成的相同的规则用kubectl delete删除,然后再删除web hook配置,最后再应用配置文件,一般会成功

7.修改本地hosts文件,浏览器访问nginx服务:

注:第3张图浏览器访问nginx失败的原因是开始第3步修改从github上下载下来的deploy.yaml文件时少修改一个配置,所以导致访问失败,而不是因为ingress规则文件配置缺少,注释有点问题,如下(1)需要删除旧ingress-nginx命名空间下的service、deploy和pods,然后重新应用新的deploy.yaml文件,再去浏览器查询是否访问nginx成功

(1)本地修改deploy文件,添加hostNetwork配置,重新构建ingress环境:

可能理解的不是很到位。。。。。。。。。。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐