【问题标题】:K8s azure VM nodes - can ping worker node from master node but cannot ping pod on worker nodeK8s azure VM 节点 - 可以从主节点 ping 工作节点,但无法 ping 工作节点上的 pod
【发布时间】:2020-07-17 04:45:00
【问题描述】:

我已经在我的工作节点上启动并运行了一个简单的 pod,我正试图从我的主节点 ping。我的丢包率是 100%。

什么有效?

  • 可以从主节点 ping 工作节点本身。
  • 可以从工作节点内部 ping 工作节点内的 pod。

什么不起作用?

  • 主节点尝试 ping 工作节点的 pod。

我的看法

我认为主节点上发生了 calico 错误配置,因为主节点不太了解 pod 的 IP。

到 pod IP 的 tracepath 的结果

masternode@Master:~$ tracepath 192.168.171.67
 1?: [LOCALHOST]                      pmtu 1440
 1:  no reply
 2:  no reply
 3:  no reply

请帮忙。

【问题讨论】:

  • 您能否提供更多详细信息和最小可重现示例?你是如何引导你的集群的? AKS,库比德姆?这些虚拟机上运行的是什么操作系统?您在它起作用之前提到过,并且您怀疑印花布。是否对其配置进行了任何更改?

标签: azure kubernetes project-calico


【解决方案1】:

无法从控制/数据平面节点访问 Kubernetes pod 网络。您可以访问任何 Pod,包括彼此之间的控制平面 Pod,但不能访问主机上的任何内容。

docs 引用的 Kubernetes 网络基础知识:

  • 一个节点上的 Pod 可以在没有 NAT 的情况下与所有节点上的所有 Pod 通信
  • 节点上的代理(例如系统守护进程、kubelet)可以与该节点上的所有 pod 通信。 -- 请注意,例如,您可以使用 docker 执行此操作,但不能使用 pod 网络。

另外,来自docs

  • Pod 中的容器使用网络通过环回进行通信。
  • 集群网络提供不同 Pod 之间的通信。
  • Service 资源允许您公开在 Pod 中运行的应用程序,以便从集群外部访问。
  • 您还可以使用服务发布服务,仅供集群内部使用。

【讨论】:

  • 至“无法从控制/数据平面节点访问 Kubernetes pod 网络。”很抱歉,但我之前确实能够从主节点 ping/curl 工作节点中的 pod。这是怎么回事?
  • 您可以从主节点中的 pod 执行此操作。但不是来自主机。
  • 这就是我所缺少的!我的概念中有一个大漏洞,我在想控制平面节点可以访问工作节点上的 pod。非常感谢。
  • 最后一个问题,我的主节点和工作节点都没有受到污染,所以当我尝试在主节点上部署一个 pod 时,kube-scheduler 将它放在工作节点上。我可以问为什么吗?主节点比工作节点拥有更多的内存和计算资源。
  • 我认为它首先选择工作节点,除非您将 nodeSelector(节点亲和性)配置为转到主节点。也许您的工作人员在调度 pod 时拥有更大比例的资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
  • 2019-07-14
  • 2023-04-01
  • 2019-09-05
  • 1970-01-01
  • 2019-03-19
  • 2019-01-18
相关资源
最近更新 更多