hyperkube代理,kubelet找不到iptables链,rkt运行–net = host

我的kubelet抱怨说:

E1201 09:00:12.562610 28747 kubelet_network.go:365]无法确保规则丢弃过滤链中由KUBE-MARK-DROP标记的数据包KUBE-FIREWALL:错误附加规则:退出状态1:iptables:无链/目标/匹配通过这个名字。

当你忘记使用–net-host'rkt run'时,通常会发生这种情况,但是我没有。

export RKT_OPTS =“ – volume var-log,kind = host,source = / var / log \
–mount volume = var-log,target = / var / log \ –volume dns,kind = host,source = / etc / resolv.conf \ –mount volume = dns,target = / etc / resolv.conf – -net =主机”

以下确认我的kube-proxy(由kubelet启动)与拥有iptables链的主机在同一个命名空间中:

root@i8:/etc# d exec -it 738 readlink /proc/self/ns/net net:[4026531963] root@i8:/etc# readlink /proc/self/ns/net net:[4026531963] root@i8:/etc# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 738ed14ec802 quay.io/coreos/hyperkube:v1.4.6_coreos.0 "/hyperkube proxy --m" 44 minutes ago Up 44 minutes k8s_kube-proxy.c445d412_kube-proxy-192.168.101.128_kube-system_438e3d01f328e73a199c6c0ed1f92053_10197c34 

代理同样抱怨“没有链/目标/匹配的名称”。

我也validation了iptables链:

 # Completed on Thu Dec 1 01:07:11 2016 # Generated by iptables-save v1.4.21 on Thu Dec 1 01:07:11 2016 *filter :INPUT ACCEPT [4852:1419411] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [5612:5965118] :DOCKER - [0:0] :DOCKER-ISOLATION - [0:0] :KUBE-FIREWALL - [0:0] :KUBE-SERVICES - [0:0] -A INPUT -j KUBE-FIREWALL -A FORWARD -j DOCKER-ISOLATION -A FORWARD -o docker0 -j DOCKER -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT -A OUTPUT -j KUBE-SERVICES -A OUTPUT -j KUBE-FIREWALL -A DOCKER-ISOLATION -j RETURN -A KUBE-FIREWALL -m mark --mark 0x8000/0x8000 -j DROP COMMIT 

这在错误消息(我认为)满足抱怨,并匹配在一个免费的coreos工人(不同的机器我比较)filter链。

问题工作者是Debian Jessie运行docker1.12.3和rkt 1.18.0

好工作者和问题工作者都运行相同版本的iptables 1.4.21

KUBELET_VERSION = v1.4.6_coreos.0

问题的症状是问题工作者的kubernetes没有安装任何iptables规则,比如KUBE-NODEPORTS,所以这个工作者不能监听NodePort服务。 我想这是因为以上。

问题工作人员运行主节点计划的窗格没有问题。

问题工作者的豆荚正在运行在不同的(coreos)worker上的代理服务器上运行请求。

我正在使用法兰绒networking。

如果有人想知道,我需要得到Debian的kubernetes(是的,这是一个很长的故事)

我还能做些什么来隔离什么似乎是kubelet没有看到主机的iptables?

经过多次故障隔离,我find了原因和解决办法。

就我而言,我正在运行一个定制的内核pkg(linux-image),它缺less了几个与iptables相关的内核模块。 所以当kubelet试图添加包含注释的iptables规则时,它会出错,因为xt_comment没有加载。

这些是我失踪的模块:ipt_REJECT,nf_conntrack_netlink,nf_reject_ipv4,sch_fq_codel(也许不是必需的),xt_comment,xt_mark,xt_recent,xt_statistic

为了获得我可能需要的模块的完整列表,我login了一个CoreOS kubernetes工作人员,并查看了它的lsmod 。 然后,只是将该列表与我的“问题”机器进行比较。