k8s中的ingress使用上层负载均衡进行设置访问
注意:这种情况下需要有个前提条件,也就是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使用上层负载均衡进行设置访问的更多相关文章
- [转帖]在 k8s 中通过 Ingress 配置域名访问
在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...
- k8s 中的 ingress 使用细节
k8s中的ingress 什么是ingress Ingress 如何使用 ingress 使用细节 参考 k8s中的ingress 什么是ingress k8s 中使用 Service 为相同业务的 ...
- 从零开始入门 | Kubernetes 中的服务发现与负载均衡
作者 | 阿里巴巴技术专家 溪恒 一.需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机 ...
- Kubernetes 中的服务发现与负载均衡
原文:https://www.infoq.cn/article/rEzx9X598W60svbli9aK (本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative)) 一.需求来源 为 ...
- Dubbo中集群Cluster,负载均衡,容错,路由解析
Dubbo中的Cluster可以将多个服务提供方伪装成一个提供方,具体也就是将Directory中的多个Invoker伪装成一个Invoker,在伪装的过程中包含了容错的处理,负载均衡的处理和路由的处 ...
- .net core中的分布式缓存和负载均衡
通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性,缓存对不经常更改的数据效果最佳,缓存生成的数据副本的返回速度可以比从原始源返回更快.ASP.NET Core 支持多种不同的缓存,最简 ...
- Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
人原创,一个字一个字地码的,尊重版权,转载请注明出处! http://blog.csdn.net/chaijunkun/article/details/6987443 最近在开发的项目需要承受很高的并 ...
- spring cloud中通过配置文件自定义Ribbon负载均衡策略
一.Ribbon中的负载均衡策略 1.Ribbon中支持的负载均衡策略 AvailabilityFilteringRule:过滤掉那些因为一直连接失败的被标记为circuit tripped的后端se ...
- Nginx(http协议代理 搭建虚拟主机 服务的反向代理 在反向代理中配置集群的负载均衡)
Nginx 简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开 ...
随机推荐
- CSS进阶内容—盒子和阴影详解
CSS进阶内容 在学习了CSS基本知识之后,我们需要进一步了解CSS,因此写下了这篇文章 当然如果没有学习之前的知识,可以到我的主页中查看之前的文章:秋落雨微凉 - 博客园 CSS三大特性 首先我们先 ...
- linux 文件名乱码的文件无法删除
1.通过ls -i命令获得文件的节点号 2.通过节点号删除 find -inum 节点号 -delete 这样就可以删除文件名乱码的文件
- 在矩池云使用Disco Diffusion生成AI艺术图
在 Disco Diffusion 官方说明的第一段,其对自身是这样定义: AI Image generating technique called CLIP-Guided Diffusion.DD ...
- 求广义表深度(严5.30)--------西工大noj
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef enum{ATOM, LIST ...
- CF576A Vasya and Petya's Game
题目大意: 给定一个数字 n,现在 Vasya 要从 1∼n 中想一个数字 x. Petya 向 Vasya 询问 "x 是否能整除 y?" ,通过 Vasya 的回答来判断 x ...
- 如何创建一个带诊断工具的.NET镜像
现阶段的问题 现在是云原生和容器化时代,.NET Core对于云原生来说有非常好的兼容和亲和性,dotnet社区以及微软为.NET Core提供了非常方便的镜像容器化方案.所以现在大多数的dotnet ...
- python在执行命令时添加环境变量或指定执行路径
cwd: 命令的执行路径,相当于os.chdir('/home')提前切换到对应路径 env: 环境变量,某些执行路径需要添加必须的环境变量,例如fastboot依赖与adb路径下的环境变量 impo ...
- Mybatis的使用(4)
1:解决实体类成员变量和数据库表中字段名称不一致的问题: 方法1:在写sql语句时,给表中的列名起别名,名字和实体类名称一样 方法2:使用resultMap来解决: 例如:实体类中成员变量为id,na ...
- cmd命令行工具
在windows下进行python开发,需要经常使用cmd命令行工具.打开命令行工具有很多种方法,最简单的就是win键+R键弹出运行窗口,然后输入cmd, 就会打开下面这样的窗口. 不同版本,可能配色 ...
- 黑马2022最新redis课程笔记知识点(面试用)持续更新
redis入门 redis的常见五种数据类型 String类型 String类型,类似于java中的String类型,常见使用get,set方法. String类型还可以存储json字符串格式. Ha ...