【问题标题】:k8s pod can only access the host it is onk8s pod 只能访问它所在的主机
【发布时间】:2019-09-19 19:11:33
【问题描述】:

简而言之,pod 只能访问它所在的主机。

我有一个带有 3 个节点和 Calico 插件的 k8s-1.15 集群:

  • master.test.local (192.168.1.137)
  • node1.test.local (192.168.1.138)
  • node2.test.local (192.168.1.139)

有 2 个 pod,pod-1 在 master(1.137) 上运行,pod-2 在 node1(1.138) 上运行,当我从 pod-1(在 1.137 上运行)ping 192.168.1.138 时,我得到:

[~pod-1] # ping 192.168.1.138
PING 192.168.1.138 (192.168.1.138): 56 data bytes

但如果我从 pod-1 ping 1.137(在 1.137 上运行),它会成功:

[~pod-1] # ping 192.168.1.137
PING 192.168.1.137 (192.168.1.137): 56 data bytes
64 bytes from 192.168.1.137: seq=0 ttl=64 time=0.089 ms
64 bytes from 192.168.1.137: seq=1 ttl=64 time=0.094 ms

我该如何解决?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Issue #2543回答了您的问题

    这看起来按预期工作,因为您的网络策略没有任何出口规则。

    如果您想拒绝来自 pod A 的出口,您可以在 NetworkPolicy 中添加以下部分:

    types:
    - Ingress
    - Egress
    

    这将告诉策略同时应用于入口和出口流量,除非您指定出口规则,否则来自 pod A 的所有出口都将被拒绝。

    或者,您可以创建一个入口策略来选择 pod B 以防止 pod A 访问它。

    您可以使用calicoctl profile 编辑禁止入站流量的默认策略

    calico profile {{ profile_name }} rule add inbound allow from <ip>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 2022-01-18
      • 2021-07-01
      • 1970-01-01
      • 2022-01-11
      • 2022-08-04
      • 2020-05-30
      • 2023-03-16
      相关资源
      最近更新 更多