Kubernetes:连接到 Azure SQL

Her*_*man 5 azure kubernetes

我已将 SQL 托管在 Azure SQL 上。
从我的 AKS、每个 Pod 中,我发现它无法连接到 Azure SQL。
数据库连接:

数据源=tcp:dbname.database.windows.net,1433;初始目录=dbname;用户ID={帐户};密码={密码}

在 Azure 门户中 > 我已在下面启用此功能 在此输入图像描述

我仔细检查了连接字符串,并且能够从本地计算机进行连接,但在 kubenetes pod 内,我尝试对它响应的服务器执行 telnet

外部主机关闭连接。

我可以知道这是怎么回事吗?

Arg*_*dhu 4

Azure 为在 AKS 工作节点上运行的 Pod 提供两个选项来访问 MySQL 或 PostgreSQL 数据库实例:

\n

在 Azure DB 服务器上创建一条防火墙规则,其 IP 地址范围包含 AKS 群集节点的所有 IP(如果使用节点自动缩放,这可能是一个非常大的范围)。

\n

在 Azure DB 服务器上创建一条VNet 规则,允许从 AKS 节点所在的子网进行访问。这与在群集子网上启用的 Microsoft.Sql VNet 服务终结点结合使用。

\n

在这种情况下,出于多种原因,建议使用 VNet 规则并且更推荐使用 VNet 规则。节点通常配置有动态 IP 地址,这些地址可能会在节点重新启动时发生变化,从而导致引用特定 IP 的防火墙规则被破坏。可以将节点添加到集群,这需要更新防火墙规则以添加其他 IP。VNet 规则通过授予对 AKS 节点的整个子网的访问权限来避免这些问题。

\n

手动步骤

\n

为 AKS 和 Azure DB 配置安全网络环境需要满足以下条件:

\n
    \n
  1. AKS 集群设置
  2. \n
\n

ResourceGroup:对所有资源所需的资源进行逻辑分组。

\n

VNet:为 AKS 群集节点创建虚拟网络。

\n

Subnet具有 AKS 群集节点的专用 IP 范围\n使用上述资源创建 AKS 群集。

\n
    \n
  1. 配置托管服务访问
  2. \n
\n

VNet Service Endpoint:使用服务终结点更新上面的群集子网,以Microsoft.Sql启用新的 Azure DB 服务资源的连接。

\n
    \n
  1. 在 cluster\xe2\x80\x99s 网络上使用私有 IP 配置托管服务
  2. \n
\n

为每个托管服务实例预配托管 Azure DB 服务实例:PostgreSQL、MySQL。\nVNet Rule以允许从群集子网中的所有节点到给定 Azure DB 服务实例(PostgreSQL、MySQL)的流量。

\n