ALB Ingress异常问题排查

ALB Ingress Controller是一种用于Kubernetes集群的Ingress Controller,用于将外部流量导入到集群内部的服务。当使用ALB Ingress访问服务时,ALB Ingress Controller会监听Service和Endpoint资源的变化,实时将后端节点的状态同步到对应的后端服务器组中,并将变更同步到ALB控制台。本文介绍在使用ALB Ingress过程中遇到的各种异常事件的诊断和解决方案。

资源同步原理

下方图片展示了ALB Ingress资源同步的执行过程,具体可以描述为:

  • 通过AlbConfig创建ALB实例与监听listener1和listener2。

  • 通过Ingress创建了两条转发规则rule1和rule2并关联到监听listener2上,其中转发规则rule1配置了两个服务,分别为vgroup1和vgroup2,转发规则rule2只将流量转发到vgroup2。

  • 通过监听Service和Endpoint资源的变化,实时将后端节点的状态同步到对应的后端服务器组中。

image

在资源同步过程中,可能会遇到一些限制导致同步失败。以下介绍如何查看、分析和解决异常事件。

步骤一:查看异常事件

  1. 将ALB Ingress Controller组件升级至最新版本。

    事件通知会不断更新,因此诊断前需要将ALB组件升级至最新版本。具体操作,请参见升级ALB Ingress Controller组件

  2. 执行以下命令,查看Ingress的异常事件。

    kubectl -n <your-namespace> describe ingress <your-ingress-name>

    在输出结果中查找以Events开头的模块,该模块包含与Ingress相关的事件信息。

    • Scheduled for sync:表明事件开始。

    • Successfully reconciled:表明事件成功结束。

步骤二:分析和解决异常事件

常见异常事件的报错原因及解决方案见下表。

报错信息

报错原因

解决方案

listener is not exist, port: 80, protocol: HTTP

对于2.11.0及以上版本的ALB Ingress Controller组件,Ingress上的监听只会进行关联,不会自动创建。若您未在AlbConfig中创建对应的监听,却在Ingress中使用了监听,就会产生报错信息。

若您使用的是2.11.0及以上版本的ALB Ingress Controller组件,请在AlbConfig中创建Ingress资源所需的监听。具体操作,请参见通过AlbConfig配置ALB监听

listener not found for (80/HTTP), with ingresses 1

对于2.11.0及以上版本的ALB Ingress Controller组件,如果在AlbConfig中直接移除了Ingress仍在关联的监听,将会产生报错,并显示缺失的监听和关联的Ingress个数。

如需移除监听,请将监听关联的Ingress全部移除。

重要

如果移除了预期外的监听,则需重新添加已移除的监听。

none certificate found for host

开启了TLS且有域名使用了自动发现证书功能,但是在证书中心没有发现该域名可用的证书。

The param of Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal

创建或修改转发规则时包含非法路径参数。

  • 如果您在ALB Ingress中使用了Rewrite注解,需要将pathType字段的参数值修改为Prefix

  • 如果您未在ALB Ingress使用Rewrite注解,那么有可能path字段中包含了特殊字符。

    说明

    非正则表达式类型的路径必须以/开头,支持大小写字母、数字和美元符号($)、加号(+)、正斜线(/)、and(&)、波浪线(~)、at(@)、下划线(_)、短划线(-)、英文半角句号(.)、英文半角冒号(:),还支持星号(*)和英文半角问号(?)作为通配符使用。

The param of ServerGroupName is illegal

该报错说明ALB后端服务器组命名格式不正确。

请按照正确的格式命名服务器组名称。

当前服务器组名称的生成格式是命名空间+Service名称+端口。其中,服务器组名称的字符长度为[2,128],必须以大小写字母或中文开头,可包含数字、英文半角句号(.)、下划线(_)和短划线(-)。

The specified resource sgp-vz2fb219vv792flx3u is in use

该报错说明该托管到ACK的ALB后端服务器组被另外一个ALB实例引用。

登录应用型负载均衡ALB控制台,在左侧导航栏选择应用型负载均衡 ALB > 服务器组,在服务器组页面找到对应的后端服务器组,根据需求解除关联的ALB实例。

Message: 无效参数,请检查参数输入

常见于AlbConfig指定证书时,证书ID配置错误。

请检查证书ID是否使用了资源ID或数字ID,应当使用CertIdentifier指定的证书ID。