使用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
相关文章
|
机器学习/深度学习 机器人 Serverless
FaaS 的应用场景
FaaS 的应用场景
|
消息中间件 存储 监控
函数计算产品使用问题之“低频介质型”适用哪些场景
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11月前
|
Cloud Native 算法 中间件
如何使用服务网格实现全方位的流量调度场景
阿里云服务网格(ASM)通过流量调度套件扩展了Istio的限流、熔断能力,实现分用户限流、请求排队等复杂流量管理功能,提升分布式系统高可用性与可观测性。
|
机器学习/深度学习 分布式计算 大数据
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
580 15
|
Kubernetes 容灾 Cloud Native
服务网格容灾系列场景(三):使用服务网格应对服务级故障容灾
文章介绍了使用服务网格应对服务级故障容灾的实践:服务网格ASM通过多集群、多地域部署和基于地理位置的故障转移机制,实现服务级故障的自动检测与秒级流量切换,能够确保业务在复杂故障场景下的高可用性。
|
Kubernetes 容灾 网络协议
服务网格容灾系列场景(一):使用服务网格应对地域级故障容灾
介绍基于服务网格ASM、通过在多地域部署Kubernetes集群和ASM网关,结合云解析DNS和全局流量管理GTM,实现地域级故障的自动检测与流量转移,确保业务连续性和高可用性。
|
Prometheus 监控 负载均衡
服务网格容灾系列场景(二):使用服务网格应对可用区级故障容灾
文章介绍了如何使用阿里云服务网格ASM和容器服务Kubernetes版ACK应对可用区级故障容灾,通过多可用区部署、流量管理和可观测性保障业务连续性,确保在单个可用区故障时,其他可用区仍能正常提供服务。
|
存储 文件存储 对象存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析,以期为您的模型存储决策提供帮助。
|
11月前
|
存储 文件存储 对象存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
AI 场景下,函数计算 GPU 实例模型存储最佳实践
272 0
|
机器学习/深度学习 机器人 Serverless
【10月更文挑战第1天】FaaS 的应用场景
【10月更文挑战第1天】FaaS 的应用场景