首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在有多个网络接口的节点上为kube-proxy和kubelet指定一个接口?

如何在有多个网络接口的节点上为kube-proxy和kubelet指定一个接口?
EN

Stack Overflow用户
提问于 2017-08-30 19:25:55
回答 1查看 1.3K关注 0票数 0

我已经在一些具有三个网络接口的服务器上部署了kubernetes环境。除了有关kube-apiserver的集群ip的iptables规则之外,一切都很正常。

因为所有服务器都有三个与子网相连的接口

代码语言:javascript
复制
10.0.41.0/24
10.0.42.0/24
192.168.247.0/24

我只是为kube-apiserver随机挑选了一个,使apiserver与证书一起工作,并为https请求打开10.0.41.4:6443。所以apiserver是这样配置的:

代码语言:javascript
复制
KUBE_API_ADDRESS="--insecure-bind-address=10.0.41.4 --advertise-address=10.0.41.4 --bind-address=10.0.41.4"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_API_ARGS="--authorization-mode=RBAC --runtime-config=rbac.authorization.k8s.io/v1beta1 --kubelet-https=true --experimental-bootstrap-token-auth --token-auth-file=/etc/kubernetes/token.csv --service-node-port-range=30000-32767 --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem --client-ca-file=/etc/kubernetes/ssl/ca.pem --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem --enable-swagger-ui=true --apiserver-count=3 --audit-log-maxsize=100 --audit-log-maxbackup=0 --audit-log-path=/home/kube/audit.log --event-ttl=1h --runtime-config=batch/v2alpha1=true"
...

kubelet和kube-proxy是这样开始的

代码语言:javascript
复制
/usr/bin/kubelet --logtostderr=true --v=0 --api-servers=http://10.0.41.4:8080 --address=10.0.41.1 --hostname-override=10.0.41.1 --allow-privileged=true --cgroup-driver=systemd --cluster-dns=10.254.0.2 --experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --require-kubeconfig --cert-dir=/etc/kubernetes/ssl --cluster-domain=cluster.local. --hairpin-mode promiscuous-bridge --serialize-image-pulls=false --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --node-ip=10.0.41.1
/usr/bin/kube-proxy --logtostderr=true --v=0 --bind-address=10.0.41.1 --hostname-override=10.0.41.1 --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig --cluster-cidr=10.254.0.0/16

有时,我不能将10.254.0.1:443与curl连接起来,因为对于所有网络接口,都会有一些iptables nat规则,其中包含最新的和随机的模块

代码语言:javascript
复制
Chain KUBE-SVC-NPX46M4PTMTKRN6Y (1 references)
pkts      bytes target     prot opt in     out     source               destination         
   0        0 KUBE-SEP-FA7AX7V3VYKS4DYK  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ recent: CHECK seconds: 10800 reap name: KUBE-SEP-FA7AX7V3VYKS4DYK side: source mask: 255.255.255.255
   0        0 KUBE-SEP-WRH6L36KL6VQULQ6  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ recent: CHECK seconds: 10800 reap name: KUBE-SEP-WRH6L36KL6VQULQ6 side: source mask: 255.255.255.255
   0        0 KUBE-SEP-NQ46EZO2HBXVI7ID  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ recent: CHECK seconds: 10800 reap name: KUBE-SEP-NQ46EZO2HBXVI7ID side: source mask: 255.255.255.255
   0        0 KUBE-SEP-FA7AX7V3VYKS4DYK  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ statistic mode random probability 0.33332999982
   0        0 KUBE-SEP-WRH6L36KL6VQULQ6  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ statistic mode random probability 0.50000000000
   0        0 KUBE-SEP-NQ46EZO2HBXVI7ID  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */

Chain KUBE-SEP-FA7AX7V3VYKS4DYK (2 references)
pkts      bytes target     prot opt in     out     source               destination         
   0        0 KUBE-MARK-MASQ  all  --  *      *       10.0.41.4            0.0.0.0/0            /* default/kubernetes:https */
   0        0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ recent: SET name: KUBE-SEP-FA7AX7V3VYKS4DYK side: source mask: 255.255.255.255 tcp to:10.0.41.4:6443

Chain KUBE-SEP-NQ46EZO2HBXVI7ID (2 references)
pkts      bytes target     prot opt in     out     source               destination         
   0        0 KUBE-MARK-MASQ  all  --  *      *       192.168.247.19       0.0.0.0/0            /* default/kubernetes:https */
   0        0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ recent: SET name: KUBE-SEP-NQ46EZO2HBXVI7ID side: source mask: 255.255.255.255 tcp to:192.168.247.19:6443

Chain KUBE-SEP-WRH6L36KL6VQULQ6 (2 references)
pkts      bytes target     prot opt in     out     source               destination         
   0        0 KUBE-MARK-MASQ  all  --  *      *       10.0.42.4            0.0.0.0/0            /* default/kubernetes:https */
   0        0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/kubernetes:https */ recent: SET name: KUBE-SEP-WRH6L36KL6VQULQ6 side: source mask: 255.255.255.255 tcp to:10.0.42.4:6443

只有当iptables将其设置为10.0.41.4:6443时,才能连接10.254.0.1:443。其他服务,我指的是用于测试的nginx服务器,可以一直连接。因为ip提供了网络插件(calico),而且是唯一的。

现在我的问题是,我能做些什么来让kube-proxy或kubelet或其他东西在10.0.41.0/24的界面上工作?

我已尝试删除不需要的iptables规则,但它们将立即恢复。可悲的是,它不起作用。

我还检查了this中kube*的参数,但一无所获。

EN

回答 1

Stack Overflow用户

发布于 2017-09-21 09:58:26

好了,我想我找到原因了。该问题是由'--apiserver-count‘参数引起的。

当我将'--apiserver-count‘设置为3时,kube-apiserver将为名为'kubernetes’的服务收集多个接口(而不是3个,也许是2个)作为端点。kube-proxy将为每个端点添加iptables nat规则。删除'--apiserver-count‘可以修复它。

因此kube-proxy运行得很好,我认为这可能是kube-apiserver的一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45959149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档