无缝融入 Kubernetes 生态 | 云原生网关支持 Ingress 资源

简介:Kubernetes 一贯的作风是通过定义标准来解决同一类问题,在解决集群对外流量管理的问题也不例外。Kubernetes 对集群入口点进行了进一步的统一抽象,提出了 3 种解决方案:NodePort、LoadBalancer 和 Ingress。

作者:扬少

Kubernetes Ingress 介绍

通常情况下,Kubernetes 集群内的网络环境与外部是隔离的,也就是说 Kubernetes 集群外部的客户端无法直接访问到集群内部的服务,这属于不同网络域如何连接的问题。解决跨网络域访问的常规做法是为目标集群引入一个入口点,所有外部请求目标集群的流量必须访问这个入口点,然后由入口点将外部请求转发至目标节点。

同样,Kubernetes 社区也是通过增设入口点的方案来解决集群内部服务如何对外暴露的问题。Kubernetes 一贯的作风是通过定义标准来解决同一类问题,在解决集群对外流量管理的问题也不例外。Kubernetes 对集群入口点进行了进一步的统一抽象,提出了 3 种解决方案:NodePort、LoadBalancer 和 Ingress。下图是这三种方案的对比:

通过以上对比,我们可以发现,NodePort 和 LoadBalancer 主要工作在四层流量上,只能用于暴露集群中一个服务。当集群中对外暴露的服务数量增多时,NodePort 方案最终会因端口耗尽而无法暴露更多的服务,而 LoadBalancer 方案则会引入同等数量的 SLB,在增加成本的同时也给运维带来一定的负担。定位在七层流量上的 Ingress 方案可以通过定义基于虚拟主机域和路径的路由规则来完成对集群中服务的代理,Ingress 与后端服务是一对多的关系,有效的降低了机器成本。

此外,因为外部访问集群中服务的所有入口流量都先经过共享的 Ingress Provider 节点,所以集群管理者可以在 Ingress Provider 中额外实施访问控制策略来保证集群中服务的安全性和稳定性,并且可以通过采集监控指标、记录访问日志以及开启链路追踪来增强可观测建设。因此,目前 Ingress 方案是主流的选择。

Kubernetes Ingress Provider 介绍

上文提到,Ingress 是 Kubernetes 应对集群管理外部访问流量的场景抽象出来一个资源对象,用来描述集群外部如何访问集群内部服务的方式。通过 Ingress 资源来配置不同的转发规则,从而达到根据不同的规则设置外部访问集群内不同的 Service 所对应的后端 Pod。Ingress Provider 是真实存在的 Workload 节点,是真正意义上 Ingress 规则的实现者与执行者。Kubernetes 提出 Ingress 的规范,将 Ingress 具体实现方式交给各种 Provider 以及云提供商,有效保证了 Ingress 不会被具体的 Provider 或者云厂商绑定,符合 Kubernetes 一直秉承的开放、标准的思想。

在云原生技术浪潮下,Ingress Provider 产品种类如雨后春笋般涌现,其中用户知名度最高当属 Kubernetes Nginx Ingress。接下来会简单介绍一下 Nginx Ingress Controller 和阿里云推出的下一代网关——MSE Ingress Controller(MSE 云原生网关)。

Nginx Ingress Controller

Nginx Ingress Controller 是由 Kubernetes 官方维护的,内部由 Controller 和数据面 Nginx 组成。Nginx Ingress Controller 由用户部署在 Kubernetes 集群中,通过访问集群的 API Server 来实时监听用户应用到集群中的 Ingress 资源,经 Controller 解析并转化为 Nginx 配置文件(nginx.conf),然后通过 reload 数据面 Nginx 的方式使得配置生效。

当外部请求访问集群入口点 Nginx Ingress Controller 时,匹配 Nginx Ingress 转发规则的流量转发到后端 Service 所对应的 Pod,由 Pod 处理外部请求,其流程图如下:

MSE Ingress Controller(MSE 云原生网关)

随着云原生技术持续演进,云原生应用微服务化不断深入,Nginx Ingress 在面对复杂路由规则配置、支持多种应用层协议(Dubbo 和 QUIC 等)、服务访问的安全性以及流量的可观测性等问题上略显疲惫。

为了解决用户对大规模流量治理的强烈诉求,MSE 云原生网关应运而生,这是阿里云推出的兼容标准 Ingress 规范的下一代网关,具备低成本、安全、高集成和高可用的产品优势。将传统的流量网关和微服务网关合并,在降低 50%资源成本的同时为用户提供了精细化的流量治理能力,支持 ACK 容器服务、Nacos、Eureka、固定地址、FaaS 等多种服务发现方式,支持多种认证登录方式快速构建安全防线,提供全方面、多视角的监控体系,如指标监控、日志分析以及链路追踪,并且支持解析单、多 Kubernetes 集群模式下的标准 Ingress 资源,满足云原生应用场景下以声明式进行统一流量治理的诉求。

