阿里云网络发布云原生网关 alibaba-load-balancer-controller v1.2.0,持续拥抱开源生态

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: alibaba-load-balancer-controller开源版本正式推出v1.2.0,能力对齐ALB Ingress Controller商业版v2.10.0。

【阅读原文】戳:阿里云网络发布云原生网关 alibaba-load-balancer-controller v1.2.0,持续拥抱开源生态


引言:ALB Ingress作为阿里云官方推荐的云原生Ingress网关解决方案,已在包括阿里云容器服务ACK和ACK Serverless在内的多个Kubernetes部署场景中广泛应用。

 

为更好地服务于在阿里云上自建Kubernetes集群的用户,帮助用户更方便快捷地利用ALB产品的优势,阿里云网络基于ALB Ingress Controller商业版特性,推出了开源版本的alibaba-load-balancer-controller。自alibaba-load-balancer-controller v1.1.2发布以来,阿里云网络不断收集到来自用户的反馈及新的市场需求,在此基础上持续迭代产品,正式推出全新开源版本alibaba-load-balancer-controller v1.2.0,能力对齐阿里云洛神云网络ALB Ingress Controller商业版v2.10.0。

 

 

01

功能革新、体验升级与最佳实践

 

alibaba-load-balancer-controller v1.2.0在产品功能拓展、用户体验提升以及稳定性保障等方面均做出了显著改进。同时,云网络积极响应用户需求,持续针对高使用率场景推出最佳实践方案,助力用户高效快捷地掌握ALB Ingress在不同业务场景下的配置与使用。

 

 

1.1. 功能特性,强大而全面

 

相较于alibaba-load-balancer-controller v1.1.0,在最新推出的v1.2.0版本中,阿里云网络产品团队紧紧围绕云原生场景下客户的重点需求进行了深入的优化和创新,对实例管理、监听机制、转发规则、服务器组以及安全管理等关键部分进行了全面升级,力求不断丰富产品功能特性,包括:

 

新增更多定制化选项,如自定义标签、资源组指定

 

新增监听支持QUIC协议

 

新增转发条件支持匹配自定义header、cookie、支持path字段的正则匹配;转发动作支持跨域、流量镜像以及更多自定义action

 

新增支持ACL,并提供基于ACL ID和ACL Entry的管理方式

 

新增支持secret证书

 

1.2. 体验优化,简单而专业

 

在alibaba-load-balancer-controller v1.2.0中,阿里云网络产品团队还重点进行了开发使用的体验优化,包括:

 

优化Event通知机制、异常事件反馈和调谐流程等,有助于开发者更快地定位和解决问题,开发者可以通过kubectl describe ingress  -n 查看异常事件报出。

 

优化Ingress资源的无阻塞删除、监听错误隔离等,不同监听之间的异常事件不再互相阻塞,有助于开发者降低运维复杂度和成本。

 

优化异步调用API、资源哈希等,提升响应速度并避免了预期外调谐行为。

 

1.3. 最佳实践,简明而高效

 

如何实现混合挂载、跨地域挂载和本地IDC挂载_容器服务Kubernetes版ACK(ACK)-阿里云帮助中心等最佳实践推出以来不断收获积极反馈,这也推动我们不断探索和总结,推出一系列新的最佳实践:

 

 

1.3.1 实践1:使用ReadinessGate实现ALB Ingress后端Pod滚动升级时平滑上线

 

在Pod上线阶段,需要确保Pod在接收流量之前真正达到可服务状态,开发者可以通过配置ReadinessGate来保证Pod上线阶段的可用性。ALB Ingress Controller支持启用ReadinessGate功能,持续监控ACK集群Pod的状态,等待Pod状态变为可用状态后再将完全启动的Pod挂载到后端服务器组,并向该Pod转发流量。

 

通过在Deployment中配置ReadinessGate自定义Condition:target-health.alb.k8s.alibabacloud,使ACK集群持续监控Pod的状态,直到状态为可用状态才认为Pod已经启动并挂载到后端服务器组上:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: tea
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tea
  template:
    metadata:
      labels:
        app: tea
    spec:
      containers:
      - name: tea
        image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
        ports:
        - containerPort: 80
