ACK Istio ingress gateway 生产调优

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: istio ingress gateway 生产配置调优

前言

Istio Ingress Gateway作为服务网格的核心组件,对外提供服务统一的服务入口,gateway的能力对业务至关重要,但由于涉及到资源配置及费用开销等问题,ACK集群中默认安装istio的相关组件,不会做在资源层面做特定的配置,所以存在如下可能影响性能的点:

  • 默认部署资源规格小
  • 默认replica实例数少
  • 默认入口service slb实例规格低
  • 默认和其他业务pod混部
  • 默认宿主机内核sysctl部分参数并未调整到最适合大流量场景

如果只是简单开发测试体验下istio的功能,无需为这些点做专门的调优;但是如果以生产为目标,为了使ingress gateway能够拥有更强的能力,我们需要根据我们的业务场景,有选择性的对每个点进行适当的调整。

调整资源规格

默认的istio ingress gateway deployment中pod的资源规格如下:

          resources:
            limits:
              cpu: '2'
              memory: 2G
            requests:
              cpu: 200m
              memory: 256Mi

我们可以根据实际情况,将该资源的规格适当调大,gateway是计算敏感型业务,资源可适当多分配一些CPU资源

          resources:
            limits:
              cpu: '4'
              memory: 4G
            requests:
              cpu: '4'
              memory: 4G

扩充实例个数

默认的istio ingress gateway deployment中replica的个数为1,默认有80% cpu阈值做hpa,建议上来2个replica起步,另外加上hpa使之具备一定弹性。如果考虑采用本文所述的独立部署,可不做hpa弹缩gateway。

spec:
  replicas: 1

调优入口service slb实例规格

默认ingress gateway的service对应的slb规格是slb.s1.small,该规格实例的最大连接数为5000,每秒查询数为1000 QPS,建议可按照实际需求调整slb实例规格,具体slb实例规格可参考:
https://help.aliyun.com/document_detail/27695.html
注意:修改slb实例规格请不要在SLB控制台上手动修改,规格的变更请在service的yaml中以annotation方式进行修改,例如:

  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s3.small

独立部署

为避免ingress gateway和其他业务pod混部场景下出现南北向及东西向流量互相干扰的场景,可考虑将ingress gateway独立部署于某几台规格较高的节点上,使得gateway和业务pod之间只存在南北向的流量,在此处,我们建议独立部署于计算型ECS资源上(如前所述,gateway是计算型业务,cpu开销较大),步骤可参考如下:

  1. 在集群中扩容两新ECS节点,扩容时可同时给节点打上label及污点taint(添加已有节点,也请做同样的操作)

    kubectl label node nodename app=istio-ingressgateway
    kubectl taint node nodename istio=ingressgateway:NoExecute
  2. 给ingress gateway的deployment添加node selector及对应的容忍:

          nodeSelector:
            app: istio-ingressgateway
          tolerations:
            - effect: NoExecute
              key: istio
              operator: Equal
              value: ingressgateway
  3. 重启gateway的pod,使之能调度到专属的独立节点上去。

优化sysctl内核参数

为了使ingress gateway能有更强的处理高并发的能力,建议可在ingress gateway所在的节点上调整一下内核参数:

sysctl -w net.netfilter.nf_conntrack_max=2097152
sysctl -w net.ipv4.tcp_mem="786432 2097152 3145728"
sysctl -w net.ipv4.tcp_rmem="4096 4096 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 4096 16777216"
sysctl -w net.ipv4.tcp_max_syn_backlog=65535

terway容器网络Pod独占ENI(可选)

如果我们选择的ACK集群容器网络为terway,且集群中的机型能够支持足够多的弹性网卡ENI,我们的业务也允许我们使用Terway容器网络下独占ENI的模式(每台机器支持ENI的个数有限,慎用独占模式,参考,https://help.aliyun.com/document_detail/25378.html ),那我们可以给ingress gateway及需要高性能的业务pod分配独占ENI以提高性能。

总结

经过以上几个点的调整后,可以有效提升istio ingress gateway的承载能力,为生产环境下可能出现的流量峰值提前做好准备,另外,为了应对峰值流量,gateway后端的服务也需要做相应的资源规划及hpa的配套,实测结果显示,端到端的优化配置可有效提升ingress gateway的可靠性及性能,推荐有istio生产需求的用户参照本文提升istio的承载能力。

15783104718493

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
3月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
3月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
5月前
|
编解码 运维 Kubernetes
政采云业务网关实践:使用 Higress 统一替代 APISIX/Kong/Istio Ingress
政采云基础架构团队技术专家朱海峰介绍了业务网关项目的背景和解决方案。
298 40
|
6月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
6月前
|
API
Istio 使用ingress和gateway两种方式公开服务
本文档指导您完成Istio网关的部署与配置。首先安装`istiod`(步骤略过)。接着,创建`ingress.yaml`文件,定义Istio入口网关的服务、部署及权限设置,通过`kubectl apply -f ingress.yaml`命令应用。最后,创建Ingress资源,指定主机名、后端服务及TLS配置,实现对外部请求的路由管理。
617 1
|
9月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
阿里云ACK容器服务生产级可观测体系建设实践
|
11月前
|
Kubernetes 监控 Java
有了k8s还需要gateway网关,nacos配置中心吗
在Kubernetes环境中,服务网关(如Spring Cloud Gateway)和Nacos配置中心补充了k8s的不足。Nacos提供灵活服务路由和动态配置更新,超越k8s基础服务发现。它还支持更复杂的配置管理和实时推送,以及环境隔离和版本控制。作为服务注册中心,Nacos增强k8s服务治理能力,保持技术一致性,并提供额外的安全层及监控功能。
562 0
|
Kubernetes JavaScript API
如何理解 Istio Ingress, 它与 API Gateway 有什么区别?东西流量?南北流量?
这三者都和流量治理密切相关,那么流量治理在过去和现在有什么区别呢?都是如何做的呢? 在学习istio的时候对流量管理加深了理解。什么是东西流量?什么是南北流量?
429 0
|
监控 Java 应用服务中间件
EDAS 让 Spring Cloud Gateway 生产可用的二三策
EDAS 让 Spring Cloud Gateway 生产可用的二三策
313 25

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多