使用ASM Serverless网关支撑各种弹性业务场景

简介: ASM Serverless网关就是基于虚拟节点和ECI提供的一种Serverless 网关形态,充分支撑各种弹性和免节点运维场景的用户诉求。

ASM Serverless网关就是基于虚拟节点和ECI提供的一种Serverless 网关形态,充分支撑各种弹性和免节点运维场景的用户诉求。

相关概念

  • 阿里云弹性容器实例ECI是面向容器的无服务器弹性计算服务,提供免运维、强隔离、快速启动的容器运行环境。使用ECI无需购买和管理底层ECS服务器,让您更加关注在容器应用而非底层基础设施的维护工作。您可按需创建ECI,仅为容器配置的资源付费(按量按秒计费)。
  • 虚拟节点Virtual Node非常适合运行在有着明显的波峰波谷计算特征的场景,帮助用户极大降低计算成本,提升计算弹性效率。
  • 污点(Taint):作用于节点上, 它能使节点能够排斥一类特定的Pod。ACK集群中的Virtual Node默认都会打上污点virtual-kubelet.io/provider=alibabacloud:NoSchedule,以避免您在不知情的情况下使用ECI弹性资源。
  • 容忍度(Toleration):容忍度应用于Pod上。容忍度允许调度器将该Pod调度到带有对应污点的节点上。在ACK集群中,需要配置以下Toleration来容忍污点virtual-kubelet.io/provider=alibabacloud:NoSchedule,才能让Pod使用ECI资源。
        tolerations:
        - key: virtual-kubelet.io/provider
          operator: Equal
          value: alibabacloud
          effect: NoSchedule
    
  • 污点和容忍度相互配合,可以用来避免Pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的Pod,是不会被该节点接受的。如果将容忍度应用于Pod 上,则表示这些Pod 可以(但不要求)被调度到具有匹配污点的节点上。
  • 节点亲和性(nodeAffinity):规定了Pod调度时的软需求或者偏好,且在这种偏好不被满足时成功调度该Pod到其他节点。

前提

  • 如果已经是ASK集群, 无需执行以下步骤, 在ASM控制台创建ASM网关时即为ECI Pod。
  • 以下步骤适应于ACK集群(包括ACK标准版、ACK Pro版以及ACK专有版), 同时需要部署ack-virtual-node组件。具体操作,请参见部署ack-virtual-node组件。

操作步骤

步骤一:添加标签到节点

执行 kubectl get nodes 命令获取集群的节点名称。选择一个你要增加标签的节点,然后执行 kubectl label nodes = 命令将标签添加到你所选择的节点上。
比如,

kubectl label nodes node1 mykey4pod=asmgateway

步骤二:添加污点到节点

使用命令 kubectl taint 给节点增加一个 污点。比如,

kubectl taint nodes node1 mykey=myvalue:NoSchedule

给节点 node1 增加一个污点,它的 key 是 mykey,value 是 myvalue,effect 是 NoSchedule。这表示只有拥有和这个污点相匹配的容忍度 的Pod 才能够被分配到 node1 这个节点。

步骤三:为ASM网关设置节点亲和性和容忍度

1) 首先, 在ASM网关中配置nodeAffinity参数, 使ASM网关的Pod分布到指定的节点上。配置tolerations参数与上面例子中使用 kubectl taint 命令创建的污点相匹配。这样可以使得网关的Pod 能够被分配到指定的节点上。

具体操作如下:

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理。
  2. 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关。
  3. 在入口网关页面,在对应网关的右侧菜单栏内, 单击查看YAML。
  4. 在弹出的YAML编辑窗口内, 在spec下补充如下内容:
    affinity:
     nodeAffinity:
       preferredDuringSchedulingIgnoredDuringExecution:
         - preference:
             matchExpressions:
               - key: type
                 operator: In
                 values:
                   - virtual-kubelet
           weight: 20
         - preference:
             matchExpressions:
               - key: mykey4pod
                 operator: In
                 values:
                   - asmgateway
           weight: 80
       requiredDuringSchedulingIgnoredDuringExecution:
         nodeSelectorTerms:
           - matchExpressions:
               - key: mykey4pod
                 operator: In
                 values:
                   - asmgateway
           - matchExpressions:
               - key: type
                 operator: In
                 values:
                   - virtual-kubelet
    tolerations:
     - effect: NoSchedule
       key: virtual-kubelet.io/provider
       operator: Equal
       value: alibabacloud
     - effect: NoSchedule
       key: mykey
       operator: Equal
       value: myvalue
    

