前面一个章节我们介绍了DaemonSet+HostNetwork部署ingress-controller的方式。
=====>>>>>【K8s】服务暴露插件ingress-controller部署指南(一)<<<<<=====
DaemonSet的Pod控制器会在每个node节点部署一个Pod,如果集群中有很多Node节点就会对资源造成一定的浪费,所以我们尝试使用Deployment+NodePort模式的Service部署。
本章节主要介绍Deployment+NodePort模式的Service部署方式, 其它操作查看【K8s】服务暴露插件ingress-controller部署指南(一) 也就是说本章节仅作为上一章节3.1 准备yaml文件的另一方案,使用官方另一个yaml文件部署。
下载yaml文件:github官方地址
编辑文件,如下图:
是的,只是简单增加两个nodePort字段,指定service在Node节点映射的端口,这样在上层负载均衡继续做代理就会方便很多。 当然,镜像的image: 字段也还是要改成国内可用的地址,这里提供和上一章节一样的容器镜像。
docker pull serenade11/ingress-nginx-controller:v1.0.0 docker pull serenade11/kube-webhook-certgen:v1.0
由于这里的nodePort是对service端口的映射,所以会自动在所有Node节点生成端口映射。 接着就可以在上层负载均衡器做反向代理,将流量负载到所有Node的30080和30443端口, 最后对外只需要暴露负载均衡的IP+Port即可。
补充内容到此结束,部署及测试请查看【K8s】服务暴露插件ingress-controller部署指南(一)
可能有些人会对ingress-controller和ingress这两个概念不理解,会感觉太抽象。 做个简单的比喻: 1、ingress-controller相当于在pod中部署了一个“nginx”的负载均衡器,对外只需要暴露这个负载均衡器的端口; 2、ingress则相当于在“nginx”中创建代理的配置文件,指定访问过来的流量被转发到哪个service资源。
下面是一个大概的对照关系: ingress-controller——>>>nginx ingress———————>>/etc/nginx/conf.d/xxx.com.conf文件
?如您发现文中有错误,请评论区留言指导博主改正,谢谢。
|