在我的Azure环境中,我有私有SQL Server。为了访问SQL Server和数据库,我使用私有端点。当我连接到SQL从VM在同一个虚拟网络我没有问题。我在同一个虚拟网络中有AKS,我尝试从pod连接到数据库,但Kubernetes DNS没有正确解析SQL Server FQDN。DNS名称解析到外部IP,但私有SQL没有外部访问权限。
这是SQL Server如何从VM解析的例子:
nslookup *****************.database.windows.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
*****************.database.windows.net canonical name = *****************.privatelink.database.windows.net.
Name: *****************.privatelink.database.windows.net
Address: 172.0.8.4
这是私有端点
的正确地址以及它如何从AKS集群中的pod中解析:
kubectl exec -it dnsutils -- nslookup *****************.database.windows.net
Server: 10.0.0.10
Address: 10.0.0.10#53
Non-authoritative answer:
*****************.database.windows.net canonical name = *****************.privatelink.database.windows.net.
*****************.privatelink.database.windows.net canonical name = dataslice6.******.database.windows.net.
dataslice6.******.database.windows.net canonical name = dataslice6*******.trafficmanager.net.
dataslice6*******.trafficmanager.net canonical name = cr5.******-a.control.database.windows.net.
Name: cr5.*******-a.control.database.windows.net
Address: 40.78.225.32
我如何设置连接pod从AKS到SQL私有端点?
创建防火墙规则Azure DB服务器具有AKS集群节点的一系列IP地址。
创建VNet规则在Azure DB服务器上,允许访问从子网到AKS节点。
在集群子网上启用Microsoft.Sql
VNet服务端点时使用。如果Azure SQL数据库被限制为只允许私有访问,我们可以使用跨区域私有端点通过Azure私有链接Azure SQL区域私有端点与Azure全局vnet对等.
要从SQL私有端点连接AKS,我们将使用VNet对等与Azure SQL数据库私有链接
查看detail请参考下面的链接:
https://learn.microsoft.com/en-us/azure/aks/command-invoke
https://arsenvlad.medium.com/aks-workload-accessing-azure-sql-database-in-another-region-cb6fb30545e4
https://argonsys.com/microsoft-cloud/library/private-aks-and-acr-using-private-endpoint-part-1-2/
https://blog.crossplane.io/azure-secure-connectivity-for-aks-azure-db/
我猜您的SQL服务器的私有IP在您的AKS集群的网络菜单中发现的docker桥的CIDR范围内。如果它在这个范围内,那么docker将不允许请求离开docker网络。