我在netwrok内有两台机器,我想通过Pod进行通信。

Ips如下:

10.0.1.23 - Lets call it X

13.0.1.12  - Lets call it Y

当我SSH到主节点或代理节点,然后对X或Y执行ping操作时,ping操作成功。
因此,机器是可及的。

现在创建部署,我使用(kubectl exec -it POD_NAME — /bin/sh)登录到Pod的 shell 。

向Y ping成功。但是对X的ping操作失败。

CIDR详细信息:
Master Node : 14.1.255.0/24
Agent Node: 14.2.0.0/16
Pod CIDR:
   Agent : 10.244.1.0/24
   Master: 10.244.0.0/24

我对可能的问题的理解:



附加信息:

我正在使用acs-engine进行群集部署。
ip route的输出
default via 10.244.1.1 dev eth010.244.1.0/24 dev eth0 src 10.244.1.13
另一个嫌疑人:在运行iptables-save时,我看到了
-A POSTROUTING ! -d 10.0.0.0/8 -m comment --comment "kubenet: SNAT for outbound traffic from cluster" -m addrtype ! --dst-type LOCAL -j MASQUERADE

最佳答案

根据您的问题,听起来好像您已将另一个子网添加到随ACS Kubernetes集群一起部署的k8虚拟网络中。

事实证明,我在我们的项目中遇到了同样的问题。 Azure容器服务对代理节点使用非常特定的路由规则。部署k8集群后,它们将在与所有集群实体相同的资源组中创建路由表资源。所以,如果你...

  • 在Azure门户中打开k8路由表
  • 转到“子网”部分
  • +将子网与其他VM / PaaS服务位于


  • ...这将创建k8代理在路由出站Pod容器流量时要寻找的路由。

    关于azure - 无法从Pod内以cidr 10.0.x.0/24与网络中的计算机(k8s群集外部)通信,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43471377/

    10-16 22:32