无法从对等 v-net 连接到专用 v-net 上的 AKS 内部入口

Cant connect to AKS internal ingress on private v-net from peered v-net

我们有一个原始网络,其中包含许多 linux 个带有 docker 群容器的虚拟机。我们正在将它们迁移到 AKS,但这必须分步进行。目前我们已经在私有子网上设置了一个入口,如下所示,使用以下示例 https://docs.microsoft.com/en-us/azure/aks/ingress-internal-ip

问题:- 当连接到原始 v-net 时,我们无法连接到 2 子网上的 10.3.0.4,即 10.0.0.12:80 -> 10.3.0.4:80。在与 AKS 集群位于同一子网上的测试虚拟机上,我们可以很好地连接到 10.3.0.4。

我们可以从原始 v-net 连接到 nic 中的服务端点,即 10.0.0.12:80 -> 10.3.3.134:80/。

这不是解决方案,因为我们可以有多个副本。

知道为什么负载均衡器对原始 v-net 不可见吗?

Connected Devices in V-Net

original subnet
//10.0.0.0/24
10.0.0.0 - 10.0.0.255 (65536 addresses)
//10.0.1.0/24
10.0.1.0 - 10.0.1.255 (65536 addresses)

彼此设置了对等

aks subnet
10.3.0.0/16
10.3.0.0 - 10.3.255.255 (65536 addresses)
az aks create \
    --resource-group AKS_Workshop \
    --name workshop-aks-cluster \
    --network-plugin azure \
    --vnet-subnet-id "/subscriptions/../resourceGroups/AKS_Workshop/providers/Microsoft.Network/virtualNetworks/aksvnet/subnets/default" \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.4.0.2 \
    --service-cidr 10.4.0.0/16 \
    --generate-ssh-keys \
    --max-pods 96 \
    --node-vm-size Standard_DS2_v2
controller:
  service:
    loadBalancerIP: 10.3.0.4
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"
helm install stable/nginx-ingress /
  --name backend-ingress /
  --namespace ingress -f ingress-basic.yaml 
  --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux 
  --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
NAME                                            TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                      AGE
aks-helloworld                                  ClusterIP      10.4.121.75   <none>        80/TCP                       25h
backend-ingress-nginx-ingress-controller        LoadBalancer   10.4.233.18   10.3.0.4      80:30904/TCP,443:32023/TCP   23h
backend-ingress-nginx-ingress-default-backend   ClusterIP      10.4.198.93   <none>        80/TCP                       23h
ingress-demo                                    ClusterIP      10.4.53.2     <none>        80/TCP                       25h
Name:              ingress-demo
Namespace:         ingress
Labels:            <none>
Annotations:       <none>
Selector:          app=acs-helloworld-saucy-antelope
Type:              ClusterIP
IP:                10.4.53.2
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.3.3.134:80
Session Affinity:  None
Events:            <none>

原来这个问题与2个v-net在不同地区有关。一旦我在同一区域创建了一个 v-net,我就可以毫无问题地访问内部负载平衡器端点,因为它说你可以访问内部端点,但是如果你为你的平衡器设置了多个副本,你只能访问其中一个端点因此使其变得毫无意义

VNet 对等互连

什么是 VNet 对等互连?

VNet 对等互连(或虚拟网络对等互连)使您能够连接虚拟网络。虚拟网络之间的 VNet 对等连接使你能够通过 IPv4 地址在它们之间私密地路由流量。对等 VNet 中的虚拟机可以相互通信,就好像它们在同一网络中一样。这些虚拟网络可以位于同一区域或不同区域(也称为全球 VNet 对等互连)。也可以跨 Azure 订阅创建 VNet 对等连接。

我可以在不同区域创建到 VNet 的对等连接吗?

是的。全球 VNet 对等互连使你能够对等不同区域中的 VNet。全球 VNet 对等互连在所有 Azure public 区域、中国云区域和政府云区域可用。您无法在全球范围内从 Azure public 区域对等到国家云区域。

与全局 VNet 对等互连和负载均衡器相关的约束是什么?

如果两个不同区域中的两个虚拟网络通过全局 VNet 对等互连,则无法通过负载均衡器的前端 IP 连接到基本负载均衡器后面的资源。标准负载均衡器不存在此限制。以下资源可以使用基本负载均衡器,这意味着您无法通过负载均衡器的前端 IP 通过全局 VNet 对等访问它们。但是,如果允许,您可以使用全局 VNet 对等互连通过其专用 VNet IP 直接访问资源。

基本负载均衡器后面的 VM 具有基本负载均衡器的虚拟机规模集 Redis缓存 应用程序网关 (v1) SKU 服务架构 SQL 米 API 管理层 Active Directory 域服务 (ADDS) 逻辑应用 洞察力 天蓝色批次 应用服务环境

您可以通过 VNet 网关通过 ExpressRoute 或 VNet 到 VNet 连接到这些资源。