ãããã£ãŠãKubernetesã¯ã©ã¹ã¿ãŒã§å€ãã®ãµãŒãã¹ãéå§ãããã®æ©æµã享åããŠããŸã...ãŸãã¯å°ãªããšããããè¡ãã€ããã§ãã ãã ããã¯ã©ã¹ã¿ãŒãæ§æããã³ç®¡çããããã®ãŠãŒãã£ãªãã£ã¯å€æ°ãããŸããããã¹ãŠããå éšãã§ã©ã®ããã«æ©èœãããã«é¢å¿ããããŸãã äœããå£ããŠããå Žåã¯ã©ããæ¢ããŸããïŒ ç§ã¯ãããéèŠã§ããããšãèªåã§ç¥ã£ãŠããŸãã
Kubernetesã䜿çšãããšãç°¡åã«éå§ã§ããŸãã ããããå éšãèŠããšãè€éãªã·ã¹ãã ãååšããŸãã å€æ°ã®ãåããã³ã³ããŒãã³ãããããé害ã®å¯èœæ§ã«åãããå Žåã¯ããã®æ©èœãšçžäºäœçšãç解ããå¿ èŠããããŸãã Kubernetesã®æãè€éã§ãããããæãéèŠãªã³ã³ããŒãã³ãã®1ã€ã¯ãããã¯ãŒã¯ã§ãã
ã ããç§ã¯ãããã©ã®ããã«æ©èœããããæ£ç¢ºã«ç解ããããšã«æ±ºããŸããïŒç§ã¯ããã¥ã¡ã³ããèªã¿ãã¬ããŒããèããããã«ã³ãŒãããŒã¹ãèŠãŸãã-ãããŠãããç§ãèŠã€ãããã®ã§ã...
ãããã¯ãŒã¯ã¢ãã«Kubernetes
Kubernetesãããã¯ãŒã¯ããã€ã¹ã®äžå¿ã«ã¯ãéèŠãªã¢ãŒããã¯ãã£äžã®ååããããŸããã åçã«ã¯ç¬èªã®IPããããŸã ãã
IPå²çè£ã¯ãã¹ãŠã®ã³ã³ããã«åå²ãããä»ã®ãã¹ãŠã®å²çè£ããã¢ã¯ã»ã¹å¯èœïŒã«ãŒãã£ã³ã°å¯èœïŒã§ãã ããŒãã§äžæåæ¢ã³ã³ãããæ©èœããŠããããšã«æ°ä»ããããšããããŸããïŒ ãããã¯ã ãµã³ãããã¯ã¹ã³ã³ããããšãåŒã°ããŸããããã¯ããã¹ãŠã®ãããã³ã³ããã§äœ¿çšããããããã¯ãŒã¯ããŒã ã¹ããŒã¹ïŒnetnsïŒãäºçŽããã³ç®¡çããããšããã®ä»äºã§ããããã§ãã ãã®ããããããã®IPã¯ãã³ã³ãããæ»ãã§ãã®å Žæã«æ°ããã³ã³ãããäœæãããå Žåã§ãå€æŽãããŸããã ãã®ã¢ãã«-åçåºã®IPïŒãããããšã®IPïŒ -ã®å€§ããªå©ç¹ã¯ãåºç€ãšãªããã¹ãäžã®IP /ããŒãã®è¡çªããªãããšã§ãã ãŸããã©ã®ããŒããã¢ããªã±ãŒã·ã§ã³ã䜿çšããããå¿é ããå¿ èŠã¯ãããŸããã
ãããã£ãŠãKubernetesã®å¯äžã®èŠä»¶ã¯ãããŒã¹ã®ãããã®ãã¹ãŠã®IPã¢ãã¬ã¹ããã©ã®ãã¹ãã«ãããã«é¢ä¿ãªããä»ã®ããŒã¹ããã¢ã¯ã»ã¹å¯èœ/ã«ãŒãã£ã³ã°å¯èœã§ãªããã°ãªããªãããšã§ãã
ããŒãå ã®çžäºäœçšïŒããŒãå ïŒ
æåã®ã¹ãããã¯ã1ã€ã®ããŒãã®ããããçžäºã«éä¿¡ã§ããããšã確èªããããšã§ãã 次ã«ããã®ã¢ã€ãã¢ã¯ãããŒãéãã€ã³ã¿ãŒããããªã©ãšã®çžäºäœçšã«æ¡åŒµãããŸãã
åKubernetesããŒãïŒãã®å Žåã¯Linuxãã·ã³ïŒã«ã¯ãã«ãŒããããã¯ãŒã¯åå空é-root netnsããããŸãã ã¡ã€ã³ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹-eth0-ã¯ããã®ã«ãŒããããã«ãããŸãã
åæ§ã«ãåå²çè£ã«ã¯ãã«ãŒãã€ãŒãµãããã«æ¥ç¶ããä»®æ³ã€ãŒãµãããã€ã³ã¿ãŒãã§ã€ã¹ãåããç¬èªã®ãããããããŸãã å®éãããã¯äžæ¹ãã«ãŒããããã«ãããäžæ¹ããããã«ããä»®æ³ãªã³ã¯ã§ãã
å²çè£ã®ç«¯ã¯
eth0
ãšããååã§ã
eth0
ã¯åºç€ãšãªããã¹ããç¥ãããç¬èªã®ã«ãŒããããã¯ãŒã¯æ§æããããšèããŠããããã§ãã ããäžæ¹ã®ç«¯ã«ã¯ã
vethxxx
ãããªååãä»ããããŸãã
ifconfig
ãŸãã¯
ip a
ã³ãã³ãã䜿çšããŠãKubernetesãã¹ãã§ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ããã¹ãŠè¡šç€ºã§ããŸãã
ããã¯ãã¢ã»ã³ããªäžã®ãã¹ãŠã®å²çè£ã®é 眮ã§ãã ããããçžäºã«éä¿¡ããããã«ãLinuxã€ãŒãµãããããªããž
cbr0
ã
cbr0
ãŸãã Dockerã¯
docker0
ãšåŒã°ããåæ§ã®ããªããžã䜿çšããŸãã
brctl show
ã³ãã³ãã䜿çšããŠãããªããžããªã¹ãã§ããŸãã
ãã±ããã
pod1
ãã
pod1
ã«éä¿¡ããã
pod1
ã
pod2
ïŒ
-
eth0
ããeth0
ãä»ããŠpod1
ãééããvethxxxãä»ããŠã«ãŒããããã«å°éãvethxxx
ã -
cbr0
ãARPèŠæ±ã䜿çšããŠããã®ãããªIPã¢ãã¬ã¹ãæã£ãŠããã®ã¯èª°ã§ããïŒã -
vethyyy
ã¯ãæ£ããIPãæã£ãŠãããšå¿çããŸãããã®ãããããªããžã¯ãã±ããã®è»¢éå ãèªèããŸãã - ãã±ããã¯
vethyyy
å°éããä»®æ³ãªã³ã¯ãééããŠãpod2ãææããpod2
ãŸãã
ãããã£ãŠã1ã€ã®ããŒãã®ã³ã³ããã¯äºãã«éä¿¡ããŸãã æããã«ãä»ã®å¯Ÿè©±æ¹æ³ããããŸããããããããããæãç°¡åã§ãã Dockerã䜿çšããŸãã
ããŒãééä¿¡
åè¿°ã®ããã«ãå²çè£ã«ã¯ãã¹ãŠã®ããŒãããã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸãã ãŸããKubernetesã«ãšã£ãŠããããã©ã®ããã«å®è£ ããããã¯ãŸã£ããåé¡ã§ã¯ãããŸããã ãããã£ãŠãL2ïŒããŒãéã®ARPïŒãL3ïŒããŒãéã®IPã«ãŒãã£ã³ã°-ã¯ã©ãŠããããã€ããŒã®ã«ãŒãã£ã³ã°ããŒãã«ã«é¡äŒŒïŒããªãŒããŒã¬ã€ãããã¯ãŒã¯ãããã«ã¯ããã䜿çšã§ããŸãã åããŒãã«ã¯ããããã«ãã£ãŠçºè¡ãããIPã¢ãã¬ã¹ã®äžæã®CIDRãããã¯ïŒIPç¯å²ïŒãå²ãåœãŠãããŠãããããåãããã«ã¯ç¬èªã®äžæã®IPããããä»ã®ããŒãã®ããããšç«¶åããŸããã
ã»ãšãã©ã®å Žåãç¹ã«ã¯ã©ãŠãç°å¢ã§ã¯ãã¯ã©ãŠããããã€ããŒã¯ã«ãŒãã£ã³ã°ããŒãã«ã䜿çšããŠããã±ãããæ£ããåä¿¡è ã«ç¢ºå®ã«å±ãããã«ããŸãã åãããšã¯ãåããŒãã®ã«ãŒãã䜿çšããŠæ§æã§ããŸãã åé¡ã解決ããä»ã®å€ãã®ãããã¯ãŒã¯ãã©ã°ã€ã³ããããŸãã
äžèšã®ãããª2ã€ã®ããŒãã®äŸãèããŠã¿ãŸãããã åããŒãã«ã¯ãç°ãªããããã¯ãŒã¯åå空éããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãããã³ããªããžããããŸãã
ããã±ãŒãžã
pod1
ãã
pod4
ïŒå¥ã®ããŒãäžïŒã«ç¶ããšä»®å®ããŸãã
-
eth0
ããeth0
ãä»ããŠpod1
ãééããvethxxxãä»ããŠã«ãŒããããã«å°éãvethxxx
ã - ãã
cbr0
ãå®å ãæ€çŽ¢ããŠARPèŠæ±ãäœæããŸãã - ãã®ããŒãã®
pod4
察å¿ããIPã¢ãã¬ã¹ãæããªããããcbr0
ããã¡ã€ã³ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹eth0
ã«pod4
ãŸãã -
node1
ãã·ã³ãæ®ããå€src=pod1
ããã³dst=pod4
ãããã¯ãŒã¯ã¯ã€ã€ã«æ®ããŸãã - ã«ãŒãã£ã³ã°ããŒãã«ã§ã¯ãåããŒãã®CIDRãããã¯ã«å¯ŸããŠã«ãŒãã£ã³ã°ãèšå®ãããŸããããã«å¿ããŠããã±ããã¯ãCIDRãããã¯ã«IPã¢ãã¬ã¹
pod4
ãå«ãŸããããŒãã«éä¿¡ãããŸãã - ãã±ããã¯ã
node2
ã¡ã€ã³ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹eth0
å°çãnode2
ã çŸåšãpod4
eth0
IPã¢ãã¬ã¹ã§pod4
ãŸããããããŒãã§IP転éãæå¹ã«ãªã£ãŠããããããã±ããã¯cbr0
ãªãã€ã¬ã¯ããããŸãã ãã¹ãã«ãŒãã£ã³ã°ããŒãã«ã¯ãpod4
IPã¢ãã¬ã¹ã«äžèŽããã«ãŒãã«ã€ããŠã¹ãã£ã³ãããŸãã ãã®ããŒãã®CIDRãããã¯ã®å®å ãšããŠcbr0
ãèŠã€ããŸããroute -n
ã³ãã³ãã䜿çšããŠãã¹ãã«ãŒãã£ã³ã°ããŒãã«ã衚瀺ã§ããŸããcbr0
ããã«cbr0
ã®ã«ãŒãã衚瀺ãããŸãã
- ããªããžã¯ãã±ããã
vethyyy
ãARPèŠæ±ãvethyyy
ããIPãvethyyy
å±ããŠããããšãvethyyy
ãŸãã - ãã±ããã¯ä»®æ³ãªã³ã¯ãééããŠ
pod4
å ¥ãpod4
ã
ãªãŒããŒã¬ã€ãããã¯ãŒã¯
ãªãŒããŒã¬ã€ãããã¯ãŒã¯ã¯ããã©ã«ãã§ã¯å¿ èŠãããŸããããç¶æ³ã«ãã£ãŠã¯äŸ¿å©ã§ãã ããšãã°ãååãªIPã¢ãã¬ã¹ç©ºéããªãå ŽåããŸãã¯ãããã¯ãŒã¯ãè¿œå ã®ã«ãŒãã管çã§ããªãå Žåã ãŸãã¯ããªãŒããŒã¬ã€ã«ãã£ãŠæäŸãããè¿œå ã®ç®¡çæ©èœãååŸãããå Žåã ããããã±ãŒã¹ã¯ãã¯ã©ãŠããããã€ããŒã®ã«ãŒãã£ã³ã°ããŒãã«ã§ãµããŒããããã«ãŒãã®æ°ã«å¶éãããããšã§ãã ããšãã°ãAWSã®ã«ãŒãã£ã³ã°ããŒãã«ã®å Žåããããã¯ãŒã¯ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããšãªããæ倧50ã®ã«ãŒãã®ãµããŒãã宣èšãããŸãã 50ãè¶ ããKubernetesããŒããå¿ èŠãªå ŽåãAWSã«ãŒãã£ã³ã°ããŒãã«ã§ã¯äžååã«ãªããŸãã ãã®ãããªå ŽåããªãŒããŒã¬ã€ãããã¯ãŒã¯ã圹ç«ã¡ãŸãã
ãªãŒããŒã¬ã€ãããã¯ãŒã¯ã¯ãããŒãéã®ãããã¯ãŒã¯ãééãããã±ãããã«ãã»ã«åããŸãã ãã¹ãŠã®ãã±ãããã«ãã»ã«åããã³ã«ãã»ã«å解é€ãããšãé 延ãšè€éããå°ãå¢ããããã䜿çšããªãæ¹ãããå ŽåããããŸãã å€ãã®å Žåãããã¯å¿ èŠãããŸããã䜿çšã決å®ããéã«æ€èšãã䟡å€ããããŸãã
ãªãŒããŒã¬ã€ãããã¯ãŒã¯ã§ãã©ãã£ãã¯ãã©ã®ããã«å®è¡ãããããç解ããããã«ãCoreOSã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãããã©ã³ãã«ã®äŸãèããŠã¿ãŸãããã
ããã§ã¯ãåã®èšå®ãšåæ§ã®èšå®ã衚瀺ãããŠããŸããã
flannel0
ãšåŒã°ããæ°ããä»®æ³ã€ãŒãµãããããã€ã¹ã衚瀺ãã
flannel0
ããã¯ã«ãŒãããŒã ã¹ããŒã¹ïŒã«ãŒããããïŒã«ãããŸãã ããã¯ãä»®æ³æ¡åŒµLANïŒVXLANïŒã®å®è£ ã§ãããLinuxã®åãªãå¥ã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã§ãã
ããã±ãŒãžã
pod1
ãã
pod4
ïŒå¥ã®ããŒãäžã«ããïŒã«æž¡ããšã次ã®ããã«ãªããŸãã
-
eth0
ãééãããã±ããã¯ãpod1ã«å±ããpod1
ãæ®ããŠãvethxxxã®ã«ãŒããããã«vethxxx
ãŸãã -
cbr0
ãå®å ãèŠã€ããããã«ARPèŠæ±ãäœæããŸãã - ãã®ããŒãã«ã¯
pod4
ã«å¯Ÿå¿ããIPã¢ãã¬ã¹ããªããããããªããžã¯pod4
ã«ãã±ãããéä¿¡ããŸããããŒãã®ã«ãŒãã£ã³ã°ããŒãã«ã¯ãçåºã®ãããã¯ãŒã¯ç¯å²ã®ã¿ãŒã²ãããšããŠflannel0
ã䜿çšããããã«æ§æãããŸãã - flanneldããŒã¢ã³ã¯ãKubernetes apiserverãŸãã¯åºç€ãšãªãetcdãšå¯Ÿè©±ããããããçåºã®ãã¹ãŠã®IPã¢ãã¬ã¹ãšããããã«é
眮ãããŠããããŒãã«é¢ããæ
å ±ãåä¿¡ããŸãã ãããã£ãŠãflannelã¯ãå²çè£ã®IPã¢ãã¬ã¹ãšããŒãã®IPã¢ãã¬ã¹ã®é©åãªãããã³ã°ïŒãŠãŒã¶ãŒç©ºéå
ïŒãäœæããŸãã
flannel0
ã¯ãã±ãããflannel0
ãéä¿¡å ããã³å®å IPã¢ãã¬ã¹ã察å¿ããããŒãã«å€æŽããè¿œå ããããŒä»ãã®UDPãã±ããã§ã©ããããç¹å¥ãªvxlanããŒãïŒéåžž8472ïŒã«éä¿¡ããŸãã
ãããã³ã°ã¯ãŠãŒã¶ãŒç©ºéã«ãããŸãããå®éã®ããŒã¿ã®ã«ãã»ã«åãšééã¯ã«ãŒãã«ç©ºéã§è¡ããããããååã«é«éã§ãã - ã«ãã»ã«åããããã±ããã¯ããã¹ããã©ãã£ãã¯ã®ã«ãŒãã£ã³ã°ãæ
åœããããã
eth0
ãä»ããŠéä¿¡ãããŸãã
- ãã®ããŒãã«ã¯
- ãã±ããã¯ãããŒãã®IPã¢ãã¬ã¹ãéä¿¡å ããã³å®å ãšããŠããŒããé¢ããŸãã
- ã¯ã©ãŠããããã€ããŒã®ã«ãŒãã£ã³ã°ããŒãã«ã¯ãããŒãéã§ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããæ¹æ³ããã§ã«ç¥ã£ãŠããããããã±ããã¯åä¿¡ããŒã
node2
éä¿¡ããnode2
ã - ãã±ããã¯
node2
eth0
ã«å°çãnode2
ã ç¹å¥ãªvxlanãããŒããšããŠäœ¿çšããããããã«ãŒãã«ã¯ãã±ãããflannel0
éä¿¡ãflannel0
ã -
flannel0
ã¯ããã±ãŒãžã®ã«ãã»ã«åãflannel0
ãã«ãŒããããã«è»¢éããŸãã ãã±ããã¯ãããŒãã®IPã¢ãã¬ã¹ãéä¿¡å ããã³å®å ãšããŠããŒããé¢ããŸãã è¿œå ã®ãã¹ã¯ãéåžžã®ïŒéèªèšŒïŒãããã¯ãŒã¯ã®å ŽåãšäžèŽããŸãã - IP転éãæå¹ã«ãªã£ãŠãããããã«ãŒãã«ã¯ã«ãŒãã£ã³ã°ããŒãã«ã«åŸã£ãŠãã±ããã
cbr0
ã«éä¿¡ããŸãã
- ãã±ããã¯
- ããªããžã¯ãã±ããã
vethyyy
ãARPèŠæ±ãäœæããç®çã®IPã¢ãã¬ã¹ãvethyyy
å±ããŠããããšãvethyyy
ãŸãã - ãã±ããã¯ä»®æ³ãªã³ã¯ãééããŠ
pod4
å ¥ãpod4
ã
å®è£ ããšã«ããããªéãããããããããŸããããå šäœãšããŠããããKubernetesã®ãªãŒããŒã¬ã€ãããã¯ãŒã¯ã®ä»çµã¿ã§ãã Kubernetesã§ã®äœ¿çšãå¿ èŠã§ãããšããäžè¬çãªèª€è§£ããããŸãããçå®ã¯ãã¹ãŠãç¹å®ã®ã±ãŒã¹ã«äŸåãããšããããšã§ãã ãã®ããããŸã絶察ã«å¿ èŠãªå Žåã«ã®ã¿äœ¿çšããããã«ããŠãã ããã
翻蚳è ããã®PS
ããã°ãã芧ãã ããã
- ã Kubernetesã§ã®ãããã¯ãŒãã³ã°ã®å³è§£ã¬ã€ããã ããŒã3 ";
- â Kubernetesã®ãããã¯ãŒã¯ã®èå°è£ â;
- â Kubernetesã®ãããã¯ãŒã¯ããã©ãŒãã³ã¹ã®æ¯èŒ â;
- ã Container Networking InterfaceïŒCNIïŒ-Linuxã³ã³ããã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ããã³æšæº ã;
- ãkubectlã®å®è¡ãéå§ããããšKubernetesã§äœãèµ·ãããŸããïŒãïŒ ããŒã1ããã³ããŒã2 ;
- ã Kubernetesã¹ã±ãžã¥ãŒã©ã¯å®éã«ã©ã®ããã«æ©èœããŸããïŒã ";
- ã æé ãªäŸ¡æ Œã®ãµãŒãã¹ãšããŠKubernetesã䜿çšããã€ã³ãã©ã¹ãã©ã¯ã㣠ãã