Azure 无法从pod内通过cidr 10.0.x.0/24与网络中的机器(k8s群集外部)通信
在我的网络中有两台机器,我想通过pod进行通信 IP地址如下:Azure 无法从pod内通过cidr 10.0.x.0/24与网络中的机器(k8s群集外部)通信,azure,kubernetes,acs,azure-container-service,Azure,Kubernetes,Acs,Azure Container Service,在我的网络中有两台机器,我想通过pod进行通信 IP地址如下: 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的外壳 Ping to Y是成功的。但是ping-to-X失败了 CIDR详细信息: Master Node : 1
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的外壳
Ping to Y是成功的。但是ping-to-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引擎已使用10.0.0.0/16设置服务网络的kube代理
如果这是问题所在,如何更改kube代理cidr
其他信息:
我正在使用acs引擎部署集群
ip路由的输出
默认通过10.244.1.1 dev eth0
10.244.1.0/24开发eth0 src 10.244.1.13
另一个嫌疑犯:在运行iptables save
时,我明白了
-一个后路由-d 10.0.0.0/8-m注释--注释“kubenet:SNAT用于集群的出站流量”-m addrtype--dst型局部-j伪装
您无法ping kubernetes服务。更多信息请点击此处:。要测试连接性,您可以在一个端口上公开一个简单的web服务器,并从容器内部或外部确认使用curl。根据您的问题,听起来好像您已经向与ACS Kubernetes群集一起部署的k8虚拟网络添加了另一个子网
事实证明,我在我们的项目中遇到了完全相同的问题。Azure容器服务为代理节点使用非常特定的路由规则。部署k8集群时,它们会在与所有集群实体相同的资源组中创建路由表资源。所以,如果你
…这将创建k8代理在路由出站Pod集装箱流量时正在寻找的路由。我有完全相同的问题,在谷歌搜索了这么多之后,我找到了一个可行的解决方案: 使用ip masq代理对目标CIDR进行伪装,以伪装该目标 一些类似的例子:
您的意思是您通过SSH连接到kubernetes master并能够ping
10.0.1.22
?此IP是群集IP?默认情况下,我们无法从主机ping群集IP,请运行此命令检查iptablesiptables save
。您的意思是pod无法ping出k8s的IP地址吗?是的。Pod无法完成,但主节点或代理节点可以完成。k8s使用iptables将网络流量转发到容器,我正在检查查询,并将很快就此与您联系。我正在使用一台外部机器(k8s群集外部)。与外部世界的机器进行ping将起作用。但不是从吊舱里