借助 NGINX 对本地的 Kubernetes 服务进行自动化的 TCP 负载均衡

news2024/9/17 8:47:29

原文作者:Chris Akker - F5 技术解决方案架构师,Steve Wagner - F5 NGINX 解决方案架构师

原文链接:借助 NGINX 对本地的 Kubernetes 服务进行自动化的 TCP 负载均衡

转载来源:NGINX 中文官网


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

作为一名现代应用开发人员,您不仅使用一系列开源工具和一些商业工具来编写、测试、部署及管理新应用和容器,而且还选择了 Kubernetes 在开发、测试、模拟和生产环境中运行这些容器和 pod,并引入了微服务架构和概念、云原生计算基金会及其他现代行业标准。

这一路走来,您发现 Kubernetes 的功能的确很强大,但可能也没想到它如此繁琐、复杂和僵化。实施并协调对路由器、防火墙、负载均衡器及其他网络设备的变更和更新可能会非常困难,尤其是在您自己的数据中心!这足以让开发人员崩溃。

如何应对这些挑战与 Kubernetes 运行位置和方式(作为托管 service 或本地 service)密切相关。本文将介绍 TCP 负载均衡,这是部署选择影响易用性的关键之处。

使用托管 Kubernetes 进行 TCP 负载均衡(所谓的“简易方案”)

如果您使用的是 Kubernetes 公有云提供商等托管 service,那么大部分繁琐的网络工作处理均由其为您代劳。只需一个命令(kubectl apply -f loadbalancer.yaml),Service 类型 LoadBalancer 便会为您提供公共 IP、DNS 记录及 TCP 负载均衡器。例如,您可以配置 Amazon Elastic Load Balancer,以便将流量分配到包含 NGINX Ingress Controller 的 pod。使用此命令,即使后端发生变化,也不必担心。简直太简单了,给人行云流水之感!

使用本地 Kubernetes 进行 TCP 负载均衡(所谓的“复杂方案”)

对于本地集群,情况完全不同。您或您的网络团队同事必须提供网络服务。您可能会想:“为何让用户使用我的 Kubernetes 应用如此困难?”原因很简单,但有些出人意料:没有 service 类型 LoadBalancer(集群的前门)。

若要将应用和 service 暴露在集群外部,您的网络团队可能需要创建工单、获得审批、执行程序乃至进行安全审查 — 然后才能重新配置设备。或者,您可能需要自己搞定一切,进而拖慢了应用交付的速度。更糟糕的是,您不敢对任何 Kubernetes service 进行更改,因为如果 NodePort 发生变化,流量可能会被阻断!我们都知道用户最不希望出现 500 错误,老板可能更是如此。

更好的本地 TCP 负载均衡解决方案:NGINX Loadbalancer for Kubernetes

通过我们的最新免费项目,您可将“复杂方案”变成“简易方案”:这个项目就是 NGINX Loadbalancer for Kubernetes ,它能够监控 NGINX Ingress Controller,并可自动更新专为负载均衡而配置的外部 NGINX Plus 实例。它的设计非常简单,易于安装和操作。有了此解决方案,您便可在本地环境中实现 TCP 负载均衡,确保新应用和 service 能即时被检测到并可接收流量,而无需手动操作。

架构和流程

NGINX Loadbalancer for Kubernetes 位于 Kubernetes 集群内部,已在 Kubernetes 中注册,可监控 nginx-ingress service (NGINX Ingress Controller)。当后端发生变化时,NGINX Loadbalancer for Kubernetes 会收集 worker IP 和 no reload required 端口号,然后通过 NGINX Plus API 将 IP:ports 发送到 NGINX Plus。NGINX 上游服务器无需重新加载即可更新,NGINX Plus 将流量负载均衡到正确的上游服务器和 Kubernetes NodePort。可添加额外的 NGINX Plus 实例来实现高可用性。

NGINX Loadbalancer for Kubernetes 用例快照

