优惠中心

新用户5折优惠券

邮件推送 - 5.4折优惠

了解更多

Ingress诊断

更新时间:2023-08-28 09:24

容器服务平台提供Ingress诊断功能,帮助您诊断Ingress常见问题。本文介绍Ingress诊断对应的检查项以及修复方案。

Ingress诊断包括Ingress检查、启动参数配置、Ingress Pod错误日志、Ingress Controller SLB等检查项。

重要

使用故障诊断功能时,系统将在您的集群节点上执行数据采集程序并收集检查结果。采集的信息包括系统版本,负载、Docker、Kubelet等运行状态及系统日志中关键错误信息。数据采集程序不会采集您的业务信息及敏感数据。

Ingress诊断对应的检查项

说明

根据集群配置,具体检查项可能稍有不同。实际结果请以诊断页面结果为准。

诊断项分组

说明

诊断项分组

说明

Ingress

检查集群Ingress资源可用性等。

Addon

检查Ingress组件启动参数配置、Ingress Service及Pod等。

SLB

检查Ingress Controller SLB状态、最大连接数、QPS、健康检查等。

Ingress

检查项

检查项说明

修复方案

检查项

检查项说明

修复方案

Ingress存在

检查是否通过提供的信息找到了对应的Ingress资源。

检查所提供的URL信息是否有能够对应的Ingress规则。若URL信息无误,可能是Ingress规则存在问题,例如,使用了正则表达式作路径,而没有使用use-regex注解等。

使用base-url-scheme

使用了nginx.ingress.kubernetes.io/base-url-scheme,该注解已在0.22.0版本废弃。

确认当前Ingress Controller版本,移除该注解或使用其他注解代替。

使用grpc-backend

使用了nginx.ingress.kubernetes.io/grpc-backend,该注解已在0.21.0版本废弃。

确认当前Ingress Controller版本,移除该注解或使用其他注解代替。

使用mirror-uri

使用了nginx.ingress.kubernetes.io/mirror-uri,该注解已在0.24.0版本废弃。

确认当前Ingress Controller版本,移除该注解或使用其他注解代替。

使用secure-backends

使用了nginx.ingress.kubernetes.io/secure-backends,该注解已在0.21.0版本废弃。

确认当前Ingress Controller版本,移除该注解或使用其他注解代替。

使用session-cookie-hash

使用了nginx.ingress.kubernetes.io/session-cookie-hash,该注解已在0.24.0版本废弃。

确认当前Ingress Controller版本,移除该注解或使用其他注解代替。

使用nginx.com/nginx.org注解

检查Ingress上是否使用了商业版Ingress的注解配置(以nginx.com/nginx.org开头),该配置无法在社区版Nginx Ingress Controller上使用。

请使用对应功能的正确用法。关于Ingress更多信息,请参见Nginx Ingress管理或社区官方文档Nginx Ingress Controller

启用Canary

当使用Canary相关功能时,需要指定nginx.ingress.kubernetes.io/canary: "true"。如果没有指定开启,Canary功能不会生效。

如果您需要在该Ingress上开启Canary功能,请在Ingress规则上添加nginx.ingress.kubernetes.io/canary: "true"注解。

Addon

检查项名称

检查项说明

修复方案

检查项名称

检查项说明

修复方案

Ingress就绪Pod百分比

Ingress Deployment已就绪的Pod百分比,此值小于100表明Ingress Pod可能出现问题导致启动或健康检查失败。

请根据错误日志查找问题Pod并修复。关于Ingress异常问题排查,请参见Nginx Ingress异常问题排查

Ingress资源上存在地址

检查Ingress资源被Ingress Controller成功更新了地址。

该值不存在时,检查Ingress的IngressClass是否存在对应的Ingresse Controller,以及Controller是否正常工作。具体问题可查看其他检查点的检查结果。

Leader Pod存在

选主成功,存在Leader Pod。若该值不存在,可能是由于Pod启动时间过短或Ingress Controller权限配置问题导致。

检查Ingress Pod是否存在错误日志,并修复日志问题。关于Ingress异常问题排查,请参见Nginx Ingress异常问题排查

Nginx Ingress使用正确的Annotation

社区版Nginx Ingress Controller使用nginx.ingress.kubernetes.io开头的Annotation,而不是以nginx.com/nginx.org开头。因为使用nginx.com/nginx.org开头的Annotation,将无法被Nginx Ingress Controller识别,会造成配置无效或不符合预期。

请设置正确的Annotation。关于Annotation更多信息,请参见Annotations

Nginx Ingress中rewrite-target配合捕获组使用

检查使用了rewrite-target的Nginx Ingress规则是否与捕获组一起使用。在0.22.0及以上版本使用rewrite-target时,需要显式指定捕获组,否则会造成流量转发异常。

请正确配置Ingress。关于Ingress配置更多信息,请参见Nginx Ingress高级用法

Nginx Ingress灰度规则

检查service-match和service-weight是否指定不超过2个目标服务。service-match和service-weight仅支持2个服务间的流量分发,配置大于2个将导致多出的配置被忽略,出现流量不符合预期的情况。

请调整规则中的服务数量。

Ingress名称

展示所匹配到的Ingress规则名称。

无。

Pod错误日志

