2016-12-01 75 views
1

我kubelet抱怨:hyperkube代理,kubelet找不到的iptables鏈,RKT運行--net =主機

E1201 09:00:12.562610 28747 kubelet_network.go:365]未能確保 規則在過濾器鏈中丟棄由KUBE-MARK-DROP標記的數據包 KUBE-FIREWALL:錯誤追加規則:退出狀態1:iptables:否 按該名稱鏈/目標/匹配。

這通常發生在您忘記使用--net-host'rkt run'時,但我沒有。

出口RKT_OPTS =「 - 體積VAR日誌,善良=主機,源= /無功/日誌\
--mount體積= VAR日誌,目標= /無功/日誌\ --volume DNS ,種類=主機,源=的/ etc/resolv.conf的\ --mount 體積= DNS,目標=的/ etc/resolv.conf的--net =宿主」

下確認本人KUBE代理(由kubelet啓動)與擁有iptables鏈的主機在同一命名空間中:

[email protected]:/etc# d exec -it 738 readlink /proc/self/ns/net 
net:[4026531963] 

[email protected]:/etc# readlink /proc/self/ns/net 
net:[4026531963] 

[email protected]:/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工人匹配(不同的機器我相比) 。

問題工人Debian的傑西運行碼頭工人1.12.3和1.18.0 RKT

無論是好工人問題工人正在運行iptables的相同版本,1.4.21

KUBELET_VERSION = V1。 4.6_coreos.0

症狀是問題員工上的kubernetes未安裝任何iptables規則,如KUBE-NODEPORTS,因此此工作人員無法偵聽NodePort服務。我認爲這是因爲以上原因。

問題工作者沒有問題運行主節點安排的窗格。

有問題的工作人員的豆莢正在運行在不同的(coreos)worker上的代理服務器請求正常。

我正在使用絨布進行網絡連接。

如果有人想知道,我需要得到kubernetes在Debian(是的,這是一個很長的故事)工作

什麼我還能做隔離似乎是kubelet沒有看到主機的iptables的?

回答

0

經過多次故障隔離後,我找到了原因和解決辦法。

就我而言,我正在運行一個定製的內核pkg(linux-image),它缺少了幾個與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。然後,將該列表與我的「問題」機器進行比較。