• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

마스터 노드 & 워크노드에 존재하는 여러개의 IP에 대한 각각의 용도 문의 드립니다.

21.03.25 09:13 작성 조회수 500

1

안녕하세요.

기존에 레가시 시스템에 익숙해져있다가 본강의를 시작으로 쿠버네티스에 입문하였습니다. 

강의 영상을 수강하면서 쿠버네티스를 설치하였습니다.

설치하고보니 마스트 노드, 워크노드에 여러개의 IP가 존재하는데,

아래의 각각의 IP가 무슨 용도이며 어떤 역할을 하는지 궁금합니다.

감사합니다.

=========================================================

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255

tunl0: flags=193<UP,RUNNING,NOARP>  mtu 1480

        inet 172.16.171.64  netmask 255.255.255.255

 ===============================================================

강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)

질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. 
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!

구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.

기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. 
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. 
반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 

답변 2

·

답변을 작성해보세요.

1

안녕하세요 

아래의 내용은 추후에 '국내에서 쿠버네티스 네트워크로 가장 유명한 분'이 다른 강의에서 진행 예정이지만 궁금하신 것은 풀고 넘어가야 하니 간단하게 말씀드릴께요 :) 

=========================================================

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255

> 단일 노드 내에 Pod (컨테이너)간의 통신을 위한 브릿지 네트워크입니다.

> 아래의 그림은 flannel 쪽이긴 하지만 구성적인 관점에서 docker0는 어쨌든 브릿지 네트워크입니다. :) 

Kubernetes Cluster Networking Components | Pure Storage Blog

https://blog.purestorage.com/purely-technical/kubernetes-cluster-networking-components/

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255

> 베이그런트에서 사용하는 NAT 인터페이스입니다. 

> 인터넷 연결용입니다. 

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255

> 노드 즉 레거시로 얘기하자면 일반 서비스 IP로 생각하시면 될 것 같습니다.

> 원칙적으로는 하자면 controller plane과 data plane은 구분해야 하겠지만 

> 랩이라 단일 인터페이스로 구현되어 있습니다.

> 내부 통신용 인터페이스입니다.  

tunl0: flags=193<UP,RUNNING,NOARP>  mtu 1480

        inet 172.16.171.64  netmask 255.255.255.255

> 각 노드에서 Pod에 게이트웨이 성격(i.e. NEXT hop)을 가집니다.  Pod 배포 하고 그 IP영역대와 맞춰보시면 아실수 있을꺼에요 아래의 그림도 참고가 될꺼 같아요. 

https://blogs.cisco.com/developer/kubernetes-intro-2

이게 더 이해가 쉬우실꺼 같네요 :)

https://ssup2.github.io/theory_analysis/Kubernetes_Calico_Plugin/

 ===============================================================

위의 내용들을 이해하기 위해서는 ip route 정보를 보고 따라가시면 좀 더 편하실꺼에요

ip route

[root@m-k8s ~]# ip route

default via 10.0.2.2 dev eth0 proto dhcp metric 100

10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100

blackhole 172.16.171.64/26 proto bird

172.16.171.74 dev cali838a09ea152 scope link

172.16.171.75 dev cali4d910c9b0c4 scope link

172.16.171.76 dev cali299cbbebb2a scope link

172.16.221.128/26 via 192.168.1.101 dev tunl0 proto bird onlink

172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1

192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 metric 101


route -n 

[root@m-k8s ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 eth0

10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0

172.16.171.64   0.0.0.0         255.255.255.192 U     0      0        0 *

172.16.171.74   0.0.0.0         255.255.255.255 UH    0      0        0 cali838a09ea152

172.16.171.75   0.0.0.0         255.255.255.255 UH    0      0        0 cali4d910c9b0c4

172.16.171.76   0.0.0.0         255.255.255.255 UH    0      0        0 cali299cbbebb2a

172.16.221.128  192.168.1.101   255.255.255.192 UG    0      0        0 tunl0

172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

예습 차원에서 추후 강의를 진행해 주실 분의 Slide를 보시는 것도 좋을 것 같네요 ^^

https://www.slideshare.net/InfraEngineer/meetup2nd-v12

더 자세히 설명이 나중에 예비되어 있기도 해서 더 디테일하게 설명 못하는 점 이해 부탁드려요 ㅠㅠ

현재 내에서 더 궁금하신게 있으면 얘기해주세요 :) 

조훈 드림. 

0

Docker0를 위해서 아래의 추가 내용이 도움이 되실꺼 같아요 :) 

아래의 내용은 위의 오리님 슬라이드도 적혀 있어요 편한 곳에서 보시면 될 것 같아요! 

By default, Docker uses host-private networking. It creates a virtual bridge, called docker0 by default, and allocates a subnet from one of the private address blocks defined in RFC1918 for that bridge. For each container that Docker creates, it allocates a virtual Ethernet device (called veth) which is attached to the bridge. The veth is mapped to appear as eth0 in the container, using Linux namespaces. The in-container eth0 interface is given an IP address from the bridge’s address range.

The result is that Docker containers can talk to other containers only if they are on the same machine (and thus the same virtual bridge). Containers on different machines can not reach each other - in fact they may end up with the exact same network ranges and IP addresses.

https://stackoverflow.com/questions/54102888/what-role-does-network-bridge-docker0-play-in-k8s-with-flannel