0

外部 IP 完全可以从集群外部访问。集群内的所有节点都可以完全访问它。但是,当我尝试从集群中的 pod 远程登录到 URL 时,该 pod 与作为服务后端的一部分的 pod 不在同一节点上,连接总是超时。

与作为服务后端一部分的 pod 在同一节点上运行的 pod 可以访问外部 IP。

所有 pod 都可以完美到达服务的集群 IP。

当我将 externalTrafficPolicy 设置为 Cluster 时,Pod 能够访问外部 URL,无论它们位于哪个节点上。

我正在使用 iptables 代理和 kubernetes 1.16

我完全不知道为什么会这样。有人能对此有所了解吗?

4

1 回答 1

1

这里的官方文档,

service.spec.externalTrafficPolicy - 表示此服务是否希望将外部流量路由到节点本地或集群范围的端点。有两个可用选项:集群(默认)和本地。集群掩盖了客户端源 IP,可能会导致第二次跳转到另一个节点,但应该具有良好的整体负载分布。Local 保留客户端源 IP 并避免 LoadBalancer 和 NodePort 类型服务的第二跳,但存在潜在的流量传播不平衡的风险。

该服务可以是节点本地集群范围的端点。当您定义externalTrafficPolicyasLocal时,它意味着节点本地。因此,其他节点无法访问它。

因此,您需要将externalTrafficPolicyas设置为Cluster

于 2021-01-07T09:47:42.733 回答