首页 > 虚拟化 > linux工匠之kubernetes的ingress-nginx配置介绍
2018
01-10

linux工匠之kubernetes的ingress-nginx配置介绍

kubernetes创建服务后,需要把服务暴露出来,这样客户才能够访问到,ingress就可以完美的完成此任务。github链接:ingress-nginx  ingress-gce,觉得看ingress-gce文档更详细一些

之前有用过consul作为服务发现,服务注册,并通过修改nginx的模板,nginx服务自动reload,来动态更新后端服务的文章 consul集群的服务注册发现和模板使用,现在kubernetes的ingress做的同样是这个事情,建议看一下此文章,consul和etcd是多数公司用于服务注册、服务发现的软件

ingress结构分为3块,ingress客户端、ingress控制端(服务端)、nginx反向代理

ingress controller就是kubernetes一个外部负载均衡器,包含了nginx代理服务和控制器。控制器从 kube-apiserver获取ingress客户端信息,并通过模板生成nginx代理的配置,然后reload nginx服务。和consul+nginx作用有相似的地方,负责接受客户端提交的信息(服务发现),从而做服务注册,利用设计好的模板,更新nginx代理的配置

linux工匠之kubernetes的ingress-nginx配置介绍 - 第1张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

图片来源:https://techblog.rakuten.co.jp

下面来创建ingress-nginx服务,实践出真知

上面配置部署了一个default-http-backend,这个默认的后端服务是为了提供一个404页面
如果请求header中的host不能跟ingress中的host匹配,并且/或请求的URL不能与任何一个path匹配,则流量将路由到默认backend,默认的backend可以用一个网站维护页面。健康检查页面是/healthz,访问即出现404页面

部署nginx-ingress-controller服务,健康检查页面是/healthz,当然还需要一个rbac认证:

上面即ingress服务部署,我们以代理自建的nginx服务为例,创建一个nginx服务,这个nginx服务bbotte/nginx:v0.1的构建在MAC系统Docker镜像构建和私有仓库,只是更改了nginx服务的端口为8080,当然你可以用其他的服务,修改服务name、image和containerPort即可

这时候就把ingress和自建的nginx服务结合起来,让ingress代理后端的服务:

指定的域名是www.bbotte.com,后端的服务是nginx,即上面创建的nginx服务,端口是80

这样域名解析后就可以访问nginx服务了,

linux工匠之kubernetes的ingress-nginx配置介绍 - 第2张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

linux工匠之kubernetes的ingress-nginx配置介绍 - 第3张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

图片来源:https://techblog.rakuten.co.jp/

上述配置文件和docker包链接:https://pan.baidu.com/s/1bq7oJPd 密码:buye

最后编辑:
作者:bbotte
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。