2016-12-01 8 views
1

내 kubelet 불평 :hyperkube 프록시, kubelet는 iptables에 체인을 찾을 수없는, RKT 실행 --net = 호스트는

E1201 09 : kubelet_network.go 12.562610 28747 : 365]에 규칙을 확인하지 못했습니다 00 필터 체인에 KUBE-MARK-DROP으로 표시된 드롭 패킷 KUBE-FIREWALL : 규칙 추가 오류 : 종료 상태 1 : iptables : 아니요 해당 이름의 연결/대상/일치.

이것은 일반적으로 - net-host를 사용하여 'rkt run'하는 것을 잊었을 때 발생합니다.

수출 RKT_OPTS = "- 볼륨 VAR 로그, 종류 = 호스트, 소스 =/var에// \
--mount 볼륨 = VAR 로그, 대상 =/var에 로그 \ --volume DNS를 기록 =은/etc/경우 resolv.conf --net = 호스트 "

, 종류 = 호스트, 소스 =은/etc/경우 resolv.conf \ --mount 볼륨 = DNS, 대상 다음은 (내 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 

프록시는 마찬가지로 "No chain/target/match that that name"이라고 불평합니다. 이 오류 메시지 (나는 생각한다)에 불만을 만족하고 (다른 시스템 I과 비교)에 문제가없는 coreos 노동자 필터 체인과 일치

# 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 

:

나는 또한 iptables에 체인을 확인했습니다 .

문제 노동자

는 고정 표시기 1.12.3 및 RKT 좋은 노동자와 문제가 노동자 모두의 iptables의 동일한 버전을 실행 1.18.0

, 1.4.21

KUBELET_VERSION = V1을 실행하는 데비안 제시한다. 4.6_coreos.0

문제는 worker의 kubernetes가 KUBE-NODEPORTS와 같은 iptables 규칙을 설치하지 않기 때문에이 작업자가 NodePort 서비스를 수신 할 수 없다는 것입니다. 나는 그것이 위의 것 때문이라고 생각합니다.

문제 작업자는 마스터 노드가 예약 한 창을 실행하는 데 문제가 없습니다.

문제 작업자의 포드가 다른 (coreos) 작업자로 실행되는 프록시에서 요청을 처리 중입니다.

네트워킹 용 플란넬을 사용하고 있습니다.

사람이 궁금 해서요 경우에, 나는 데비안 (예, 그것의 긴 이야기) 작업는 Kubernetes을 얻을 필요가

내가 호스트의 iptables에 표시되지 kubelet 것으로 보인다 무엇인지 그 밖의 무엇을 분리하기 위해 무엇을 할 수 있는가?

답변

0

많은 오류가 격리 된 후 원인과 해결 방법을 찾았습니다.

내 경우에는 iptables와 관련된 몇 가지 커널 모듈이없는 사용자 정의 커널 pkg (linux-image)를 실행하고 있습니다. 따라서 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을 보았습니다. 그런 다음이 목록을 내 "문제"시스템과 비교했습니다.