下面截图中的两个窗口展示了 NGINX Loadbalancer for Kubernetes 已部署完毕并正执行其作业:

  1. service 类型 – LoadBalancer(适用于 nginx-ingress
  2. 外部 IP – 连接到 NGINX Plus 服务器
  3. 端口 – NodePort 映射到 443:30158 及匹配的 NGINX 上游服务器(如 NGINX Plus 实时仪表盘所示)
  4. 日志 – 表示 NGINX Loadbalancer for Kubernetes 成功地将数据发送到 NGINX Plus

:在本例中,Kubernetes worker 节点为 10.1.1.8 和 10.1.1.10

立即试用

如果您正苦于无法应对 Kubernetes 集群边缘的网络挑战,不妨试试该项目,并分享一下您的感想。NGINX Loadbalancer for Kubernetes 的源代码是开源代码(使用 Apache 2.0 许可),所有安装说明均可在 GitHub 上获得。

如需提供反馈,请在仓库中给我们留言,或在 NGINX Community Slack 上向我们发送消息。或者请微信添加小N助手(微信号:nginxoss)加入官方微信群,与社区用户交流探讨。


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows11安装MongoDB7.0.12详细教程

下载 地址:https://www.mongodb.com/try/download/community 我使用的是迅雷下载: 安装 选择自定义安装: 选择安装目录: 开始安装: 这个玩意会卡比较长的时间: 最后这一步如果没有科学上网&#…

虾皮笔试0620-选择题

虚拟存储的基础是程序局部性理论,它的基本含义是程序执行时对内存访问的不均匀性。这一理论具体体现在两个方面: 时间局部性:时间局部性是指如果程序中的某个数据项被访问,那么在不久的将来它可能再次被访问。这通常是因为程序存在…

thinkphp框架远程代码执行

一、环境 vulfocus网上自行下载 启动命令: docker run -d --privileged -p 8081:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP192.168.131.144 8e55f85571c8 一定添加--privileged不然只能拉取环境首页不显示 二、thinkphp远程代码执行 首页&a…

【吊打面试官系列-Dubbo面试题】Dubbo SPI 和 Java SPI 区别?

大家好,我是锋哥。今天分享关于 【Dubbo SPI 和 Java SPI 区别?】面试题,希望对大家有帮助; Dubbo SPI 和 Java SPI 区别? JDK SPI JDK 标准的 SPI 会一次性加载所有的扩展实现,如果有的扩展吃实话很耗时&…

Javascript前端面试基础(九)

浏览器缓存 浏览器缓存分为强缓存和协商缓存。当客户端请求某个资源时,获取缓存的流程如下 先根据这个资源的一些http header判断它是否命中强缓存,如果命中则直接从本地获取缓存资源,不会发请求到服务器;当强缓存没有命中时,客户…

通过进程协作显示图像-C#

前言 如果一个软件比较复杂或者某些情况下需要拆解,可以考试将软件分解成两个或多个进程,但常规的消息传递又不能完全够用,使用消息共享内存,实现图像传递,当然性能这个方面我并没有测试,仅是一种解决思路…

Anaconda配置记录-linux环境

Anaconda Distribution 是一个 Python/R 数据科学分发,其中包含: conda - 用于命令行界面的包和环境管理器 Anaconda Navigator - 基于 conda 构建的桌面应用程序,具有从托管环境中启动其他开发应用程序的选项 超过 300 个自动安装的软件包…

记录一次Dump文件分析之旅

背景 在生产环境中,服务运行一段时间后,我们遇到了JVM内存使用率超过90%的告警。考虑到我们的服务正常情况下每周都会进行重启,通常不应该出现如此高的内存使用率问题。 前置操作 在检查JVM相关配置时,我们使用Jinfo命令发现当…

Covalent 启动面向 CXT 质押者的生态伙伴空投计划

Covalent Network(CXT)是模块化人工智能数据基础设施,其宣布了合作伙伴生态系统空投计划的首个项目:TAIKO。此举旨在为 CXT 代币质押者提供来自其庞大生态系统的空投机会。首次空投将于 2024 年 8 月 1 日进行,向 CXT …

疯狂交互学习的BM3推荐算法(论文复现)

疯狂交互学习的BM3推荐算法(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 疯狂交互学习的BM3推荐算法(论文复现)多模态推荐系统优点 示例对比学习什么是对比学习?关键思想优点 自监督学习什么是自监督…

【只出现一次的数字 III】python刷题记录

R2-位运算专题. 目录 哈希表 位运算 ps: 一眼哈希表啊 哈希表 class Solution:def singleNumber(self, nums: List[int]) -> List[int]:dictdefaultdict(int)ret[]for num in nums:dict[num]1for key in dict.keys():if dict[key]1:ret.append(key)return ret怎么用位…

支持AI的好用的编辑器aieditor

一、工具概述 AiEditor 是一个面向 AI 的下一代富文本编辑器,她基于 Web Component,因此支持 Layui、Vue、React、Angular 等几乎任何前端框架。她适配了 PC Web 端和手机端,并提供了 亮色 和 暗色 两个主题。除此之外,她还提供了…

Hive3:库操作常用语句

1、创建库 create database if not exists myhive;2、选择库 use myhive;3、查看当前选择的库 SELECT current_database();4、查看库详细信息 desc database myhive;可以查看数据文件在hdfs集群中的存储位置 5、创建库时制定hdfs的存储位置 create database myhive2 …

机器学习课程学习周报六

机器学习课程学习周报六 文章目录 机器学习课程学习周报六摘要Abstract一、机器学习部分1.1 循环神经网络概述1.2 循环神经网络架构1.2.1 深层循环神经网络1.2.2 Elman网络和Jordan网络1.2.3 双向循环神经网络 1.3 长短期记忆网络1.4 LSTM原理1.5 RNN的学习方式1.6 RNN中的梯度…

基于站点的中国6小时PM2.5数据集(1960-2020)

基于站点的中国6小时PM2.5数据集(1960-2020) 数据介绍 几十年来,PM2.5改变了地球上的辐射平衡,增加了环境和健康风险,但直到2013年才在中国得到广泛监测。历史长期 PM2.5具有高时间分辨率的记录是必不可少的&#xff0…

段页式存储-系统架构师(三十七)

1、一个完整的系统需要从不同的角度进行描述,下图属于软件架构设计中的(),用于()视图来描述软件系统。 问题1 A对象图 B时序图 C构件图 D类图 问题2 A进程 B开发 C物理 D逻辑 解析: 从…

Golang | Leetcode Golang题解之第306题累加数

题目: 题解: func stringAdd(x, y string) string {res : []byte{}carry, cur : 0, 0for x ! "" || y ! "" || carry ! 0 {cur carryif x ! "" {cur int(x[len(x)-1] - 0)x x[:len(x)-1]}if y ! "" {cur i…

卷积神经网络的入门基本介绍 | 带你快速上手各种概念【附图解】

文章目录 1、简介2、核心概念3、关键操作4、常见架构5、训练过程6、重要概念图解⭐6.1、卷积神经网络工作⭐6.2、卷积核6.3、全连接与卷积网络的对比6.4、池化层6.5、感受野和卷积堆叠6.6、神经元计算和激活函数 7、卷积网络可以改进的地方8、结论 🍃作者介绍&#…

清爽简洁!这可能是开源界功能最强大的项目开发管理系统

💂 个人网站: IT知识小屋🤟 版权: 本文由【IT学习日记】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 写在前面项目简介项目特点设计思想技术栈项目展示项目获取 写在前…

(免费领源码)java+SpringBoot+mysql车辆故障报修系统26719-计算机毕业设计项目选题推荐

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,车辆维修行业当然也不例外。车辆故障报修系统是以实际运用为开发背景,运用软件工程原理和开发方法&#xff…