MSE Ingress Controller 通过 List-Watch 机制获取关联的 ACK 集群中 Ingress 资源的变化,然后以热更新的方式动态更新 MSE 云原生网关的路由规则。当 MSE 云原生网关收到请求时,匹配 Ingress 转发规则转发请求到后端 Service 所对应的 Pod。

相比 Nginx Ingress Controller,首先 MSE Ingress Controller 是以热更新的方式秒级生效监听到的 Ingress 资源,这种无需重启数据面即可生效配置的方式大大提高了集群入口网关的稳定性,有效保障了业务流量无损。更重要的是,MSE Ingress Controller 可以进行多集群管理,即同时作为多个集群的入口网关,意味着可以同时监听多个集群中的 Ingress 资源,解决用户跨 Kubernetes 集群流量调度和流量治理问题。

下图是 MSE Ingress Controller 在多 ACK 集群模式下 Ingress 的应用场景。

通过 MSE 云原生网关解析 Ingress

我们将基于 MSE 云原生网关和阿里云 ACK 产品进行实践,由云原生网关解析并执行 ACK 集群中定义的 Ingress 资源,完成对外暴露 ACK 集群中指定服务。

前提条件

  • 已拥有一个 MSE 云原生网关
  • 已拥有一个 ACK 运维集群

步骤一:关联 ACK 集群并配置监听 Ingress

  1. 在 MSE 云原生网关控制台->服务管理->来源管理中,关联对应的 ACK 集群,开启监听 Kubernetes Ingress 配置,并配置 IngressClass 和监听的目标命名空间。

步骤二:部署服务

创建并拷贝以下内容到 httpbin.yaml 文件中,用于部署名称为 httpbin Deployment,以及名称为 httpbin 的 Service,然后应用到 ACK 集群中。

apiVersion: v1
kind: Service
metadata:name: httpbinlabels:app: httpbinservice: httpbin
spec:ports:- name: httpport: 8000targetPort: 80selector:app: httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:name: httpbin
spec:replicas: 1selector:matchLabels:app: httpbintemplate:metadata:labels:app: httpbinspec:containers:- image: mse-gw-demo-registry.cn-hangzhou.cr.aliyuncs.com/gw/httpbinimagePullPolicy: IfNotPresentname: httpbinports:- containerPort: 80

步骤三:配置 Ingress

创建并拷贝以下内容到 ingress.yaml 中,然后应用到 ACK 集群中。

ACK 1.19 版本之前

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:name: ingress-demo
spec:rules:- host: test.comhttp:paths:- path: /ipbackend:serviceName: httpbinservicePort: 800

ACK 1.19 及之后版本

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-demo
spec:rules:- host: test.comhttp:paths:- path: /ipbackend:service:name: httpbinport:number: 8000pathType: Exact

步骤四:访问服务

在 MSE 云原生网关控制台的基本信息查看网关 IP 地址。

通过以下命令行测试访问服务。

curl -H "host: test.com" 47.97.127.61/ip

预期结果:

{"origin": "x.x.x.x"
}

步骤五:查看域名、路由相关配置

我们可以在 MSE 云原生网关控制台查看已监听的域名和路由相关的配置,例如,上述 ingress.yaml 在云原生网关控制台的解析结果。

域名管理如下:

路由管理如下:

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

阿里云 AI 编辑部获 CCBN 创新奖,传媒行业解决方案背后的黑科技

简介:视频云驱动智媒创新 5 月 27 日,CCBN(第二十八届中国国际广播电视信息网络展览会)在北京隆重召开,在本次的 “CCBN 年度创新奖” 评选中,阿里云视频云凭借 AI 编辑部的传媒行业专业解决方案获得 CCBN …

云原生正在吞噬一切,开发者该如何应对?

十年前,Netscape创始人、硅谷著名投资人马克安德森(Marc Andreessen)预言“软件正在吞噬世界”;数年后,软件里90%以上的代码都是开源代码,“开源正在吞噬软件”;如今,“云原生吞噬开…

阿里云视频云 Retina 多媒体 AI 体验馆开张啦

简介:带你体验视频更多可能 带你体验视频更多可能 海量视频管理难度大?翻库检索特定人物费时费力?视频内容剪辑效率低?您的得力助手“Retina多媒体AI”体验馆已上线。带你感受视频AI黑科技,开启极致智能体验。 1、智…

一篇文章了解 Docker 的安装、启动以及工作原理!

作者 | 是泡泡来源 | CSDN博客Docker 浅谈1.1 Docker 为什么出现我们知道,传统的项目开发和运维是两套环境,而且要一一配置环境并且有的时候更新还会导致服务不可用,这就很麻烦了,那么有没有一种很方便不用这么麻烦的技术可以一键…

技术解读:英特尔 x86 平台上,AI 能力是如何进行演进的?(附PPT)

简介:AI 生态系统是怎样的?其中又有哪些关键技术? AI 计算力的指数增长意味着,为了解决越来越复杂的用例,即使是 1000 倍的计算性能增长也很容易被消耗。因此,需要通过软件生态系统的助力,才能…

Apsara Stack 技术百科 | 浅谈阿里云混合云新一代运维平台演进与实践

