云边协同的场景中,边缘单元下的服务呈现本地流量闭环的特性,即流量优先在边缘节点池内完成处理。本文介绍如何在ACK Edge集群的云端节点池和边缘节点池部署Nginx Ingress Controller,为边缘单元下的服务提供负载均衡等功能。
背景信息
阿里云容器服务 Edge 版采用非侵入方式增强,提供边缘自治、边缘单元、边缘流量管理、原生运维API支持等能力。它以原生方式支持边缘计算场景下的应用统一生命周期管理和统一资源调度。您可以快速将自己的边缘节点接入到集群中。
注意事项
在云端节点池和边缘节点池部署ack-ingress-nginx-v1时注意事项如下:
ACK Edge集群为1.19及以上版本。
支持在同一个ACK Edge集群上多次部署, 每次需唯一的发布名称。建议每次部署选择独立的命名空间以便管理。
首次部署时若不修改参数配置,则ack-ingress-nginx-v1默认部署到ACK Edge集群的默认节点池。
操作步骤
登录容器服务管理控制台,在左侧导航栏选择。
在应用市场的应用目录页签,搜索并选中ack-ingress-nginx-v1。
在ack-ingress-nginx-v1组件页面,单击右上角的一键部署。
在弹出面板中,选择集群、命名空间,并填写发布名称。
说明在节点池部署ack-ingress-nginx-v1时,建议发布名称以ack-ingress-nginx-v1-{节点池名称}格式命名。例如:ack-ingress-nginx-v1-edge-hangzhou。
单击下一步进入参数配置页面,设置参数信息。
您可以在容器服务管理控制台集群管理页左侧导航栏中,选择,查看节点池列表,找到对应的云端节点池ID和边缘节点池ID,用于后续配置
nodeSelector。在云端节点池部署时需设置如下参数:
在
nodeSelector配置项中加入云端节点池的Label:alibabacloud.com/nodepool-id: {节点池ID}。说明nodeSelector字段只需保留alibabacloud.com/nodepool-id: {节点池ID}信息。
在
ingressClassResource配置项中设置name和controllerValue。说明在同一个ACK Edge集群中多次部署ack-ingress-nginx-v1时,每次部署的
name和controllerValue要确保唯一。命名规范建议如下:name:ack-nginx-{节点池名称},例如:ack-nginx-edge-hangzhou。controllerValue:"k8s.io/ack-ingress-nginx-{节点池名称}",例如:"k8s.io/ack-ingress-nginx-edge-hangzhou"。

在边缘节点池部署时需设置如下参数:
在
nodeSelector配置项中加入边缘端节点池的Label:alibabacloud.com/nodepool-id: {节点池ID}。说明nodeSelector字段只需保留alibabacloud.com/nodepool-id: {节点池ID}信息。
将
global. edgeNodePool设置为true。ack-ingress-nginx-v1会自动进行如下操作:自动将边缘节点侧部署的Nginx Ingress Controller的Service的Type类型由LoadBalancer改为NodePort模式。若您需要将边缘侧的服务对公网进行访问,则需要单独配置带有公网IP的负载均衡器。
Nginx Ingress Controller使用的镜像,会自动变为公网地址的镜像,避免边缘侧节点无法拉取内网镜像。

在
ingressClassResource配置项中设置name和controllerValue。说明在同一个ACK Edge集群中多次部署ack-ingress-nginx-v1时,每次部署的
name和controllerValue要确保唯一。命名规范建议如下:name:ack-nginx-{节点池名称},例如:ack-nginx-edge-hangzhou。controllerValue:"k8s.io/ack-ingress-nginx-{节点池名称}",例如:"k8s.io/ack-ingress-nginx-edge-hangzhou"。

单击确定完成安装。
在集群管理页左侧导航栏中,选择。
在Helm页面可以看到Nginx Ingress Controller服务已经部署成功。