本文介绍如何解决无法连接到 Azure Kubernetes 服务 (AKS) 群集时发生的问题,因为客户端 IP 地址无法访问 AKS API 服务器。
先决条件
现象
尝试从Azure 门户访问 Kubernetes 资源(如 mamespaces 和工作负载)时,可能会遇到以下错误:
网络错误
无法访问 API 服务器“https://< API-server-FQDN>”或 API 服务器太忙,无法响应。 检查网络设置并刷新以重试。
尝试使用 Azure CLI 连接到群集时,可能会看到以下错误:
"Unhandled Error" err="couldn't get current server API group list: Get \"https://<API-SERVER-FQDN>:443/api?timeout=32s\": dial tcp <API-SERVER-IP>:443: i/o timeout"
Unable to connect to the server: dial tcp <API-SERVER-IP>:443: i/o timeout
Unable to connect to the server: dial tcp <API-SERVER-IP>:443: connectex: A connection attempt failed because the connected party did not properly respond after a period, or established connection failed because connected host has failed to respond.
原因
API 服务器授权的 IP 范围 可能已在群集的 API 服务器上启用,但 IP 范围中不包括客户端的 IP 地址。 若要检查此功能是否已启用,请参阅 Azure CLI 中的以下 az aks show 命令是否生成 IP 范围列表:
az aks show --resource-group <cluster-resource-group> \
--name <cluster-name> \
--query apiServerAccessProfile.authorizedIpRanges
解决方案
查看群集的 API 服务器授权范围,并在该范围内添加客户端的 IP 地址。
注意
是否从通过代理服务器或防火墙路由流量的公司网络访问 API 服务器? 然后在将客户端 IP 地址添加到 API 服务器的授权范围列表中之前,请向网络管理员请求。
此外,在添加客户端 IP 地址之前,请向群集管理员询问,因为可能会担心向授权范围列表添加临时 IP 地址。
从Azure 门户导航到群集。
在左侧菜单中,找到 “设置” ,然后选择“ 网络”。
在 “网络 ”页上,选择“ 概述 ”选项卡。
在“资源设置”下选择“管理”。
在 “授权 IP 范围 ”窗格中,添加客户端 IP 地址,如以下屏幕截图所示:
通过运行以下 curl 命令获取客户端 IP 地址:
$ curl --silent checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: 0.255.127.63</body></html>
使用客户端 IP 地址在 Azure CLI 中使用 az aks update 命令更新 API 服务器授权的范围:
az aks update --resource-group <cluster-resource-group> \
--name <cluster-name> \
--api-server-authorized-ip-ranges <ip-ranges-that-include-your-client-ip-address>
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。