0

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

  1. 我的说法是真的,还是有时源 IP 将是节点 IP?
  2. k8s有什么技巧可以把第一个场景的源IP从PodIP改成LB IP??
  3. 有什么方法可以指定指定的 pod IP?
4

2 回答 2

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

于 2017-09-02T18:07:49.487 回答
0

正如 user315902 所说,Azure ACS k8s 使用 Azure 负载均衡器向 Internet 公开服务。

通过 Azure 容器服务部署的 Kubernetes 架构图: 在此处输入图像描述

我的说法是真的,还是有时源 IP 将是节点 IP?

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

k8s有什么技巧可以把第一个场景的源IP从PodIP改成LB IP??

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

于 2017-09-04T07:02:58.293 回答