排查与虚拟网络外部终结点的连接问题
本文讨论如何对虚拟网络外部终结点的连接进行故障排除, (即通过公共 Internet) 从 Microsoft Azure Kubernetes 服务 (AKS) 群集进行连接。
先决条件
Kubernetes kubectl 工具或用于连接到群集的类似工具。 若要使用 Azure CLI 安装 kubectl,请运行 az aks install-cli 命令。
故障排除清单
步骤 1:执行基本故障排除
确保可以连接到 Internet 上的公共终结点。 有关说明,请参阅 出站 AKS 群集连接的基本故障排除。
步骤 2:确定 AKS 群集的出站类型
若要标识 AKS 群集的出站类型,请运行 az aks show 命令:
az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"
如果出站类型为 loadBalancer
,请确保与 AKS 节点关联的路由表具有到 Internet 的默认路由。 下表显示了详细信息。
Source | 地址前缀 | 下一跃点类型 |
---|---|---|
默认值 | 0.0.0.0/0 | Internet |
如果出站类型为 userDefinedRouting
,请确保满足以下条件:
可以访问 (防火墙或代理) 的出口设备。
出口设备允许来自群集 的所需出站流量 。
若要获取 AKS 群集允许的 FQDN 列表,请运行 az aks egress-endpoints list 命令:
az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
如果出站类型为 managedNATGateway
,则通过运行 az network nat gateway show 命令检查 AKS 子网是否与 NAT 网关相关联:
az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"
有关如何将 NAT 网关与 AKS 结合使用的详细信息,请参阅 托管 NAT 网关。
步骤 3:在连接到群集时检查cURL输出
cURL响应代码可帮助你识别问题类型。 响应代码可用后,请尝试更好地了解问题的行为方式。 有关 HTTP 状态代码和问题的基础行为的详细信息,请参阅下表。
信息源 | 链接 |
---|---|
Internet 号码分配机构 (IANA) | 超文本传输协议 (HTTP) 状态代码注册表 |
Mozilla | HTTP 响应状态代码 |
维基 百科 | HTTP 状态代码列表 |
以下 HTTP 状态代码可能指示列出的问题。
HTTP 状态代码 | 问题 | 示例 |
---|---|---|
4xx |
|
|
5xx |
问题会影响服务器。 | 应用程序已关闭,或网关无法正常工作。 |
步骤 4:确定出站流量通常通过虚拟设备,但你绕过它时会发生什么情况
若要快速测试以确定出口设备 (虚拟设备是否) 导致此问题,可以暂时允许所有流量通过 Internet。 若要配置此设置,可以改为通过虚拟设备将 的默认 0.0.0.0
/0
IP 地址和端口路由更改为通过 Internet。
此问题是否是间歇性的?
由于多种原因,可能会遇到间歇性出站问题。 若要排查间歇性出站连接问题,请尝试以下检查:
Pod 或节点是否耗尽了资源?
运行以下代码以检查资源的使用方式:
kubectl top pods
kubectl top nodes
操作系统磁盘是否经常使用?
若要检查操作系统磁盘是否大量使用,请执行以下步骤:
在Azure 门户中,搜索并选择“虚拟机规模集”。
在规模集列表中,选择用于 AKS 群集的规模集。
在规模集导航窗格中,转到 “监视 ”部分,然后选择“ 指标”。
通过查找以下字段,从 “指标 ”部分查看规模集的磁盘指标。
字段 值 范围 VMSS 名称 指标命名空间 虚拟机主机 度量标准 OS 和数据磁盘指标
有关指标的详细信息,请参阅 OS 磁盘和数据磁盘指标。
若要查看有关磁盘利用率的 AKS 建议,请执行以下步骤:
在Azure 门户中,搜索并选择“Kubernetes 服务”。
在 Kubernetes 服务列表中,选择 AKS 群集的名称。
在 AKS 群集导航窗格中,转到 “监视 ”部分,然后选择“ 顾问建议”。
查看列出的有关磁盘使用情况的建议。
如果 OS 磁盘被大量使用,请考虑使用以下补救措施:
增加 OS 磁盘大小。
切换到 临时 OS 磁盘。
如果这些补救措施不能解决问题,请分析在磁盘上执行大量读/写操作的进程。 然后,检查是否可以将操作移动到数据磁盘而不是 OS 磁盘。
源网络地址转换端口是否耗尽?
如果应用程序进行许多出站连接,则它们可能会耗尽出站设备的 IP 地址上的可用端口数。 遵循包含指标、警报和资源运行状况的标准负载均衡器诊断,以监视现有负载均衡器的源网络地址转换 (SNAT) 端口的使用情况和分配情况。 监视以验证或确定 SNAT 端口耗尽的风险。
是否达到或超过分配的 SNAT 端口的最大数目? 在这种情况下,可以检查应用程序来确定它是否重用现有连接。 有关详细信息,请参阅 设计应用程序以高效使用连接。
如果你认为应用程序配置正确,并且确实需要比默认数量的已分配端口更多的 SNAT 端口,请执行以下步骤:
增加出口设备上的公共 IP 数。 如果出口设备是负载均衡器,则可以 增加负载均衡器上的公共 IP 地址数。
第三方联系人免责声明
Microsoft 提供第三方联系信息,帮助你查找有关本主题的其他信息。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。