# 配置readinessGate
      readinessGates:
        - conditionType: target-health.alb.k8s.alibabacloud
---
apiVersion: v1
kind: Service
metadata:
  name: tea-svc
spec:
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: tea
  type: NodePort

 


您可以执行以下命令,检查ReadinessGate配置是否生效:

 

kubectl get pods -o yaml |grep 'target-health'

 

 

预期输出_:


-conditionType:target-health.alb.k8s.alibabacloud 
     message:correspondingconditionofpodreadinessgate"target-health.alb.k8s.alibabacLoud"

 

 

1.3.2 实践2:使用preStop Hook实现ALB Ingress后端Pod滚动升级时平滑下线

 

 

在使用Pod节点作为应用承载平台时,对应用重新部署或对Deployment中Image镜像地址进行修改,会触发Kubernetes滚动更新,旧的Pod会终止服务,新的Pod节点会部署。在Pod滚动升级过程中如果旧的Pod没有平滑退出,会导致应用无法关闭业务请求,访问出现大量5xx状态码,影响业务持续性。通过为Pod设置平滑退出机制,能够保证流量停止/ALB Ingress Controller将Pod从后端服务器组移除后再平滑下线Pod,保证滚动升级过程中流量不中断。

 

您可以通过在Deployment配置内添加preStop Hook,为容器设置一个"Sleep"暂停期。这个暂停期是让容器有时间在收到SIGTERM之前完成网络规则的更新,并等待ALB Ingress Controller完成Server调谐事件并确保Pod已从后端服务器组中移除。这一步骤对于保障Pod的平稳下线至关重要,避免在滚动更新或服务重启期间造成流量中断。


同时,Kubernetes为容器设定了在接收到SIGTERM后能持续运行的最大宽限期(terminationGracePeriodSeconds)为30秒。当程序关闭时间与preStop Hook指定的操作时间之和超过了30秒时,默认宽限期将不足以让容器完成所有的关闭步骤。kubelet会在等待2秒后直接给容器发送立即终止(SIGKILL)信号,导致容器强制退出。如果程序的关闭时间和在Deployment配置的preStop Hook之和超过30秒,您也可以将terminationGracePeriodSeconds重新设置,调整为大于30秒,确保容器优雅退出。


在应用Deployment中添加preStop Hook,并修改终止terminationGracePeriodSeconds时间,配置示例如下:


...
spec:
      containers:
        lifecycle:
          preStop:
            exec:
              command:
# 设置pre Stop Hook函数,使kube-apiserver等待10s
              - /bin/sh
              - -c
              - "sleep 10"
# 设置Pod删除宽限期
      terminationGracePeriodSeconds: 45
...

 

 

您可以在应用Deployment中添加preStopHook并修改terminationGracePeriodSeconds后,持续访问业务,在此期间重新部署应用,实现Pod滚动升级,测试验证平滑下线的有效性。测试脚本示例如下:


#!/bin/bash
HOST="demo.ingress.top"
DNS="alb-kwha5cxwhuiis****.cn-beijing.alb.aliyuncs.com"
printf "Response Code|| TIME \n" >> log.txt
while true
do
  curl -H Host:$HOST  -s -o /dev/null -w "%{http_code}  " -m 1  http://$DNS/ >> log.txt
  date +%Y-%m-%d_%H:%M:%S >> log.txt
sleep 1
done

 

 

预期测试结果_:

 

初始阶段应用副本数为3

 

 

在重新部署应用时,新Pod创建阶段由于新Pod没有就绪,旧Pod仍在提供服务,会同时运行新旧两个Pod

 

 

新Pod就绪且成功挂载至ALB后端服务器组上后,才会终止对应的旧Pod

 

 

所有旧Pod完成preStopHooks函数或超出terminationGracePeriodSeconds超时时间后,kubelet会向container发送信号终止旧的Pod,滚动更新完成

 

 

