使用外部ips时,kubernetes ipvs断开节点连接

时间:2019-02-22 10:49:08

标签: nginx kubernetes disconnected

我在项目中使用Kubernetes来部署和访问多个后端API组件。 我用kubeadm和kubectl安装了它。 我有一个主服务器(192.168.101.7)和两个节点(192.168.101.4,192.168.101.6)。 使用kube-proxy的默认代理模式:iptables,一切都可以正常工作。 我已经部署了nginx-ingress和我的API。用于nginx-ingress的服务的类型为ExternalIPs(具有192.168.101.7),因此我可以通过特定地址192.168.101.7/api/(其中的路径针对每个不同的api组件是特定的)访问我的API,并且可以正常工作。我正在使用法兰绒进行网络连接。

我想将kube-proxy模式设置为IPVS,以便拥有真正的负载平衡算法:轮询。 (因为iptables使用的是随机变量,并且需要动态/概率来检查Pod是否还存在)

我尝试通过以下配置使用kubeadm进行设置:

apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
localAPIEndpoint:
        advertiseAddress: 192.168.101.7
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
networking:
        podSubnet: 10.244.10.0/16
        serviceSubnet: 10.96.0.0/12
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
        SupportIPVSProxyMode: true
mode: ipvs

我正确启用了所有内核mod,并且“ ipvsadm”工作正常。 当我使用nodeport类型的服务时,一切工作正常:我可以使用正确的负载平衡来访问我的Pod。 (并且ipvsadm正确显示了规则)

但是当我尝试使用(nginx-ingress或我的后端组件)部署服务时:

ExternalIPs:
- 192.168.101.7

我的节点与主节点断开连接,我遇到了一个奇怪的问题: 当我尝试访问主节点时,会从节点返回到自身。 那就是当我从192.168.101.4执行“ ssh 192.168.101.7”并正确登录时,我到达的是192.168.101.4(本身)而不是192.168.101.7。 在使用externalIP部署服务之后,每个节点上似乎都有对自己的环回。

我认为这可能是由Flannel引起的,所以我尝试了WeaveWorks,但确实如此。

我已经搜索了很多次,从未见过这样的问题...有人知道我有点迷茫吗?

0 个答案:

没有答案