注意:这种情况下需要有个前提条件,也就是ingress-nginx-controller安装后的service是NodePort或者hostNetwork模式,而不能是ClusterIP,因为负载均衡器添加后端主机的时候需要监听后端主机的端口



情况介绍

1.k8s集群有8个节点,3个节点是master,分别是master1,master2,master3. 5个worker节点,分别是worker1,worke2,worke3,worker4,worker5

2.弹性公网IP绑定到worke3节点上,域名解析到这个弹性公网IP上

3.nginx-ingress-congtoller是使用kuboard界面本身提供安装的,使用nodeport形式,监控主机的80和443端口,安装完毕后会有这个提示

4.人为调整nginx-ingress-congtoller的pod只部署在worker3节点上

5.查看worker3主机上的80和443端口开放情况

6.ingress规则添加情况

问题

上述虽然能访问使用,但是主要访问入口承载是在worke3节点上,若是worke3节点有问题,则整个集群都无法访问使用。

解决办法也比较繁琐;

1.弹性公网IP绑定worker2主机上

2.人为调整nginx-ingress-congtoller的pod部署在worker2节点上

因此想着使用云厂商提供的负载均衡器解决上述问题,就算其中某一个主机挂了,也不影响正常访问使用

改造情况

1.云厂商申请一个私网的负载均衡器,绑定上述的弹性公网IP

2.调整nginx-ingress-congtoller的pod分布于全部节点或部分节点 (具体参考文章:https://www.cnblogs.com/sanduzxcvbnm/p/15936003.html)

3.把第二步中有nginx-ingress-congtoller pod的节点添加到负载均衡器的后端主机中

4.云厂商负载均衡设置情况 (需要关闭健康检查)

负载均衡监听80端口,后端用的协议是http,添加后端主机后,转发的主机端口不能是80,根据第三步的情况,填写30466端口,若是转发后端主机的443端口,应该填写32492端口

开启健康检查会报异常,导致访问网址404

5.ingress规则添加情况

6.worker3主机上的其他服务单独设置监听主机访问

7.关于https访问

7.1 ingress规则中不用再加载https证书的了,也不用添加访问http强制跳转https的注解了,这个也在负载均衡上进行配置

7.2 负载均衡器监听443端口,后端主机转发端口也是走http协议,因此填写用的也是用30466端口 (根据图示)

若是负载均衡器监听443端口,后端转发主机上填写也是转发的443端口(实际是32492端口),访问则会报错如下:

7.3 负载均衡器监听80端口重定向到 监听443端口上

k8s中的ingress使用上层负载均衡进行设置访问的更多相关文章

  1. [转帖]在 k8s 中通过 Ingress 配置域名访问

    在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...

  2. k8s 中的 ingress 使用细节

    k8s中的ingress 什么是ingress Ingress 如何使用 ingress 使用细节 参考 k8s中的ingress 什么是ingress k8s 中使用 Service 为相同业务的 ...

  3. 从零开始入门 | Kubernetes 中的服务发现与负载均衡

    作者 | 阿里巴巴技术专家  溪恒 一.需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机 ...

  4. Kubernetes 中的服务发现与负载均衡

    原文:https://www.infoq.cn/article/rEzx9X598W60svbli9aK (本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative)) 一.需求来源 为 ...

  5. Dubbo中集群Cluster,负载均衡,容错,路由解析

    Dubbo中的Cluster可以将多个服务提供方伪装成一个提供方,具体也就是将Directory中的多个Invoker伪装成一个Invoker,在伪装的过程中包含了容错的处理,负载均衡的处理和路由的处 ...

  6. .net core中的分布式缓存和负载均衡

    通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性,缓存对不经常更改的数据效果最佳,缓存生成的数据副本的返回速度可以比从原始源返回更快.ASP.NET Core 支持多种不同的缓存,最简 ...

  7. Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程

    人原创,一个字一个字地码的,尊重版权,转载请注明出处! http://blog.csdn.net/chaijunkun/article/details/6987443 最近在开发的项目需要承受很高的并 ...

  8. spring cloud中通过配置文件自定义Ribbon负载均衡策略

    一.Ribbon中的负载均衡策略 1.Ribbon中支持的负载均衡策略 AvailabilityFilteringRule:过滤掉那些因为一直连接失败的被标记为circuit tripped的后端se ...

  9. Nginx(http协议代理 搭建虚拟主机 服务的反向代理 在反向代理中配置集群的负载均衡)

    Nginx 简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开 ...

随机推荐

  1. APISpace 空号检测API接口 免费好用

    空号检测也称空号在线过滤,在线筛号,号码在线清洗.空号检测平台借助第五代大数据空号检测系统,为用户提供高精准的空号检测.号码过滤.号码筛选.号码清洗等众多号码检测功能,让用户快速准确的检测出活跃号.空 ...

  2. 【docker专栏7】容器自启动与守护进程停止后容器保活

    本文为大家介绍容器自启动以及docker 守护进程挂掉或者docker升级的情况下,如何保证容器服务的正常运行.主要包含三个部分 一.守护进程开机自启 在我们安装docker的时候,介绍过启动dock ...

  3. 向docker镜像中传递变量的两种方式

    测试用到的python文件: #!/usr/bin/env python3 #conding: utf-8 from http.server import HTTPServer, BaseHTTPRe ...

  4. 常用的函数式接口Consumer接口练习字符串拼接输出

    题目 下面的字符串数组当中有多条信息,请按照格式"姓名: XX 性别: XX"的格式将信息打印出来,要求将 打印姓名的动作为第一个Consumer接口的Lambda实例,将打印性别 ...

  5. redux和dva

    实习的时候,公司使用的是react,react说实话生态学的还不是很完善,就暂时先不做跟react相关的博客,等以后学好了react全家桶之后,专门再总结一下react的内容 这两天看了公司的alit ...

  6. api.versioning 版本控制 自动识别最高版本和多Area但同名Contoller问题解决办法

    Microsoft.AspNetCore.Mvc.Versioning //引入程序集 .net core 下面api的版本控制作用不需要多说,可以查阅https://www.cnblogs.com/ ...

  7. YII模块化处理

    config.php $config = [ 'modules' => [ 'comment' => [ 'class' => 'frontend\modules\comment\C ...

  8. RestTemplate上传文件

    1.上传的文件是File类型 如果文件保存在本地,即可以通过File file = new File(path) 或者 文件路径地址获取到指定文件 public String uploadFile(F ...

  9. 羽夏看Linux内核——环境搭建

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  10. 先导,对IOC容器的理解

    先导,对IOC容器的理解 通俗的讲就是把你的class类交给spring的IOC容器去管理 需要对该类的属性注入一些值,就可以通过spring提供的xml文件或者注解进行注入 自己使用时在IOC容器工 ...