简介:随着企业业务规模扩大和复杂化及云计算、大数据等技术的不断发展,大量传统企业希望用上云来加速其数字化转型,以获得虚拟化、软件化、服务化、平台化的红利。在这个过程中,因为软件资产规模持续增大而导致的软件开发运维和IT…

Java应用结构规范

简介:在Java程序开发中,命名和应用分层无疑是广大后端同胞的两大“痛点”,本文提供一种基于领域模型的轻量级应用分层结构设计,供大家参考。下面按分层结构、分层明细、调用关系、各层规范和通用代码工具展开介绍。 作者 | 阿卓 来…

Gartner:2022年全球半导体收入增长预计将放缓至7%,远低于2021年26.3%

2022年来自个人电脑的半导体收入将下降5.4% 供稿 | Gartner 出品 | CSDN云计算 根据Gartner的最新预测,2022年全球半导体收入预计将增长7.4%,相比上一季度预测的13.6%有所下降并且远低于2021年的26.3%。 Gartner研究业务副总裁Richard Gordon表示&#…

Linux 中的管道是什么?管道重定向是如何工作的?

作者 | 刘光录来源 | TIAP我们在命令行中经常会用到类似 cmd0 | cmd1 | cmd2 的写法。其实,这是管道重定向(pipe redirection),用于将一个命令的输出作为输入重定向到下一个命令。那么,你知道它具体是怎么工作的吗&…

AliRTC 开启视频互动 “零计算” 时代

简介:在 2021 云栖大会《产业视频化创新与最佳实践》视频云主题论坛中,阿里云智能高级技术专家在《AliRTC 开启视频互动 "零处理" 时代》的主题演讲中,发布了阿里云视频云下一代实时交互解决方案 —RTC “零处理”,同时…

网易数帆Curve加入PolarDB开源数据库社区

简介:Curve社区签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手。 Curve社区签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手。 Polar…

新起之秀 DPU,正在掀起数据中心变革!

在全产业数字化转型趋势之下,网络数据呈海量增长态势,传统 CPU 解决方案已无法负载现有的业务量——数据处理的效能受到限制;上层的应用计算能力受到限制。此时,DPU 逢时而生,DPU能够通过对网络、储存、算力等资源的有…

阿里云数据库开源发布:PolarDB三节点高可用的功能特性和关键技术

简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云数据库技术专家孟勃荣 带来了主题为《PolarDB 三节点高可用》的精彩演讲。三节点高可用功能主要为 PolarDB 提供金融级强一致性、高可靠性的跨机房复制能力,基于分布式共识算法同…

全员学习低代码,一汽大众领跑数智化转型背后的秘密

简介:500位低代码开发者,90%来自一线,低代码开发在一汽-大众百花齐放。 一汽-大众有500位低代码开发者,90%是来自一线的业务人员,他们如何用低代码解决身边的数字化需求?钉钉宜搭《102个开发者故事》走进一…

智领云CEO彭锋:DataOps,大数据的新战线

作者 | 彭锋 供稿 | 智领云 2008年我在我的第一份工作(Ask.com)中开始使用Hadoop。当时是因为昂贵的Oracle集群无法处理不断增加的分析工作量,公司不得不切换到Hadoop。随后在Twitter担任数据工程师的第二份工作中,我在第一线参…

宜搭小技巧|维护Excel太麻烦?Excel一键转应用,为你的工作减负

简介:只需6步,轻松学会「Excel一键创建应用」! 在钉钉的聊天窗口中,每天都会流转数量巨大的Excel表格,用于信息收集和数据统计,但有时这些表格并不能很好地帮助到我们的工作,相反还会带来许多不…

阿里云发布第四代神龙架构,提供业界首个大规模弹性RDMA加速能力

简介:10月20日,2021年杭州云栖大会上,阿里云发布第四代神龙架构,升级至全新的eRMDA网络架构,是业界首个大规模弹性RDMA加速能力。 10月20日,2021年杭州云栖大会上,阿里云发布第四代神龙架构。相…

性能提升40%,阿里云神龙大数据加速引擎获TPCx-BB世界排名第一

简介:神龙大数据加速引擎,针对大数据常用组件,如Spark、Hadoop、Alluxio等,结合阿里云神龙架构的特性,进行软硬一体化优化,形成独一无二的性能优势,最终,使复杂SQL查询场景性能相比社区版spark提…

构造函数的原型和原型链

转载 https://blog.csdn.net/weixin_44976833/article/details/101322081 构造函数和原型和原型链 1.静态成员和实例成员 1.1静态成员 静态成员在构造函数本身上添加的成员,静态成员只能通过构造函数来访问 function Person(name,age){this.name name;this.age age; } /…

redis + lua实现分布式接口限流实现方案

作者 | 步尔斯特来源 | 步尔斯特前言redis lua脚本已然成为了单体项目主流的限流方案。redis凭借其特性成为了中间件的佼佼者,最新官方测试数据:读的速度是110000次/s写的速度是81000次/s。lua:减少网络开销:使用Lua脚本&#xf…