首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hyperkube代理,kubelet找不到iptables链,rkt run -net=host

hyperkube代理,kubelet找不到iptables链,rkt run -net=host
EN

Stack Overflow用户
提问于 2016-12-01 09:25:11
回答 2查看 481关注 0票数 1

我的库贝利特抱怨道:

E1201 09:00:12.562610 28747 kubelet_network.go:365]未能确保在过滤链KUBE防火墙中删除标记为KUBE的数据包的规则:错误附加规则:退出状态1: iptables:无链表/目标/匹配。

这种情况通常发生在你忘记与

导出RKT_OPTS=“-卷var-log,kind=host,source=/var/log \ -挂载卷=var-log,目标值=/var/log\-卷dns,kind=host,source=/etc/conv.conf\--挂载volume=dns,target=/etc/解析/host net=主机“

以下内容确认了我的kube代理(由kubelet启动)与拥有iptables链的主机位于同一个名称空间中:

代码语言:javascript
复制
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的链:

代码语言:javascript
复制
# 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工作人员(与我相比不同的机器)上的过滤器链。

问题工人是Debian Jessie运行码头1.12.3和rkt 1.18.0

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

KUBELET_VERSION=v1.4.6_coreos.0

其症状是问题工作者上的kubernetes没有安装任何iptables规则,比如kubernetes,因此该工作人员无法侦听NodePort服务。我想是因为上面的原因。

问题工作者在运行主节点计划的豆荚时没有问题。

问题工作者上的Pods正在处理来自运行在另一个(coreos)工作人员上的代理的OK请求。

我用法兰绒做人际关系网。

如果有人想知道,我需要让库伯内特斯在Debian上工作(是的,说来话长)

我还能做些什么来隔离那些看不见主人的iptables的东西呢?

EN

回答 2

Stack Overflow用户

发布于 2016-12-10 01:40:42

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

在我的例子中,我运行的是一个自定义内核pkg (Linux),它缺少几个与iptables相关的内核模块。因此,当kubelet试图添加包含注释的iptables规则时,由于没有加载xt_comment,它出错了。

这些是我缺少的模块: ipt_REJECT、nf_conntrack_netlink、nf_reject_ipv4、sch_fq_codel (可能不是必需的)、xt_comment、xt_mark、xt_recent、xt_statistic

为了获得我可能需要的完整模块列表,我登录了一个CoreOS kubernetes工作人员并查看了它的lsmod。然后把这个列表和我的“问题”机器做比较。

票数 0
EN

Stack Overflow用户

发布于 2019-09-03 11:15:18

在使用牧场主的k8s 1.3.1运行k8s时,我在一个带有自定义内核配置的gentoo盒上出现了这个问题。用所有正常的iptables + xt_comment重新构建内核为我解决了这个问题。

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

https://stackoverflow.com/questions/40906797

复制
相关文章

相似问题

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