我正在建立一个以Flannel作为我的CNI的Kubernetes集群。 (运行Centos7的本地硬件群集)我遇到了一个问题,我想知道这是否是我的配置错误,或者这仅仅是Flannel的工作方式。
我的操作系统全部位于10.〜/ 24网络上。我已配置Kubernetes使用172.〜/ 16,以便它有空间配置其所有Pod,节点和容器,哦,我的!当我尝试访问诸如HDFS群集之类的外部服务时,pod会发送数据包,但从未收到回复。
我发现的问题是MySQL正在接收IP地址在172.〜/ 16范围内的数据包,并且不知道将数据发送到哪里。我可以设置网络以将该范围内的所有内容发送到特定的K8s服务器,但随后它锁定了Pod可以在哪台服务器上运行。那是在破坏k8s的目的。
我希望绒布在发送时伪装数据包,以便外部服务器知道如何路由其响应。这仅仅是Flannel的设计方式,还是我错过了某个地方的步骤?
答案 0 :(得分:1)
您可以将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,如果您不希望依赖上述代理,可以使用它。