我想运行多个Kubernetes服务,并使用externalIPs
字段为这些服务将特定服务绑定到特定IP。
我有一个有三个接口的VM:
我已经为接口2和3添加了iproute2表/路由/规则,注意流量通过正确的接口进行反向路由。
只要kubelet / kube-proxy没有运行,一切都按预期工作。 (例如,运行nc
来提供一些数据。)
一旦kubelet / kube-proxy启动,一些(我不知道哪个)iptables配置被创建,这会丢弃包。 (至少这是tcpdump中的样子。)
如果我在节点上只运行一个IP,一切都按预期工作 - 所以我假设问题是第二个IP和某种路由。
以下是启动kubelet服务之前和之后的iptables
配置。
我已经匿名化了该文件并删除了显然无关的内容 - 如果我删除了很多内容,请告诉我。
有人运行类似的设置吗? 如何配置kube-proxy和/或操作系统来设置这种网络? 有什么想法继续进行调试吗?
我在CentOS7上运行Kubernetes 1.6.4。
答案 0 :(得分:0)
Kube-proxy
尝试管理它拥有的所有接口,当然,还强制执行一些规则(包括过滤)来提供服务。
如果您真的想在服务器上使用多个接口并同时在接口之间保存自定义转发规则,则可以将所有组件绑定到内部接口(在您的情况下为eth0
)并管理所有其他根据需要手动接口。
对于set one接口,您应该使用CLI args:
kubelet
守护程序 - --address
kube-proxy
守护程序 - --bind-address
kube-api
守护程序 - --bind-address
。但请记住,您需要将这些接口用于集群内的所有互通,而HostNetwork
等标志也只为您提供该接口。