ããŒãã 翻蚳ã: äžççã«æå㪠Tinder ãµãŒãã¹ã®åŸæ¥å¡ã¯æè¿ãèªç€Ÿã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã Kubernetes ã«ç§»è¡ããæè¡çãªè©³çŽ°ãå ±æããŸããã ãã®ããã»ã¹ã«ã¯ã»ãŒ 8 幎ãããããã®çµæã200 åã®ã³ã³ããã§ãã¹ãããã 48 ã®ãµãŒãã¹ã§æ§æããããKXNUMXs äžã§ã®éåžžã«å€§èŠæš¡ãªãã©ãããã©ãŒã ãç«ã¡äžããããŸããã Tinder ãšã³ãžãã¢ã¯ã©ã®ãããªèå³æ·±ãå°é£ã«ééããã©ã®ãããªçµæã«è³ããŸããã? ãã®ç¿»èš³ãèªãã§ãã ããã
ãªãã§ããïŒ
ã»ãŒ XNUMX 幎åãTinder ã¯ãã©ãããã©ãŒã ã Kubernetes ã«ç§»è¡ããããšã決å®ããŸããã Kubernetes ã䜿çšãããšãTinder ããŒã ã¯äžå€ã®ãããã€ã¡ã³ããéããŠæå°éã®åŽåã§ã³ã³ããåããŠæ¬çªç°å¢ã«ç§»è¡ã§ããããã«ãªããŸãã (äžå€ã®ãããã€ã¡ã³ã)ã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ããªããã®å±éãããã³ã€ã³ãã©ã¹ãã©ã¯ãã£èªäœã¯ã³ãŒãã«ãã£ãŠäžæã«å®çŸ©ãããŸãã
ãŸããã¹ã±ãŒã©ããªãã£ãšå®å®æ§ã®åé¡ã®è§£æ±ºçãæ¢ããŠããŸããã ã¹ã±ãŒãªã³ã°ãéèŠã«ãªããšãæ°ãã EC2 ã€ã³ã¹ã¿ã³ã¹ãèµ·åãããŸã§ã«æ°åéåŸ ããªããã°ãªããªãããšããããããŸããã ã³ã³ãããèµ·åããŠãæ°åã§ã¯ãªãæ°ç§ã§ãã©ãã£ãã¯ã®åŠçãéå§ãããšããã¢ã€ãã¢ã¯ãç§ãã¡ã«ãšã£ãŠéåžžã«é åçã§ããã
ãã®ããã»ã¹ã¯å°é£ã§ããããšãå€æããã 2019 幎åé ã®ç§»è¡äžã«ãKubernetes ã¯ã©ã¹ã¿ãŒãã¯ãªãã£ã«ã«ãã¹ã«éãããã©ãã£ãã¯éãã¯ã©ã¹ã¿ãŒãµã€ãºãDNS ã«èµ·å ããããŸããŸãªåé¡ã«ééãå§ããŸããã ãã®éçšã§ã200 ã®ãµãŒãã¹ã®ç§»è¡ãšã1000 ã®ããŒãã15000 ã®ããããããã³ 48000 ã®å®è¡ã³ã³ããã§æ§æããã Kubernetes ã¯ã©ã¹ã¿ãŒã®ç¶æã«é¢é£ããå€ãã®èå³æ·±ãåé¡ã解決ããŸããã
ã©ããã£ãŠïŒ
2018 幎 XNUMX æ以æ¥ãç§ãã¡ã¯ç§»è¡ã®ããŸããŸãªæ®µéãçµãŠããŸããã ç§ãã¡ã¯ãã¹ãŠã®ãµãŒãã¹ãã³ã³ããåããKubernetes ãã¹ã ã¯ã©ãŠãç°å¢ã«ãããã€ããããšããå§ããŸããã XNUMX æããããã¹ãŠã®æ¢åãµãŒãã¹ã Kubernetes ã«èšç»çã«ç§»è¡ãå§ããŸããã ç¿å¹Žã® XNUMX æãŸã§ã«ç§»è¡ãå®äºããçŸåšã§ã¯ Tinder ãã©ãããã©ãŒã 㯠Kubernetes äžã§ã®ã¿å®è¡ãããŸãã
Kubernetes çšã®ã€ã¡ãŒãžã®æ§ç¯
Kubernetes ã¯ã©ã¹ã¿ãŒäžã§å®è¡ããããã€ã¯ããµãŒãã¹çšã®ãœãŒã¹ ã³ãŒã ãªããžããªã 30 ãè¶ ããŠããŸãã ãããã®ãªããžããªå ã®ã³ãŒãã¯ãåãèšèªçšã®è€æ°ã®ã©ã³ã¿ã€ã ç°å¢ãåããç°ãªãèšèª (Node.jsãJavaãScalaãGo ãªã©) ã§èšè¿°ãããŠããŸãã
ãã«ã ã·ã¹ãã ã¯ãåãã€ã¯ããµãŒãã¹ã«å®å šã«ã«ã¹ã¿ãã€ãºå¯èœãªããã«ã ã³ã³ããã¹ãããæäŸããããã«èšèšãããŠããŸãã éåžžããã㯠Dockerfile ãšã·ã§ã« ã³ãã³ãã®ãªã¹ãã§æ§æãããŸãã ãããã®ã³ã³ãã³ãã¯å®å šã«ã«ã¹ã¿ãã€ãºå¯èœã§ãããåæã«ãããããã¹ãŠã®ãã«ã ã³ã³ããã¹ãã¯æšæºåããã圢åŒã«åŸã£ãŠèšè¿°ãããŸãã ãã«ã ã³ã³ããã¹ããæšæºåãããšãXNUMX ã€ã®ãã«ã ã·ã¹ãã ã§ãã¹ãŠã®ãã€ã¯ããµãŒãã¹ãåŠçã§ããããã«ãªããŸãã
å³1-1ã Builderã³ã³ããã«ããæšæºåããããã«ãããã»ã¹
ã©ã³ã¿ã€ã éã§æ倧éã®äžè²«æ§ãå®çŸããã«ã¯ (å®è¡ç°å¢) éçºæãšãã¹ãæã«åããã«ã ããã»ã¹ã䜿çšãããŸãã ç§ãã¡ã¯éåžžã«èå³æ·±ã課é¡ã«çŽé¢ããŸããããã©ãããã©ãŒã å šäœã§ãã«ãç°å¢ã®äžè²«æ§ã確ä¿ããæ¹æ³ãéçºããå¿ èŠããããŸããã ãããå®çŸããããã«ããã¹ãŠã®çµã¿ç«ãŠããã»ã¹ã¯ç¹å¥ãªã³ã³ããå ã§å®è¡ãããŸãã ãã«ããŒ.
圌ã®ã³ã³ããå®è£ ã«ã¯é«åºŠãª Docker ãã¯ããã¯ãå¿ èŠã§ããã Builder ã¯ããã©ã€ããŒã Tinder ãªããžããªã«ã¢ã¯ã»ã¹ããããã«å¿ èŠãªããŒã«ã« ãŠãŒã¶ãŒ ID ãšã·ãŒã¯ã¬ãã (SSH ããŒãAWS èªèšŒæ å ±ãªã©) ãç¶æ¿ããŸãã ãœãŒã¹ãå«ãããŒã«ã« ãã£ã¬ã¯ããªãããŠã³ãããŠããã«ã ã¢ãŒãã£ãã¡ã¯ããèªç¶ã«ä¿åããŸãã ãã®ã¢ãããŒãã§ã¯ãBuilder ã³ã³ãããŒãšãã¹ãã®éã§ãã«ã ã¢ãŒãã£ãã¡ã¯ããã³ããŒããå¿ èŠããªããªããããããã©ãŒãã³ã¹ãåäžããŸãã ä¿åããããã«ã ã¢ãŒãã£ãã¡ã¯ãã¯ãè¿œå ã®æ§æãè¡ããã«åå©çšã§ããŸãã
äžéšã®ãµãŒãã¹ã§ã¯ãã³ã³ãã€ã«ç°å¢ãã©ã³ã¿ã€ã ç°å¢ã«ãããããããã«å¥ã®ã³ã³ãããŒãäœæããå¿ èŠããããŸãã (ããšãã°ãNode.js bcrypt ã©ã€ãã©ãªã¯ã€ã³ã¹ããŒã«äžã«ãã©ãããã©ãŒã åºæã®ãã€ã㪠ã¢ãŒãã£ãã¡ã¯ããçæããŸã)ã ã³ã³ãã€ã« ããã»ã¹äžã«ãèŠä»¶ã¯ãµãŒãã¹éã§ç°ãªãå Žåããããæçµç㪠Dockerfile ã¯ãªã³ã¶ãã©ã€ã§ã³ã³ãã€ã«ãããŸãã
Kubernetes ã¯ã©ã¹ã¿ãŒã®ã¢ãŒããã¯ãã£ãšç§»è¡
ã¯ã©ã¹ã¿ãŒã®ãµã€ãºç®¡ç
䜿çšããããšã«ããŸãã kube-aws Amazon EC2 ã€ã³ã¹ã¿ã³ã¹ã§ã®èªåã¯ã©ã¹ã¿ãŒå±éçšã åœåã¯ããã¹ãŠã XNUMX ã€ã®å ±éã®ããŒã ããŒã«ã§åäœããŠããŸããã ç§ãã¡ã¯ããªãœãŒã¹ãããå¹ççã«äœ¿çšããããã«ããµã€ãºãšã€ã³ã¹ã¿ã³ã¹ ã¿ã€ãã«ãã£ãŠã¯ãŒã¯ããŒããåé¢ããå¿ èŠãããããšã«ããã«æ°ã¥ããŸããã ãã®ããžãã¯ã¯ãããŒããããè€æ°ã®ãã«ãã¹ã¬ãã ããããå®è¡ããæ¹ããå€æ°ã®ã·ã³ã°ã«ã¹ã¬ãã ããããšå ±åãããããããã©ãŒãã³ã¹ã®ç¹ã§äºæž¬ããããããšãå€æãããšãããã®ã§ããã
æçµçã«ã¯æ¬¡ã®ããšã«èœã¡çããŸããã
- 倧èŠæš¡ãª â ç£èŠçšïŒããã¡ããŠã¹ïŒ;
- c5.4xã©ãŒãž - Node.js ã¯ãŒã¯ããŒã (ã·ã³ã°ã«ã¹ã¬ãã ã¯ãŒã¯ããŒã) ã®å Žåã
- c5.2xã©ãŒãž - Java ããã³ Go (ãã«ãã¹ã¬ãã ã¯ãŒã¯ããŒã) ã®å Žåã
- c5.4xã©ãŒãž â ã³ã³ãããŒã« ããã«çš (3 ããŒã)ã
移è¡
å€ãã€ã³ãã©ã¹ãã©ã¯ãã£ãã Kubernetes ã«ç§»è¡ããããã®æºåæé ã® XNUMX ã€ã¯ããµãŒãã¹éã®æ¢åã®çŽæ¥éä¿¡ãæ°ããããŒã ãã©ã³ãµãŒ (Elastic Load Balancer (ELB)) ã«ãªãã€ã¬ã¯ãããããšã§ããã ãããã¯ãVirtual Private Cloud (VPC) ã®ç¹å®ã®ãµããããäžã«äœæãããŸããã ãã®ãµãããã㯠Kubernetes VPC ã«æ¥ç¶ãããŸããã ããã«ããããµãŒãã¹ã®äŸåé¢ä¿ã®ç¹å®ã®é åºãèæ ®ããã«ãã¢ãžã¥ãŒã«ã段éçã«ç§»è¡ã§ããããã«ãªããŸããã
ãããã®ãšã³ããã€ã³ãã¯ãæ°ããå ELB ãæã CNAME ãæ〠DNS ã¬ã³ãŒãã®å éã»ããã䜿çšããŠäœæãããŸããã åãæ¿ããããã«ãKubernetes ãµãŒãã¹ã®æ°ãã ELB ãæãæ°ãããšã³ããªãéã¿ 0 ã§è¿œå ããŸããã次ã«ããšã³ã㪠ã»ããã® Time To Live (TTL) ã 0 ã«èšå®ããŸããããã®åŸãå€ãéã¿ãšæ°ããéã¿ã¯æ¬¡ã®ããã«ãªããŸãããã£ãããšèª¿æŽãããæçµçã«ã¯è² è·ã® 100% ãæ°ãããµãŒããŒã«éä¿¡ãããŸããã åãæ¿ããå®äºãããšãTTL å€ã¯ããé©åãªã¬ãã«ã«æ»ããŸããã
ç§ãã¡ãæã£ãŠãã Java ã¢ãžã¥ãŒã«ã¯äœ TTL DNS ã«å¯Ÿå¿ã§ããŸããããNode ã¢ããªã±ãŒã·ã§ã³ã¯å¯Ÿå¿ã§ããŸããã§ããã ãšã³ãžãã¢ã® 60 人ã¯ãæ¥ç¶ããŒã« ã³ãŒãã®äžéšãæžãçŽããXNUMX ç§ããšã«ããŒã«ãæŽæ°ãããããŒãžã£ãŒã«ã©ããããŸããã éžæããã¢ãããŒãã¯éåžžã«ããŸãæ©èœããç®ç«ã£ãããã©ãŒãã³ã¹ã®äœäžã¯ãããŸããã§ããã
ã¬ãã¹ã³
ãããã¯ãŒã¯ ãã¡ããªãã¯ã®éç
8 幎 2019 æ XNUMX æ¥ã®æ©æãTinder ãã©ãããã©ãŒã ãäºæããã¯ã©ãã·ã¥ããŸããã ãã®ææ©ãã«çºçãããã©ãããã©ãŒã ã®ã¬ã€ãã³ã·ãŒã®ç¡é¢ä¿ãªå¢å ã«å¿ããŠãã¯ã©ã¹ã¿ãŒå ã®ããããšããŒãã®æ°ãå¢å ããŸããã ããã«ããããã¹ãŠã®ããŒã㧠ARP ãã£ãã·ã¥ãæ¯æžããŠããŸããŸããã
ARP ãã£ãã·ã¥ã«é¢é£ãã Linux ãªãã·ã§ã³ã¯ XNUMX ã€ãããŸãã
gc_thresh3 - ããã¯å³ããå¶éã§ãã ãã°å ã«ãé£æ¥ããŒãã« ãªãŒããŒãããŒããšã³ããªãåºçŸãããšããããšã¯ãåæã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ (GC) åŸã§ããARP ãã£ãã·ã¥ã«é£æ¥ãšã³ããªãä¿åããã®ã«ååãªã¹ããŒã¹ããªãããšãæå³ããŠããŸããã ãã®å Žåãã«ãŒãã«ã¯åã«ãã±ãããå®å šã«ç Žæ£ããŸããã
ã䜿çšããŠãããŸã
å³ 2â1ã ãã©ã³ãã«å³ (
å³2-2ã VXLAN ããã±ãŒãž (
å Kubernetes ã¯ãŒã«ãŒ ããŒãã¯ããã倧ã㪠/24 ãããã¯ãã /9 ãã¹ã¯ã䜿çšããŠä»®æ³ã¢ãã¬ã¹ç©ºéãå²ãåœãŠãŸãã åããŒãã«ã€ããŠãããã¯æ¬¡ã®ããã«ãªããŸãã
ããã«ãããŒããšããã (ãŸãã¯ããããšããã) ã®éä¿¡ã¯æçµçã«ã€ã³ã¿ãŒãã§ã€ã¹ãçµç±ããŸãã eth0 (äžèšã®ãã©ã³ãã«å³ã«ç€ºãããŠããããã«)ã ããã«ããã察å¿ããéä¿¡å ãã¹ããšå®å ãã¹ãããšã« ARP ããŒãã«ã«è¿œå ã®ãšã³ããªãäœæãããŸãã
ç§ãã¡ã®ç°å¢ã§ã¯ããã®çš®ã®ã³ãã¥ãã±ãŒã·ã§ã³ãéåžžã«äžè¬çã§ãã Kubernetes ã®ãµãŒãã¹ ãªããžã§ã¯ãã®å ŽåãELB ãäœæãããKubernetes ã¯åããŒãã ELB ã«ç»é²ããŸãã ELB ã¯ãããã«ã€ããŠäœãç¥ããªããããéžæãããããŒãããã±ããã®æçµå®å ã§ã¯ãªãå¯èœæ§ããããŸãã éèŠãªã®ã¯ãããŒãã ELB ãããã±ãããåä¿¡ãããšãã«ãŒã«ãèæ ®ããŠãã±ãããèæ ®ãããšããããšã§ãã iptables ç¹å®ã®ãµãŒãã¹ã®ããããéžæããå¥ã®ããŒãäžã®ããããã©ã³ãã ã«éžæããŸãã
é害ãçºçããæç¹ã§ã¯ãã¯ã©ã¹ã¿ãŒå ã« 605 åã®ããŒãããããŸããã äžèšã®çç±ã«ãããããã¯éèŠæ§ãå æããã«ã¯ååã§ãã gc_thresh3ããããããã©ã«ãã§ãã ãããçºçãããšããã±ãããããããããå§ããã ãã§ãªãã/24 ãã¹ã¯ãæ〠Flannel ä»®æ³ã¢ãã¬ã¹ç©ºéå šäœã ARP ããŒãã«ããæ¶ããŸãã ããŒããšãããã®éä¿¡ãš DNS ã¯ãšãªãäžæãããŸã (DNS ã¯ã¯ã©ã¹ã¿ãŒå ã§ãã¹ããããŠããŸãã詳现ã«ã€ããŠã¯ããã®èšäºã®åŸåãåç §ããŠãã ãã)ã
ãã®åé¡ã解決ããã«ã¯ãå€ãå¢ããå¿ èŠããããŸã gc_thresh1, gc_thresh2 О gc_thresh3 Flannel ãåèµ·åããŠãäžè¶³ããŠãããããã¯ãŒã¯ãåç»é²ããŸãã
äºæããªã DNS ã¹ã±ãŒãªã³ã°
移è¡ããã»ã¹äžãDNS ãç©æ¥µçã«äœ¿çšããŠãã©ãã£ãã¯ã管çããå€ãã€ã³ãã©ã¹ãã©ã¯ãã£ãã Kubernetes ã«ãµãŒãã¹ã段éçã«ç§»è¡ããŸããã Route53 ã§ã¯ãé¢é£ä»ãããã RecordSet ã«æ¯èŒçäœã TTL å€ãèšå®ããŸãã å€ãã€ã³ãã©ã¹ãã©ã¯ãã£ã EC2 ã€ã³ã¹ã¿ã³ã¹ã§å®è¡ãããŠãããšãããªãŸã«ããŒèšå®ã¯ Amazon DNS ãæããŠããŸããã ç§ãã¡ã¯ãããåœç¶ã®ããšãšèããŠãããç§ãã¡ã®ãµãŒãã¹ã Amazon ãµãŒãã¹ (DynamoDB ãªã©) ã«å¯Ÿããäœã TTL ã®åœ±é¿ã¯ã»ãšãã©æ³šç®ãããŸããã§ããã
ãµãŒãã¹ã Kubernetes ã«ç§»è¡ãããšãDNS ã 250 ç§ããã 1000 äžä»¶ã®ãªã¯ãšã¹ããåŠçããŠããããšãããããŸããã ãã®çµæãã¢ããªã±ãŒã·ã§ã³ã§ã¯ DNS ã¯ãšãªã«å¯ŸããŠé倧ãªã¿ã€ã ã¢ãŠããç¶ç¶çã«çºçããããã«ãªããŸããã ããã¯ãDNS ãããã€ããŒãæé©åããCoreDNS ã«åãæ¿ãããšããå€å€§ãªåªåã«ãããããã (ããŒã¯æã®è² è·ã§ã¯ 120 ã³ã¢ã§å®è¡ããã XNUMX ãããã«éããŸãã) ã«ããããããçºçããŸããã
ä»ã®èããããåå ãšè§£æ±ºçã調æ»ãããšããã次ã®ããšãããããŸããã
ãã®åé¡ã¯ãéä¿¡å ããã³å®å ãããã¯ãŒã¯ ã¢ãã¬ã¹å€æ (SNAT ããã³ DNAT) ãšãã®åŸã®ããŒãã«ãžã®ãšã³ããªã®æ®µéã§çºçããŸãã ã³ã³ã³ãŒã¹ã©ãã¯ã å éšã§è°è«ãããã³ãã¥ããã£ã«ãã£ãŠææ¡ãããåé¿çã® XNUMX ã€ã¯ãDNS ãã¯ãŒã«ãŒ ããŒãèªäœã«ç§»åããããšã§ããã ãã®å ŽåïŒ
- ãã©ãã£ãã¯ã¯ããŒãå ã«çãŸããããSNAT ã¯å¿ èŠãããŸããã ã€ã³ã¿ãŒãã§ã€ã¹çµç±ã§ã«ãŒãã£ã³ã°ããå¿ èŠã¯ãããŸãã eth0.
- å®å IP ã¯ããŒãã«å¯ŸããŠããŒã«ã«ã§ãããã«ãŒã«ã«åŸã£ãŠã©ã³ãã ã«éžæããããããã§ã¯ãªããããDNAT ã¯å¿ èŠãããŸããã iptables.
ç§ãã¡ã¯ãã®ã¢ãããŒãã貫ãããšã«ããŸããã CoreDNS 㯠Kubernetes ã® DaemonSet ãšããŠãããã€ãããããŒã«ã« ããŒã DNS ãµãŒããŒã Kubernetes ã«å®è£ ããŸããã resolve.conf ãã©ã°ãèšå®ããŠåããã --cluster-dns ããŒã ãã¥ãŒãã¬ããâã ãã®è§£æ±ºçã¯ãDNS ã¿ã€ã ã¢ãŠãã«å¯ŸããŠå¹æçã§ããããšãå€æããŸããã
ãã ããäŸç¶ãšããŠãã±ããæ倱ãšã«ãŠã³ã¿ãŒã®å¢å ãèŠãããŸããã æ¿å ¥_倱æ ãã©ã³ãã«ã€ã³ã¿ãŒãã§ã€ã¹ã§ã DNS ãã©ãã£ãã¯ã®ã¿ SNAT ã DNAT ãæé€ã§ããããããã®åé¡ã¯åé¿çã®å®è£ åŸãç¶ç¶ããŸããã ä»ã®ã¿ã€ãã®ãã©ãã£ãã¯ã§ã¯ç«¶åç¶æ ãç¶æãããŸããã 幞ããªããšã«ããã±ããã®ã»ãšãã©ã¯ TCP ãªã®ã§ãåé¡ãçºçããŠãåéä¿¡ãããã ãã§ãã ç§ãã¡ã¯ãããããã¿ã€ãã®ãã©ãã£ãã¯ã«é©ãããœãªã¥ãŒã·ã§ã³ãèŠã€ããããã«ãŸã åªåããŠããŸãã
Envoy ã䜿çšããè² è·åæ£ã®åäž
ããã¯ãšã³ã ãµãŒãã¹ã Kubernetes ã«ç§»è¡ãããšããããéã®è² è·ã®äžåè¡¡ã«æ©ãŸããå§ããŸããã HTTP ããŒãã¢ã©ã€ãã«ãããããŒã«ã¢ãŠããããåãããã€ã¡ã³ãã®æåã«æºåãå®äºããããã㧠ELB æ¥ç¶ããã³ã°ããããšãããããŸããã ãããã£ãŠããã©ãã£ãã¯ã®å€§éšåã¯ãå©çšå¯èœãªãããã®ããäžéšãééããŸããã ç§ãã¡ããã¹ãããæåã®è§£æ±ºçã¯ãææªã®ã·ããªãªã«åããŠãæ°ããå±é㧠MaxSurge ã 100% ã«èšå®ããããšã§ããã 倧èŠæš¡ãªå±éã«é¢ããŠã¯ããã®åœ±é¿ã¯ãããã§ãããæåŸ ã§ããªãããšãå€æããŸããã
ç§ãã¡ã䜿çšãããã XNUMX ã€ã®è§£æ±ºçã¯ãéèŠãªãµãŒãã¹ã«å¯ŸãããªãœãŒã¹èŠæ±ã人çºçã«å¢ããããšã§ããã ãã®å Žåãè¿ãã«é 眮ããããããã¯ãä»ã®éããããã«æ¯ã¹ãŠæäœããäœå°ã倧ãããªããŸãã è³æºã®ç¡é§ã«ãªãã®ã§ãé·æçã«ã¯ããŸããããŸããã ããã«ãNode ã¢ããªã±ãŒã·ã§ã³ã¯ã·ã³ã°ã«ã¹ã¬ããã§ãã£ãããã䜿çšã§ããã³ã¢ã¯ XNUMX ã€ã ãã§ããã å¯äžã®æ¬åœã®è§£æ±ºçã¯ãããåªããè² è·åæ£ã䜿çšããããšã§ããã
ç§ãã¡ã¯é·ãéãååã«æè¬ããããšæã£ãŠããŸãã
次ã®æ§æãæãã€ããŸããããããããšã« Envoy ãµã€ãã«ãŒãš XNUMX ã€ã®ã«ãŒããæã¡ãããŒãçµç±ã§ã¯ã©ã¹ã¿ãŒãããŒã«ã«ã§ã³ã³ãããŒã«æ¥ç¶ããŸãã æœåšçãªã«ã¹ã±ãŒããæå°éã«æããå°ããªãããååŸãç¶æããããã«ããµãŒãã¹ããšã«ã¢ãã€ã©ããªãã£ãŒãŸãŒã³ (AZ) ããšã« XNUMX ã€ãã€ãEnvoy ããã³ããããã· ãããã®ããªãŒãã䜿çšããŸããã 圌ãã¯ãç¹å®ã®ãµãŒãã¹ã®å AZ å ã®ãããã®ãªã¹ããè¿ãã ãã®ããšã³ãžãã¢ã® XNUMX 人ãäœæããã·ã³ãã«ãªãµãŒãã¹æ€åºãšã³ãžã³ã«äŸåããŠããŸããã
次ã«ããµãŒãã¹ ããã³ã Envoy ã¯ãXNUMX ã€ã®äžæµã¯ã©ã¹ã¿ãŒãšã«ãŒãã§ãã®ãµãŒãã¹æ€åºã¡ã«ããºã ã䜿çšããŸããã é©åãªã¿ã€ã ã¢ãŠããèšå®ãããã¹ãŠã®ãµãŒããã ãã¬ãŒã«ãŒèšå®ãå¢ãããæå°éã®åè©Šè¡æ§æãè¿œå ããŠãåäžã®é害ã«å¯ŸåŠããã¹ã ãŒãºãªå±éã確ä¿ããŸããã ãããã®åãµãŒãã¹ ããã³ã ãšã³ãã€ã®åã« TCP ELB ãé 眮ããŸããã ã¡ã€ã³ ãããã· ã¬ã€ã€ãŒããã®ããŒãã¢ã©ã€ããäžéšã® Envoy ãããã§ã¹ã¿ãã¯ããŠãããšããŠãããããã¯äŸç¶ãšããŠè² è·ãããé©åã«åŠçã§ããããã¯ãšã³ãã® minimum_request ãéããŠãã©ã³ã¹ããšãããã«æ§æãããŠããŸããã
ãããã€ã¡ã³ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ ããããšãµã€ãã«ãŒ ãããã®äž¡æ¹ã§ preStop ããã¯ã䜿çšããŸããã ãã®ããã¯ã¯ããµã€ãã«ãŒ ã³ã³ãããŒã«ãã管çãšã³ããã€ã³ãã®ã¹ããŒã¿ã¹ããã§ãã¯ããéã«ãšã©ãŒãããªã¬ãŒããã¢ã¯ãã£ããªæ¥ç¶ãçµäºã§ããããã«ããããã«ãã°ããã¹ãªãŒãç¶æ ã«ãªããŸããã
ç§ãã¡ãããã»ã©è¿ éã«ç§»è¡ã§ããçç±ã® XNUMX ã€ã¯ãäžè¬ç㪠Prometheus ã€ã³ã¹ããŒã«ã«ç°¡åã«çµ±åã§ãã詳现ãªã¡ããªã¯ã¹ã«ãããã®ã§ãã ããã«ãããæ§æãã©ã¡ãŒã¿ã調æŽãããã©ãã£ãã¯ãååæ£ããŠããéã«äœãèµ·ãã£ãŠããããæ£ç¢ºã«ç¢ºèªã§ããããã«ãªããŸããã
çµæã¯ããã«çŸããæããã§ããã æãã¢ã³ãã©ã³ã¹ãªãµãŒãã¹ããéå§ããŸããããçŸæç¹ã§ã¯ã¯ã©ã¹ã¿ãŒå ã® 12 ã®æãéèŠãªãµãŒãã¹ã®åã§åäœããŠããŸãã ä»å¹Žã¯ãããé«åºŠãªãµãŒãã¹æ€åºããµãŒããããã¬ãŒã«ãŒãå€ãå€æ€åºãã¬ãŒãå¶éããã¬ãŒã¹ãåãããã«ãµãŒãã¹ã¡ãã·ã¥ãžã®ç§»è¡ãèšç»ããŠããŸãã
å³ 3â1ã Envoy ãžã®ç§»è¡äžã® XNUMX ã€ã®ãµãŒãã¹ã® CPU åæ
æçµçµæ
ãã®çµéšãšè¿œå ã®èª¿æ»ãéããŠãç§ãã¡ã¯å€§èŠæš¡ãª Kubernetes ã¯ã©ã¹ã¿ãŒã®èšèšããããã€ãéçšã«ããã匷åãªã¹ãã«ãåãã匷åãªã€ã³ãã©ã¹ãã©ã¯ã㣠ããŒã ãæ§ç¯ããŸããã ãã¹ãŠã® Tinder ãšã³ãžãã¢ã¯ãã³ã³ãããããã±ãŒãžåããã¢ããªã±ãŒã·ã§ã³ã Kubernetes ã«ãããã€ããããã®ç¥èãšçµéšãåããŠããŸãã
å€ãã€ã³ãã©ã¹ãã©ã¯ãã£ã§è¿œå ã®ãã£ãã·ãã£ãå¿ èŠã«ãªã£ããšããæ°ãã EC2 ã€ã³ã¹ã¿ã³ã¹ãèµ·åãããŸã§æ°ååŸ ããªããã°ãªããŸããã§ããã ã³ã³ãããŒãå®è¡ãéå§ããæ°åã§ã¯ãªãæ°ç§ä»¥å ã«ãã©ãã£ãã¯ã®åŠçãéå§ããããã«ãªããŸããã åäžã® EC2 ã€ã³ã¹ã¿ã³ã¹äžã§è€æ°ã®ã³ã³ãããã¹ã±ãžã¥ãŒã«ãããšãæ°Žå¹³éäžãåäžããŸãã ãã®çµæã2019 幎㮠EC2 ã³ã¹ãã¯æšå¹Žã«æ¯ã¹ãŠå€§å¹ ã«åæžããããšäºæž¬ããŠããŸãã
移è¡ã«ã¯ 2019 幎è¿ãããããŸãããã200 幎 1000 æã«å®äºããŸããã çŸåšãTinder ãã©ãããã©ãŒã ã¯ã15 ã®ãµãŒãã¹ã000 ã®ããŒãã48 ã®ããããããã³ 000 ã®å®è¡ã³ã³ããã§æ§æããã Kubernetes ã¯ã©ã¹ã¿ãŒäžã§ã®ã¿å®è¡ãããŸãã ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãã¯ãéçšããŒã ã®å¯äžã®é åã§ã¯ãããŸããã åœç€Ÿã®ãšã³ãžãã¢å šå¡ããã®è²¬ä»»ãå ±æããã³ãŒãã®ã¿ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãšãããã€ã®ããã»ã¹ãå¶åŸ¡ããŸãã
翻蚳è ããã®è¿œäŒž
ç§ãã¡ã®ããã°ã®äžé£ã®èšäºããèªã¿ãã ããã
- «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 1: eBay ããã® 4200 åã®çåºãš TessMaster 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 2: ã³ã³ã«ãŒãšSAP 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 3: GitHubã® 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 4: SoundCloud (ããã¡ããŠã¹ã«ãã) 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 5: ããžã¿ã«ãã³ã¯ ã¢ã³ãŸ 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 6: BlaBlaCar 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 7: ãã©ãã¯ãã㯠'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 8: Huawei瀟 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 9: CERN ãš 210 åã® K8s ã¯ã©ã¹ã¿ãŒ 'ã - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 10: Reddit 'ã
åºæïŒ habr.com