Flannel 访问外部服务
Flannel accessing external services
我正在构建一个使用 Flannel 作为我的 CNI 的 Kubernetes 集群。 (本地硬件集群 运行ning Centos7)我 运行 遇到了问题,我想知道这是我的配置错误,还是 Flannel 的工作方式。
我的 OS 都位于 10.~/24 网络上。我已将 Kubernetes 配置为使用 172.~/16 以便它有空间配置其所有 pods 以及节点和容器,哦,天哪!当我尝试访问 HDFS 集群等外部服务时,pods 发送数据包,但从未收到回复。
我发现的问题是 MySQL 正在接收 IP 地址在 172.~/16 运行ge 中的数据包,并且不知道将它们发送到哪里。我可以设置我的网络,将 运行ge 中的所有内容发送到特定的 K8s 服务器,但随后它会锁定 pod 可以 运行 在哪个服务器上。这有点破坏了 k8s 的目的。
我原以为法兰绒会在数据包发出时伪装它们,以便外部服务器知道如何路由它们的响应。这就是 Flannel 的设计方式,还是我漏掉了某个步骤?
您可以使用 SNAT masquerade the pod IP into the node address when sending outbound traffic 以便它可以返回到其原始目的地。
有一个 Masquerade Agent that you can deploy in your cluster 来确定要为出站流量屏蔽哪些 CIDR。
此外,如果您不想依赖上述代理,您可以使用 Flannel 的内置 masquerading option。
我正在构建一个使用 Flannel 作为我的 CNI 的 Kubernetes 集群。 (本地硬件集群 运行ning Centos7)我 运行 遇到了问题,我想知道这是我的配置错误,还是 Flannel 的工作方式。
我的 OS 都位于 10.~/24 网络上。我已将 Kubernetes 配置为使用 172.~/16 以便它有空间配置其所有 pods 以及节点和容器,哦,天哪!当我尝试访问 HDFS 集群等外部服务时,pods 发送数据包,但从未收到回复。
我发现的问题是 MySQL 正在接收 IP 地址在 172.~/16 运行ge 中的数据包,并且不知道将它们发送到哪里。我可以设置我的网络,将 运行ge 中的所有内容发送到特定的 K8s 服务器,但随后它会锁定 pod 可以 运行 在哪个服务器上。这有点破坏了 k8s 的目的。
我原以为法兰绒会在数据包发出时伪装它们,以便外部服务器知道如何路由它们的响应。这就是 Flannel 的设计方式,还是我漏掉了某个步骤?
您可以使用 SNAT masquerade the pod IP into the node address when sending outbound traffic 以便它可以返回到其原始目的地。
有一个 Masquerade Agent that you can deploy in your cluster 来确定要为出站流量屏蔽哪些 CIDR。
此外,如果您不想依赖上述代理,您可以使用 Flannel 的内置 masquerading option。