Hyperkube Proxy, Kubelet 找不到 iptables chain, rkt run --net=host



我的kubelet抱怨:

e1201 09:00:12.562610 28747 kubelet_network.go:365]无法确保 掉落的规则在过滤链中以kube-mark-drop标记的数据包 kube-firewall:错误附加规则:退出状态1:iptables:否 链/目标/匹配该名称。

当您忘记与net-host的" RKT运行"时,这通常会发生,但我没有。

导出rkt_opts =" - 音量var-log,kint = host,source =/var/log
- 安装卷= var-log,target =/var/log - volume dns,kind = host,source =/etc/resolv.conf - mount 音量= dns,target =/etc/resolv.conf -net = host'

以下确认我的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

代理人类似地抱怨"没有链/目标/匹配该名称"。

我还验证了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工作者上的过滤链匹配(与其他机器I相比)。

问题工作者是Debian Jessie运行Docker 1.12.3和RKT 1.18.0

好工人和问题工作者都运行了同一版本的iptables,1.4.21

kubelet_version = v1.4.6_coreos.0

症状是问题工作者上的Kubernetes没有安装任何iPtables规则,例如Kube-Nodeports,因此该工人无法聆听NodePort服务。我认为这是因为上述。

问题工作者没有问题运行主节点计划的POD。

问题工人的豆荚正在为在其他(CoreOS)工作的代理中提供确定的请求。

我正在使用法兰绒进行网络。

如果有人想知道,我需要让Kubernetes在Debian上工作(是的,这是一个很长的故事)

我还能做些什么来隔离似乎是库比特看不到主机的iptables?

经过多个故障隔离后,我找到了原因和解决方案。

就我而言,我正在运行一个自定义内核PKG(Linux-image),该元素缺少与Iptables相关的几个内核模块。因此,当Kubelet试图附加包含注释的iPtables规则时,由于Xt_comment未加载,它错误。

这些是我缺少的模块:ipt_reject,nf_conntrack_netlink,nf_rejects_ipv4,sch_fq_codel(也许不需要),xt_comment,xt_mark,xt_recent,xt_recent,xt_statistic

要获取可能需要的完整列表,我登录了一个Coreos Kubernetes工作人员,并查看了其lsmod。然后只是将该列表与我的"问题"机器进行比较。

我在带有自定义内核配置的Gentoo盒子上使用了此问题,同时使用Rancher的K3D 1.3.1运行K8。使用所有理智的iptables Xt_comment重建内核为我解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新