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

时间:2020-02-06 15:36:05

标签: nginx kubernetes-ingress azure-virtual-network azure-aks

我们有一个原始网络,其中包含许多带有docker swarm容器的linux VM。我们正在将它们迁移到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。在相同子网上的测试VM上,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>

1 个答案:

答案 0 :(得分:0)

事实证明,问题与2 v网络位于不同区域有关。在同一地区创建v-net后,击中内部负载均衡器端点就没有问题,因为它说您可以访问内部端点,但是如果您为平衡器设置了多个副本,则只能命中一个。端点从而使其变得毫无意义

VNet对等

什么是VNet对等?

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

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

是的。全局VNet对等关系使您可以对不同区域中的VNet进行对等。在所有Azure公共区域,中国云区域和政府云区域中都可以使用全局VNet对等。您无法在全球范围内从Azure公共区域浏览到国家云区域。

与全局VNet对等和负载平衡器相关的约束有哪些?

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

基本负载均衡器背后的虚拟机 具有基本负载平衡器的虚拟机规模集 Redis缓存 应用程序网关(v1)SKU 服务面料 SQL MI API管理 Active Directory域服务(ADDS) 逻辑应用 HDInsight Azure批处理 应用服务环境

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