【问题标题】:Kubernetes Networking on Outbound Packet出站数据包上的 Kubernetes 网络
【发布时间】:2023-03-30 06:22:02
【问题描述】:

我创建了一个 k8s 服务(type=loadbalancer),后面有许多 pod。据我了解,从 Pod 发起的所有数据包都将源 ip 作为 PodIP,而那些响应入站流量的数据包将源 ip 作为 LoadBalancer IP。所以我的问题是:

  1. 我的说法是否属实,或者有时源 IP 将改为节点 IP?
  2. k8s有什么trick,可以把第一个场景的源IP从PodIP改成LB IP吗??
  3. 有什么方法可以指定指定的pod IP??

【问题讨论】:

    标签: kubernetes containers azure-container-service


    【解决方案1】:

    Pod 运行在内部网络中,而负载均衡器暴露在 Internet 上,因此数据包的地址或多或少如下所示:

      [pod1]    <----->       [load balancer]           <----->    [browser]
    10.1.0.123           10.1.0.234    201.123.41.53              217.123.41.53
    

    要指定 pod IP,请查看 SessionAffinity

    【讨论】:

      【解决方案2】:

      正如 user315902 所说,Azure ACS k8s 使用 Azure 负载均衡器将服务暴露给互联网。

      通过 Azure 容器服务部署的 Kubernetes 架构图:

      我的说法是否属实,或者有时源 IP 将是节点 IP 代替?

      如果我们将服务公开到互联网,我认为源 IP 将是负载均衡器的公共 IP 地址。在 ACS 中,如果我们向 Internet 公开多个服务,Azure LB 会添加多个公共 IP 地址。

      k8s有什么技巧吗,可以改源IP在 从 PodIP 到 LB IP 第一个场景??

      您的意思是要使用节点公共 IP 地址将服务公开到 Internet?如果是,我认为我们不能使用节点 IP 将服务公开给互联网。在 Azure 中,我们必须使用 LB 将服务公开到 Internet。

      【讨论】:

      • 谢谢@Jason。它有很大帮助。只是为了确认一点,今天有没有办法指定 pod IP? (我的理解是不会吧?)
      • @diamondwong 你的意思是你想把服务暴露给互联网,并且想指定这个 pod 的公共 IP 地址吗?答案是否定的,我们会动态获取公网IP地址。如果你移除这个 pod 并创建一个新的,IP 地址将丢失,我们将获得一个新的 IP 地址。
      猜你喜欢
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 2013-07-04
      • 2020-01-01
      相关资源
      最近更新 更多