Ingress Controller Pod中存在错误日志。出现错误日志可能表示Ingress Controller工作异常。

根据错误日志查找原因并修复。关于Ingress异常问题排查,请参见Nginx Ingress异常问题排查

使用rewrite-target时路径中使用捕获组

在0.22.0及以上版本时,使用nginx.ingress.kubernetes.io/rewrite-target注解时,需要配合捕获组一起使用,否则可能会导致转发路径出错。

请正确配置Ingress信息。有关Ingress更多信息,请参见配置URL重定向的路由服务

service-*配置多个目标

service-weight和service-weight仅支持2个服务之间的流量分发,不支持3个及以上的服务。

请正确配置service-weight或service-match。有关配置更多信息,请参见通过Nginx Ingress实现灰度发布和蓝绿发布

Ingress Service存在

Ingress启动参数中指定的Service是否存在。该Service被删除可能会导致Ingress启动异常等情况。

在Deployment启动参数中确认被删除的Service名称,并修复问题。更多信息,请参见网络与负载均衡相关高危操作

Ingress Service存在端点

Ingress Service正确存在端点。若不存在,会导致SLB无法正常将流量转发到Ingress Controller中。

检查Service的标签选择器是否正常。

Ingress Service存在事件

Ingress Service上存在Warning或Error事件。可能是由于SLB配置出现问题导致的。

检查Service异常事件,查找原因并修复问题。有关Service异常问题排查,请参见Service异常事件及处理方式

Ingress Service外部流量策略

外部流量策略影响流量进入集群后的分发方式。默认为Local,可以更改为Cluster。推荐使用Local模式,在不使用Local模式时,客户端源IP可能无法正常保留,且会导致SLB健康检查不准确。

若您确认要使用Cluster模式或有集群内部通过SLB地址访问Ingress Controller的需求,请忽略该警告。否则,推荐将外部流量策略改为Local。

Ingress Service有外部IP地址

Service上有通过CCM(Cloud Controller Manager)分配的IP地址。若不存在该地址,可能导致Ingress无法通过公网访问。

检查Service状态、CCM状态、SLB配额等指标是否正常。大部分问题通过事件的形式暴露。

Ingress Service为LoadBalancer类型

Ingress启动参数中指定的Service为LoadBalancer类型。如果不为该类型时,可能会导致Ingress Controller无法被外网访问。

如果确认不需要LoadBalancer类型的Service,可忽略该警告。否则,请将Service类型改为LoadBalancer。

使用--force-namespace-isolation

使用了--force-namespace-isolation启动参数,该参数已经在0.24.0版本废弃。

确认当前Ingress Controller版本,移除该启动参数。

使用--sort-backends

使用了--sort-backends启动参数,该参数已经在0.22.0版本废弃。

确认当前Ingress Controller版本,移除该启动参数。

SLB

检查项名称

检查项说明

修复方案

检查项名称

检查项说明

修复方案

SLB存在

检查Ingress Controller的SLB是否存在。

请检查Ingress Controller Service是否存在,且无异常事件,以及SLB控制台中是否存在对应SLB实例。若SLB实例被误删,可通过重建Service的方式进行恢复。具体操作,请参见误删除SLB怎么办?

Ingress Controller SLB当前健康检查状态

检查当前事件SLB后端的健康检查状态。

当前SLB后端健康检查状态异常。请检查Ingress Controller Service有无异常事件,组件负载是否过高。关于组件异常问题排查,请参见Nginx Ingress异常问题排查

SLB ID

展示对应SLB实例的ID。

无。

Ingress Controller SLB最大连接数检查

检查SLB过去三天最大连接数是否超过上限的80%以上。连接数达到上限后无法建立新连接,可能会导致客户端无法访问。

SLB实例连接数过高,为避免业务受损,请提升实例规格。具体操作,请参见使用指定的SLB实例

Ingress Controller SLB新建连接速率检查

检查SLB过去三天最大新建连接速率是否超过上限的80%以上。新建连接速率达到上限后,短时间内无法建立新连接,导致客户端无法访问。

SLB实例新建连接速率过高,为避免业务受损,请提升实例规格。具体操作,请参见使用指定的SLB实例

Ingress Controller SLB QPS检查

检查SLB过去三天最大QPS是否达到上限的80%。QPS达到上限后,可能导致客户端无法访问。

SLB实例QPS过高,为避免业务受损,请提升实例规格。具体操作,请参见使用指定的SLB实例

TLS同时配置Host与SecretName

配置Ingress TLS规则时,需要同时配置Host和SecretName字段。

请同时配置Host与Secret字段,并且确保Host与证书信息对应。

Ingress Controller SLB 健康检查失败检查

检查SLB过去三天是否存在健康检查失败的情况,可能由于组件负载过高或配置错误引起。

过去三天内存在健康检查失败,为避免业务受损,请检查Ingress Controller Service有无异常事件,组件负载是否过高。关于组件异常问题排查,请参见Nginx Ingress异常问题排查

  • 本页导读 (1)
  • Ingress诊断对应的检查项
  • Ingress
  • Addon
  • SLB
文档反馈
phone 联系我们

立即和Alibaba Cloud在线服务人员进行交谈,获取您想了解的产品信息以及最新折扣。

alicare alicarealicarealicare