检查滚动更新过程中请求的状态码,可以看到状态码全部为200,更新过程没有任何中断

 

 

 

02

开启探索,尽在alibaba-load-balancer-controller v1.2.0

 

即刻启动Kubernetes集群,尝试alibaba-load-balancer-controller v1.2.0版本,感受云原生开源网关的新高度,在这里您可以找到详尽的文档和完整的使用指南,协助您轻松上手。

 

开源地址:https://github.com/alibaba/alibaba-load-balancer-controller

 

 


1.您可以自行构建镜像,也可以在Docker Hub拉取我们提供的官方镜像,部署至您的Kubernetes集群。

 

构建镜像:https://github.com/alibaba/alibaba-load-balancer-controller/blob/v1.2.0/docs/dev.md

 

Docker Hub 拉取镜像:docker pull alibabacloudslb/alibaba-load-balancer-controller:v1.2.0


 

2.我们的入门指南将引导您创建AlbConfig、IngressClass及Ingress资源。这是尝试使用ALB Ingress将流量路由至后端服务的最佳实践。

 

入门指南和资源创建:https://github.com/alibaba/alibaba-load-balancer-controller/blob/main/docs/getting-started.md


 

3.通过配置词典全面了解如何定义自己的转发规则,优化您的服务流量分发,以满足具体业务需求。

 

配置词典:https://github.com/alibaba/alibaba-load-balancer-controller/blob/v1.2.0/docs/usage.md

 

 

4.更多使用指南及配置样例,您可以参考官方文档ALB Ingress功能操作指导。

 

官方文档:https://help.aliyun.com/zh/slb/application-load-balancer/user-guide/functions-and-features-of-alb-ingresses?spm=a2c4g.11186623.0.0.16266127az0tB3

 

 

03

携手成长,共创辉煌未来

 

alibaba-load-balancer-controller v1.2.0的发布,标志着阿里云网络对客户承诺的持续兑现和对产品卓越追求的不懈努力。alibaba-load-balancer-controller期望成为开发者可靠的伙伴,为开发者和企业的云原生应用保驾护航!

 

如果您在使用过程中遇到任何问题或对阿里云网络产品改进有任何建议,欢迎访问阿里云网络产品社区或联系技术支持团队,也可以创建issue与我们进行交流:https://github.com/alibaba/alibaba-load-balancer-controller/issues




我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微博知乎

获取关于我们的更多信息~


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
10天前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
3天前
|
云安全 人工智能 安全
阿里云稳居公共云网络安全即服务市占率第一
日前,全球领先的IT市场研究和咨询公司IDC发布了《中国公有云网络安全即服务市场份额,2023:规模稳步增长,技术创新引领市场格局》报告。报告显示,阿里云以27.0%的市场份额蝉联榜首。
|
5天前
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
24 4
|
9天前
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。
|
6天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
15天前
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
【10月更文挑战第27天】计算机主机网关的作用类似于小区传达室的李大爷,负责将内部网络的请求转发到外部网络。当小区内的小不点想与外面的小明通话时,必须通过李大爷(网关)进行联系。网关不仅帮助内部设备与外部通信,还负责路由选择,确保数据包高效传输。此外,网关还参与路由表的维护和更新,确保网络路径的准确性。
38 2
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
5天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
6天前
|
消息中间件 存储 Cloud Native
云原生架构下的数据一致性挑战与应对策略####
本文探讨了在云原生环境中,面对微服务架构的广泛应用,数据一致性问题成为系统设计的核心挑战之一。通过分析云原生环境的特点,阐述了数据不一致性的常见场景及其对业务的影响,并深入讨论了解决这些问题的策略,包括采用分布式事务、事件驱动架构、补偿机制以及利用云平台提供的托管服务等。文章旨在为开发者提供一套系统性的解决方案框架,以应对在动态、分布式的云原生应用中保持数据一致性的复杂性。 ####

热门文章

最新文章