自2023年02月28日起,容器服务ASK将下线SLB Ingress,您将无法通过集群安装和管理SLB Ingress Controller组件,并不再提供SLB
Ingress技术支持。建议您尽快将SLB Ingress迁移到ALB Ingress。本文介绍如何从SLB Ingress迁移到ALB Ingress。
背景信息
由于SLB对7层支持能力较弱,例如,不支持HTTP标头改写、重定向、重写、限速等,并且需要您自行运维实例规格,导致SLB Ingress使用受到了很多限制。因此我们推出了专门面向7层的ALB
Ingress网关,该网关提供更为强大的Ingress流量管理方式。
ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)。相比于SLB Ingress,ALB Ingress具备处理复杂业务路由(支持Header、Cookie)和证书自动发现的能力,支持HTTP、HTTPS和QUIC协议,更好地满足在云原生应用场景下七层流量处理能力的需求。关于ALB与SLB功能对比,请参见负载均衡SLB产品家族介绍。
迁移流程
迁移示例
本文使用以下Ingress,并将Ingress的端点解析到域名demo.ingress.vip,以此为例进行迁移介绍。
展开查看详细YAMLapiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress
namespace: default
spec:
ingressClassName: slb
rules:
- host: demo.ingress.vip
http:
paths:
- backend:
service:
name: nginx
port:
number: 80
path: /
pathType: Prefix
在浏览器地址栏中输入demo.ingress.vip,浏览器显示Welcome to nginx!。
步骤一:创建ALB Ingress
- 安装ALB Ingress Controller组件。具体操作,请参见管理ALB Ingress Controller组件。
- 通过kubectl工具连接集群。
- 创建ALBConfig。
- 使用以下内容,创建albconfig.yaml。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
name: alb-test
addressType: Internet
zoneMappings:
- vSwitchId: vsw-wz9e2usil7e5an1xifx6u
- vSwitchId: vsw-wz92lvykqj1siwvif339j
zoneMappings:设置ALB Ingress交换机ID,您需要至少指定两个不同可用区交换机ID,且交换机必须与集群属于同一VPC。
- 执行以下命令,创建ALBConfig。
kubectl apply -f albconfig.yaml
- 执行以下命令,查看ALB实例是否创建成功。
kubectl get albconfig <albconfig的名称>
预期输出:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE
alb-demo alb-eeee6gtqbmrm19**** alb-eeee6gtqbmrm19****.cn-shenzhen.alb.aliyuncs.com 27s
- 创建IngressClass。
- 使用以下内容,创建ingressclass.yaml。
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: alb
spec:
controller: ingress.k8s.alibabacloud/alb
parameters:
apiGroup: alibabacloud.com
kind: AlbConfig
name: alb-demo
parameters.name:ALBConfig名称,用于绑定ALBConfig。
- 执行以下命令,创建IngressClass。
kubectl apply -f ingressclass.yaml
- 创建ALB Ingress。
- 使用以下内容,创建albingress.yaml。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress-alb
namespace: default
spec:
ingressClassName: alb
rules:
- host: demo.ingress.vip
http:
paths:
- backend:
service:
name: nginx
port:
number: 80
path: /
pathType: Prefix
- name:Ingress名称,与SLB Ingress的名称不能相同。
- ingressClassName:IngressClass的名称。
- 执行以下命令,创建ALB Ingress。
kubectl apply -f albingress.yaml
- 执行以下命令,获取ALB Ingress的端点。
kubectl get ing
预期输出:
NAME CLASS HOSTS ADDRESS PORTS AGE
demo-ingress slb demo.ingress.vip 120.79.**.** 80 35m
demo-ingress-alb alb demo.ingress.vip alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 80 10m 46s
从返回结果中获取ALB Ingress的端点,例如本文为alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 。
- 执行以下命令,使用ALB Ingress访问Nginx。
curl -H "Host: demo.ingress.vip" http://alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com
预期输出:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
.............
步骤二:切流到ALB Ingress
将demo.ingress.vip绑定的SLB端点修改为ALB的端点,实现使用ALB Ingress访问Nginx服务。
- 登录云解析控制台。
- 在域名解析页面,全部域名页签下,单击域名名称。
- 在解析设置页面,单击目标解析记录操作列下的修改。
- 在修改记录对话框将记录值修改为ALB Ingress的端点(本文为alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com),然后单击确定。
- 在浏览器地址栏中输入demo.ingress.vip。

浏览器显示Welcome to nginx!,说明使用ALB Ingress访问Nginx服务成功,从SLB Ingress切流到ALB Ingress成功。
步骤三:删除SLB Ingress
- 删除SLB Ingress。
- 在集群管理页左侧导航栏中,选择。
- 在路由页面上方,选择命名空间,在SLB Ingress右侧操作列,选择。
- 在弹出的对话框,单击确定。
- 卸载SLB Ingress Controller。
- 登录容器服务管理控制台,在左侧导航栏中选择集群。
- 在集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择。
- 在组件管理页面,单击其他页签,在SLB Ingress Controller卡片,单击卸载。
- 在弹出的对话框,单击确定。
FAQ
SLB Ingress是否支持平滑迁移到ALB Ingress?
由于ALB与SLB属于不同的负载均衡网关,不支持平滑迁移。