无法与CIDR 10.0.x.0/24的网络中的机器(在K8S群集之外)进行通信



我在我的NetWrok中有两台机器,我希望从吊舱中进行通信。

IP如下:

10.0.1.23 - Lets call it X
13.0.1.12  - Lets call it Y

当我进入主节点或代理节点,然后对x或y进行ping时,ping是成功的。因此,机器是可触及的。

现在,我创建了一个部署,我使用(kubectl exec -it POD_NAME — /bin/sh(登录POD的外壳。

ping是成功的。但是p对于x失败。

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-Ingine具有Kube-Proxy设置,使用10.0.0.0.0/16 如果这是问题,我该如何更改kube-proxy cidr?

附加信息:

我正在使用 acs-engine 用于部署集群。

ip route

输出

default via 10.244.1.1 dev eth0 10.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

基于您的问题,听起来您已经在K8虚拟网络中添加了另一个子网,该子网将通过ACS Kubernetes群集部署。

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

  1. 在Azure Portal中打开K8路由表
  2. 转到"子网"部分
  3. 与您的其他VMS/PAAS服务在
  4. 中的子网相关联

...这将创建K8代理在路由外站容器流量时正在寻找的路线。

我有一个完全相同的问题,在谷歌搜索太多之后,我找到了一个适当的解决方案:

使用IP-MASQ代理到MASQ目标CIDR,以伪装该目的地

https://kubernetes.io/docs/tasks/administise-cluster/ip-masq-agent/

一些类似的例子:

http://madorn.com/kubernetes-non-masquerade-cidr.html#.xmdgi-h0nb0

您无法ping kubernetes服务。更多信息在这里:https://github.com/kubernetes/kubernetes/issues/7996#issuecomment-100413276。要测试连接性,您可以在端口上公开一个简单的Web服务器,并使用容器内部或外部的卷曲确认。

最新更新