从位于不同 VNet 的 Azure K8s 集群中的 Pod 访问 Azure VM

问题描述 投票:0回答:1

我有一个运行应用程序的 pod,需要连接到另一个虚拟机来下载一些文件。 Vm 和 Aks 位于不同的 VNet 上。 我已经对这些 VNet 进行了对等,并且链接似乎已连接。然而,沟通仍然没有发生。 还有什么我应该考虑的吗?

附加信息:

  • 网络插件是Azure CNI
  • 该集群不是出于测试目的而私有的
  • NSG 有默认规则
azure azure-aks azure-virtual-network
1个回答
0
投票

当 VM 和 AKS 群集位于不同的 VNet 中时,需要 VNet 对等互连,并且您已设置 VNet 对等互连。

检查应用于 AKS 子网和虚拟机子网的 NSG 规则。尽管您使用的是默认规则,但请确保与虚拟机子网关联的 NSG 允许入站 ICMP 流量。默认情况下,NSG 允许出站 ICMP,但可能阻止入站 ICMP。您需要添加入站安全规则以允许来自 AKS 子网的 ICMP(协议号 1)。

但我有一种强烈的感觉,您的虚拟机的防火墙是连接失败的主要原因。检查虚拟机内的防火墙设置以确保其已关闭。

enter image description here

在这里,我在我的 ak 上部署了一个店面应用程序,如您所见,pod 已启动

enter image description here

并且该应用程序可以访问。

enter image description here

因此,如果您的 AKS 群集位于一个 VNet(我们称之为 VNet A)中,而您的 VM 位于另一个 VNet (VNet B) 中,则默认情况下它们将无法通信,因为它们是 Azure 中的单独网段。

要启用它们之间的通信,您需要在 VNet A 和 VNet B 之间设置 VNet 对等互连。

enter image description here

这将允许资源(例如您的 AKS Pod 和 VM)跨 VNet 进行通信,如上图所示,并禁用 VM 内的内部防火墙,现在 Pod 和 VM 都能够相互通信,如下所示-

enter image description here

所以三件事-

  • vnet 对等互连
  • 检查 nsg 规则是否允许
  • 禁用虚拟机内的防火墙

参考-

© www.soinside.com 2019 - 2024. All rights reserved.