2017-10-29 2 views
0

권한 모드에서 필요한 커널 모듈과 함께 도커 소켓 및 도커 바이너리 파일을 마운트 할 수있는 jenkins/slave 컨테이너를 기반으로하는 Kubernetes 포드가 있습니다. 그 꼬투리 안쪽에 나는 도커 컨테이너를 운영하는 Docker 이미지 기반을 만듭니다. 그 컨테이너 안에는 포드 컨테이너가 플란넬 네트워크 (198.x.x.x)를 사용하고 그 컨테이너가 포드 컨테이너 내부에서 사용할 수없는 브리지 도커 네트워크 (172.x.x.x)를 사용하기 때문에 인터넷에 연결되어 있지 않습니다. Kubernetes 포드 컨테이너 내부에서 생성되는 두 번째 컨테이너 내부에서 인터넷을 사용할 수있게하려면 어떻게해야합니까? Jenkins 파이프 라인에서 Docker API를 사용하는 것은 오류 로그의 출력을 제한하고 빌드 후 해당 컨테이너를 즉시 제거하기 때문에 두 번째 컨테이너에서 변경 한 내용을 커밋 할 수없는 한 솔루션이 아닙니다.Kubernetes의 Docker 컨테이너 내부 인터넷 연결

답변

1

이 기사가이 문제와 관련하여 도움이 될지 확실하지 않은 경우, JENKINS DECLARATIVE PIPELINES WITH KUBERNETES. 이 기사에서는 Kubernetes에서 Jenkins를 설정하는 방법에 대한 전체 스택을 보여 주며 Docker의 Docker에 대한 아이디어도 포함합니다.

내 생각에 따라 포드 컨테이너로 container1으로 표시하고 포드의 컨테이너는 container2으로 표시 할 수 있습니다.

내 생각에 container1container2은 같은 호스트에서 찾아 동일한 도커 엔진을 공유해야한다고 생각합니다. 따라서 도커 네트워크가있는 플란넬 네트워크를 함께 설정해야합니다. 하지 container1 함께한다>host ->docker0 -

내 생각으로, container2의 네트워크 흐름은 container2에서해야한다.

합리적인가 아니면 우리가 함께 토론 할 수 있는지 알려주세요.이 질문은 매우 흥미 롭습니다.

+0

안녕 Zhao, 나는이 문제를 파악할 수있었습니다. 내 하이퍼 바이저가 5 일 전에 즉시 재부팅되었고 재부팅 후 방화벽 규칙이 Docker 브리지에 적용되지 않은 것으로 나타났습니다. 일단 다음 규칙을 추가하면 : iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE 문제가 사라졌습니다. 재부팅 할 때이 규칙을 적용 할 자동 시작 스크립트를 이미 추가했습니다. – user54

관련 문제