说明:

  • 配置的preferredDuringSchedulingIgnoredDuringExecution关联2个matchExpressions, 其中weight为20的指调度Pod使用ECI资源, weight为80的指调度Pod到指定Label的ECS节点上。此外, weight值20和80是相对值, 优先使用较大值的情况。
  • 配置的requiredDuringSchedulingIgnoredDuringExecution关联2个matchExpressions, 与上述类似, 分别指调度Pod到指定Label的ECS节点上以及调度Pod使用ECI资源。
  • 配置的Toleration来容忍污点virtual-kubelet.io/provider=alibabacloud:NoSchedule,才能让Pod使用ECI资源。
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
477 2
|
11月前
|
人工智能 缓存 安全
帮你整理好了,AI 网关的 8 个常见应用场景
通过 SLS 还可以汇总 Actiontrail 事件、云产品可观测日志、LLM 网关明细日志、详细对话明细日志、Prompt Trace 和推理实时调用明细等数据汇总,从而建设完整统一的可观测方案。
775 13
|
11月前
|
Cloud Native 算法 中间件
如何使用服务网格实现全方位的流量调度场景
阿里云服务网格(ASM)通过流量调度套件扩展了Istio的限流、熔断能力,实现分用户限流、请求排队等复杂流量管理功能,提升分布式系统高可用性与可观测性。
|
Kubernetes 容灾 Cloud Native
服务网格容灾系列场景(三):使用服务网格应对服务级故障容灾
文章介绍了使用服务网格应对服务级故障容灾的实践:服务网格ASM通过多集群、多地域部署和基于地理位置的故障转移机制,实现服务级故障的自动检测与秒级流量切换,能够确保业务在复杂故障场景下的高可用性。
|
Kubernetes 容灾 网络协议
服务网格容灾系列场景(一):使用服务网格应对地域级故障容灾
介绍基于服务网格ASM、通过在多地域部署Kubernetes集群和ASM网关,结合云解析DNS和全局流量管理GTM,实现地域级故障的自动检测与流量转移,确保业务连续性和高可用性。
|
Prometheus 监控 负载均衡
服务网格容灾系列场景(二):使用服务网格应对可用区级故障容灾
文章介绍了如何使用阿里云服务网格ASM和容器服务Kubernetes版ACK应对可用区级故障容灾,通过多可用区部署、流量管理和可观测性保障业务连续性,确保在单个可用区故障时,其他可用区仍能正常提供服务。
|
人工智能 缓存 安全
每一个大模型应用都需要一个 AI 网关|场景和能力
本次分享的主题是每一个大模型应用都需要一个 AI 网关|场景和能力。由 API 网关产品经理张裕(子丑)进行分享。主要分为三个部分: 1. 企业应用 AI 场景面临的挑战 2. AI 网关的产品方案 3. AI 网关的场景演示
1576 1
|
Kubernetes 安全 Cloud Native
解锁安全新纪元:利用服务网格Istio,打造全链路mTLS加密隧道,从入口网关到出口网关,守护数据安全的每一步
【8月更文挑战第2天】随着云原生技术的发展,服务网格(Service Mesh)如Istio已成为微服务架构的核心,通过双向TLS(mTLS)确保通信安全。首先,在Kubernetes部署Istio以管理服务通信。接着,配置入口网关实现所有入向流量的加密处理,防止数据泄露。最后,通过配置Sidecar代理如Envoy,确保服务网格安全访问外部mTLS服务,从而构建起全链路的数据安全防护。
557 11
|
Kubernetes 安全 数据安全/隐私保护
利用服务网格实现全链路mTLS(二):通过出口网关访问外部mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,简化服务治理,包括流量管理、服务间通信安全及网格可观测性。ASM出口网关统一管理网格内的出口流量,实现全链路加密通信与精细访问控制。本文介绍如何配置ASM出口网关以管理出口流量并发起mTLS通信,涉及配置ServiceEntry、创建出口网关、设置虚拟服务及目标规则等步骤,最终实现安全可控的mTLS服务访问。
451 3
|
关系型数据库 MySQL 分布式数据库
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性
作为数据库专家,我有幸带大家深入体验阿里巴巴自主研发的下一代关系型分布式云原生数据库——PolarDB MySQL版的Serverless极致弹性特性。在这个云原生和分布式技术飞速发展的时代,Pola