ããã«ã¡ã¯ãWindows ã³ã³ããçšã® AWS EKS (Elastic Kubernetes Service) ãµãŒãã¹ã®ã»ããã¢ãããšäœ¿çšã«é¢ããç§ã®çµéšãå
±æããããšæããŸãããããããã®äœ¿çšã®äžå¯èœæ§ãšãAWS ã·ã¹ãã ã³ã³ããã§èŠã€ãã£ããã°ã«ã€ããŠèª¬æããããšæããŸãã Windows ã³ã³ãããŒçšã®ãã®ãµãŒãã¹ã«èå³ãããå Žåã¯ãcat ã®äžã«ã¢ã¯ã»ã¹ããŠãã ããã
Windows ã³ã³ãããŒã人æ°ã®ãããã¯ã§ã¯ãªãã䜿çšããŠãã人ãã»ãšãã©ããªãããšã¯æ¿ç¥ããŠããŸãããkubernetes ãš Windows ã«é¢ãã Habré ã«é¢ããèšäºãããã€ãããããã®ãããªäººããŸã ããããããã®èšäºãæžãããšã«ããŸããã
éå§
ãã¹ãŠã¯ãWindows 70%ãLinux 30% ã®ç€Ÿå ãµãŒãã¹ã kubernetes ã«ç§»è¡ããããšã決ãŸã£ããšãã«å§ãŸããŸããã ãã®ç®çã®ããã«ãAWS EKS ã¯ã©ãŠã ãµãŒãã¹ãå¯èœãªéžæè¢ã® 8 ã€ãšããŠæ€èšãããŸããã 2019 幎 1.11 æ XNUMX æ¥ãŸã§ãAWS EKS Windows ã¯ãããªã㯠ãã¬ãã¥ãŒã§ãããç§ã¯ããã䜿ãå§ããŸãããããã§ã¯ kubernetes ã®å€ã XNUMX ããŒãžã§ã³ã䜿çšãããŠããŸãããããšã«ããããããã§ãã¯ããŠããã®ã¯ã©ãŠã ãµãŒãã¹ãã©ã®æ®µéã«ããã®ããæ©èœããŠãããã©ããã確èªããããšã«ããŸãããçµå±ã®ãšããããããããããã®åé€ã®è¿œå ã«ãã°ããããå€ãããã㯠Windows ã¯ãŒã«ãŒ ããŒããšåããµããããããã®å éš IP çµç±ã§å¿çãåæ¢ããŠããŸããã
ãã®ãããAWS EKS ã®äœ¿çšãæŸæ£ããåã EC2 äžã® kubernetes äžã®ç¬èªã®ã¯ã©ã¹ã¿ãŒã䜿çšããããšã決å®ãããŸãããããã«ããããã¹ãŠã®ãã©ã³ã·ã³ã°ãš HA ã CloudFormation çµç±ã§èªåãã¡ã§èšè¿°ããã ãã§æžã¿ãŸãã
Amazon EKS Windows ã³ã³ããã®ãµããŒããäžè¬æäŸéå§
ããŒãã£ã³ã»ããŒããŒè | 08 幎 2019 æ XNUMX æ¥
èªåã®ã¯ã©ã¹ã¿ãŒã® CloudFormation ã«ãã³ãã¬ãŒããè¿œå ããåã«ããã®ãã¥ãŒã¹ãç®ã«ããŸããã
ãã¡ãããç§ã¯ãã¹ãŠã®ä»äºãèã«çœ®ãã圌ãã GA ã«å¯ŸããŠäœãããã®ãããããŠãããªã㯠ãã¬ãã¥ãŒã§ãã¹ãŠãã©ã®ããã«å€ãã£ãã®ããç 究ãå§ããŸããã ã¯ããAWS ã¯ããŸããããŸãããWindows ã¯ãŒã«ãŒ ããŒãã®ã€ã¡ãŒãžãããŒãžã§ã³ 1.14 ã«æŽæ°ããŸããããŸããã¯ã©ã¹ã¿ãŒèªäœ (EKS ã®ããŒãžã§ã³ 1.14) ã Windows ããŒãããµããŒãããããã«ãªããŸããã ãããªã㯠ãã¬ãã¥ãŒã«ãããããžã§ã¯ã
EKS ã¯ã©ã¹ã¿ãŒãçŸåšã® VPC ããã³ãµããããã«çµ±åãã
äžèšã®çºè¡šã®ãªã³ã¯ãšããã¥ã¡ã³ãã®ãã¹ãŠã®ãœãŒã¹ã§ãç¬èªã® eksctl ãŠãŒãã£ãªãã£ãŸãã¯ãã®åŸã® CloudFormation + kubectl ãä»ããŠã¯ã©ã¹ã¿ãŒããããã€ããAmazon ã®ãããªã㯠ãµããããã®ã¿ã䜿çšããæ°ããã¯ã©ã¹ã¿ãŒã«ã¯å¥ã® VPC ã䜿çšããŸãã
ãã®ãªãã·ã§ã³ã¯å€ãã®äººã«ã¯é©ããŠããŸããããŸããå¥åã® VPC ã¯ããã®ã³ã¹ããšçŸåšã® VPC ãžã®ãã¢ãªã³ã° ãã©ãã£ãã¯ã®è¿œå ã³ã¹ããæå³ããŸãã ãã§ã« AWS ã«ç¬èªã®è€æ°ã® AWS ã¢ã«ãŠã³ããVPCããµãããããã«ãŒãããŒãã«ããã©ã³ãžããã²ãŒããŠã§ã€ãªã©ãåããæ¢è£œã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãæã£ãŠãã人ã¯äœããã¹ãã§ãããã? ãã¡ãããããããã¹ãŠãäžæãããããçŽãããããå¿ èŠã¯ãããŸãããæ¢åã® VPC ã䜿çšããŠãæ°ãã EKS ã¯ã©ã¹ã¿ãŒãçŸåšã®ãããã¯ãŒã¯ ã€ã³ãã©ã¹ãã©ã¯ãã£ã«çµ±åããå¿ èŠããããŸããåé¢ããã«ã¯ãã¯ã©ã¹ã¿ãŒçšã«æ°ãããµãããããäœæããã ãã§ãã
ç§ã®å Žåããã®ãã¹ãéžæãããæ¢åã® VPC ã䜿çšããæ°ããã¯ã©ã¹ã¿ãŒã« 2 ã€ã®ãããªã㯠ãµãããããš 2 ã€ã®ãã©ã€ããŒã ãµããããã®ã¿ãè¿œå ããŸããããã¡ãããããã¥ã¡ã³ãã«åŸã£ãŠãã¹ãŠã®ã«ãŒã«ãèæ
®ãããŠããŸãã
ãŸããEIP ã䜿çšãããããªã㯠ãµããããã«ã¯ãŒã«ãŒ ããŒãããªããšããæ¡ä»¶ã XNUMX ã€ãããŸããã
eksctl 察 CloudFormation
ã¯ã©ã¹ã¿ãŒããããã€ããäž¡æ¹ã®æ¹æ³ãè©ŠããŠã¿ããšãããã©ã¡ãã®å Žåãç¶æ³ã¯åãã§ããã
ããã§ã¯ã³ãŒããçããªããããeksctl ã®ã¿ã䜿çšããäŸã瀺ããŸãã eksctl ã䜿çšããŠã次㮠3 ã€ã®æé ã§ã¯ã©ã¹ã¿ãŒããããã€ããŸãã
1. ã¯ã©ã¹ã¿ãŒèªäœãš Linux ã¯ãŒã«ãŒ ããŒããäœæããŸããããã¯åŸã§ã·ã¹ãã ã³ã³ãããŒãšåãäžé㪠vpc ã³ã³ãããŒã©ãŒããã¹ãããŸãã
eksctl create cluster
--name yyy
--region www
--version 1.14
--vpc-private-subnets=subnet-xxxxx,subnet-xxxxx
--vpc-public-subnets=subnet-xxxxx,subnet-xxxxx
--asg-access
--nodegroup-name linux-workers
--node-type t3.small
--node-volume-size 20
--ssh-public-key wwwwwwww
--nodes 1
--nodes-min 1
--nodes-max 2
--node-ami auto
--node-private-networking
æ¢åã® VPC ã«ãããã€ããã«ã¯ããµããããã® ID ãæå®ããã ãã§ãeksctl ã VPC èªäœã決å®ããŸãã
ã¯ãŒã«ãŒ ããŒãããã©ã€ããŒã ãµããããã«ã®ã¿ãããã€ãããããã«ããã«ã¯ãããŒãã°ã«ãŒãã« --node-private-networking ãæå®ããå¿ èŠããããŸãã
2. ã¯ã©ã¹ã¿ãŒã« vpc-controller ãã€ã³ã¹ããŒã«ããŸããããã«ãããã¯ãŒã«ãŒ ããŒããåŠçããã空ã IP ã¢ãã¬ã¹ã®æ°ãšã€ã³ã¹ã¿ã³ã¹äžã® ENI ã®æ°ãã«ãŠã³ããããè¿œå ããã³åé€ãããŸãã
eksctl utils install-vpc-controllers --name yyy --approve
3. vpc ã³ã³ãããŒã©ãŒãå«ãã·ã¹ãã ã³ã³ãããŒã Linux ã¯ãŒã«ãŒ ããŒãã§æ£åžžã«èµ·åããããããšã¯ Windows ã¯ãŒã«ãŒã§å¥ã®ããŒãã°ã«ãŒããäœæããã ãã§ãã
eksctl create nodegroup
--region www
--cluster yyy
--version 1.14
--name windows-workers
--node-type t3.small
--ssh-public-key wwwwwwwwww
--nodes 1
--nodes-min 1
--nodes-max 2
--node-ami-family WindowsServer2019CoreContainer
--node-ami ami-0573336fc96252d05
--node-private-networking
ããŒããã¯ã©ã¹ã¿ãŒã«æ£åžžã«æ¥ç¶ããããã¹ãŠãæ£åžžã«èŠãããšãæºåå®äºã¹ããŒã¿ã¹ã«ãªããŸãããããã§ã¯ãããŸããã
vpc ã³ã³ãããŒã©ãŒã®ãšã©ãŒ
Windows ã¯ãŒã«ãŒ ããŒãã§ããããå®è¡ããããšãããšã次ã®ãšã©ãŒãçºçããŸãã
NetworkPlugin cni failed to teardown pod "windows-server-iis-7dcfc7c79b-4z4v7_default" network: failed to parse Kubernetes args: pod does not have label vpc.amazonaws.com/PrivateIPv4Address]
ããã«è©³ããèŠãŠã¿ããšãAWS ã®ã€ã³ã¹ã¿ã³ã¹ã¯æ¬¡ã®ããã«ãªã£ãŠããããšãããããŸãã
ãããŠããã¯æ¬¡ã®ããã«ãªãã¯ãã§ã:
ãã®ããšãããvpc ã³ã³ãããŒã©ãŒãäœããã®çç±ã§ãã®åœ¹å²ãæãããããããã䜿çšã§ããããã«æ°ãã IP ã¢ãã¬ã¹ãã€ã³ã¹ã¿ã³ã¹ã«è¿œå ã§ããªãã£ãããšã¯æããã§ãã
vpc-controller ãããã®ãã°ãèŠãŠã¿ãŸãããã次ã®ããšãããããŸãã
kubectl ãã°-n kube ã·ã¹ãã
I1011 06:32:03.910140 1 watcher.go:178] Node watcher processing node ip-10-xxx.ap-xxx.compute.internal.
I1011 06:32:03.910162 1 manager.go:109] Node manager adding node ip-10-xxx.ap-xxx.compute.internal with instanceID i-088xxxxx.
I1011 06:32:03.915238 1 watcher.go:238] Node watcher processing update on node ip-10-xxx.ap-xxx.compute.internal.
E1011 06:32:08.200423 1 manager.go:126] Node manager failed to get resource vpc.amazonaws.com/CIDRBlock pool on node ip-10-xxx.ap-xxx.compute.internal: failed to find the route table for subnet subnet-0xxxx
E1011 06:32:08.201211 1 watcher.go:183] Node watcher failed to add node ip-10-xxx.ap-xxx.compute.internal: failed to find the route table for subnet subnet-0xxx
I1011 06:32:08.201229 1 watcher.go:259] Node watcher adding key ip-10-xxx.ap-xxx.compute.internal (0): failed to find the route table for subnet subnet-0xxxx
I1011 06:32:08.201302 1 manager.go:173] Node manager updating node ip-10-xxx.ap-xxx.compute.internal.
E1011 06:32:08.201313 1 watcher.go:242] Node watcher failed to update node ip-10-xxx.ap-xxx.compute.internal: node manager: failed to find node ip-10-xxx.ap-xxx.compute.internal.
Google ã§æ€çŽ¢ããŠãäœããããããŸããã§ãããã©ããããŸã 誰ããã®ãããªãã°ãçºèŠããŠããªãããåé¡ãæçš¿ããŠããªãããã ã£ãã®ã§ãæåã«èªåã§éžæè¢ãèããå¿ èŠããããŸããã æåã«æãã€ããã®ã¯ããããã vpc ã³ã³ãããŒã©ãŒã ip-10-xxx.ap-xxx.compute.internal ã解決ã§ãããããã«å°éã§ããªãããããšã©ãŒãçºçããã®ã§ã¯ãªãããšããããšã§ããã
ã¯ãã確ãã«ãç§ãã¡ã¯ VPC ã§ã«ã¹ã¿ã DNS ãµãŒããŒã䜿çšããŠãããååãšã㊠Amazon ã®ãµãŒããŒã¯äœ¿çšããŸããããã®ããããã® ap-xxx.compute.internal ãã¡ã€ã³ã«ã¯è»¢éãããèšå®ãããŠããŸããã§ããã ãã®ãªãã·ã§ã³ããã¹ãããŸããããçµæãåŸãããŸããã§ããããããããã¹ããã¯ãªãŒã³ã§ã¯ãªãã£ããããããã«ãã¯ãã«ã«ãµããŒããšé£çµ¡ãåããšãã«ã圌ãã®èãã«å±ããŸããã
ç¹ã«ã¢ã€ãã¢ã¯ãªãã£ãã®ã§ããã¹ãŠã®ã»ãã¥ãªã㣠ã°ã«ãŒã㯠eksctl èªäœã«ãã£ãŠäœæãããããããã®ä¿å®æ§ã«çãã®äœå°ã¯ãããŸããã§ãããã«ãŒã ããŒãã«ãæ£ãããnatãdnsãã¯ãŒã«ãŒ ããŒãã«ããã€ã³ã¿ãŒããã ã¢ã¯ã»ã¹ãååšããŠããŸããã
ããã«ã-node-private-networking ã䜿çšããã«ã¯ãŒã«ãŒ ããŒãããããªã㯠ãµããããã«ãããã€ãããšããã®ããŒã㯠vpc ã³ã³ãããŒã©ãŒã«ãã£ãŠããã«æŽæ°ããããã¹ãŠãæèšã®ããã«åäœããŸããã
次㮠XNUMX ã€ã®ãªãã·ã§ã³ããããŸããã
- ãããããŠã誰ãã AWS ã§ãã®ãã°ã«ã€ããŠèª¬æããä¿®æ£ãããŸã§åŸ ã¡ãŸããããããããã°ãAWS EKS Windows 㯠GA ã§ãªãªãŒã¹ãããã°ãããªã®ã§ (ãã®èšäºãæžããŠããæç¹ã§ 8 æ¥ãçµéããŠããŸã)ãå®å šã«äœ¿çšã§ããããã«ãªããŸãããããããå€ãã®äººãããããã§ããããç§ãšåãéããã©ã£ãŠãã ããã
- AWS ãµããŒãã«æçŽãæžããããããå Žæããã®å€§éã®ãã°ã䜿ã£ãŠåé¡ã®æ¬è³ªãäŒããVPC ãšãµããããã䜿çšããŠãããšãã«ãµãŒãã¹ãæ©èœããªãããšã蚌æããŠãã ãããããžãã¹ ãµããŒããåããŠããã®ã¯ç¡é§ã§ã¯ãããŸãããå°ãªããšãäžåºŠã¯:)
AWSãšã³ãžãã¢ãšã®ã³ãã¥ãã±ãŒã·ã§ã³
ããŒã¿ã«ã§ãã±ãããäœæããåŸã誀ã£ãŠ Web (é»åã¡ãŒã«ãŸãã¯ãµããŒã ã»ã³ã¿ãŒ) çµç±ã§è¿ä¿¡ããããšãéžæããŠããŸããŸããããã®ãªãã·ã§ã³ã䜿çšãããšãç§ã®ãã±ããã«é倧床 - ã·ã¹ãã é害ãããã«ãããããããæ°æ¥åŸã«åçããŠããããŸãããã㯠12 æé以å ã«å¿çããããšãæå³ããããžãã¹ ãµããŒã ãã©ã³ã«ã¯ 24 æé幎äžç¡äŒã®ãµããŒãããããããæåãæã¿ãŸããããçµæã¯ãã€ãã©ããã§ããã
ç§ã®ãã±ããã¯éææ¥ããæææ¥ãŸã§æªå²ãåœãŠã®ãŸãŸã§ããããã®åŸãããäžåºŠæçŽãæžãããšã«ãããã£ããå¿çãªãã·ã§ã³ãéžæããŸããã ãã°ããåŸ ã£ãåŸããã«ã·ã£ãã»ããããç§ã«äŒãããã«æåãããããããå§ãŸããŸãã...
ç§ãã¡ã¯ãªã³ã©ã€ã³ã§ 3 æéé£ç¶ã§ãããã°ãããã°ã転éããåé¡ããšãã¥ã¬ãŒãããããã« AWS ã©ãã«åãã¯ã©ã¹ã¿ãŒããããã€ããç§åŽã§ã¯ã©ã¹ã¿ãŒãåäœæãããªã©ããŸãããç§ãã¡ãå°éããå¯äžã®ããšã¯ããã°ãèŠããšãAWS ã®å éšãã¡ã€ã³åããªãŸã«ã§æ©èœããŠããªãããšã¯æããã§ãããããã«ã€ããŠã¯äžã§æžããŸããããHarshad Madhav ãã転éãäœæããããã«é ŒãŸããŸãããç§ãã¡ã¯ã«ã¹ã¿ã DNS ã䜿çšããŠããããããããåé¡ã«ãªãå¯èœæ§ããããšèšãããŠããŸãã
茞é
ap-xxx.compute.internal -> 10.x.x.2 (VPC CIDRBlock)
amazonaws.com -> 10.x.x.2 (VPC CIDRBlock)
Harshad Madhav ã¯ããã確èªããããã«è¿ä¿¡ããããŸãããã¯ãã§ããããããã解決çã¯ãŸã£ãã圹ã«ç«ã¡ãŸããã§ããã
ãã®åŸãããã« 2 人ã®ãšã³ãžãã¢ãšã³ãã¥ãã±ãŒã·ã§ã³ããããXNUMX 人ã¯è€éãªã±ãŒã¹ãæããŠãã£ããããéåºããŸãããXNUMX 人ç®ã¯åã³ãããã°ããã°ã®éä¿¡ãäž¡åŽã§ã®ã¯ã©ã¹ã¿ã®äœæã®å šãµã€ã¯ã«ã«äžæ¥ãè²»ãããŸãããæåŸã«åœŒã¯ãããŸããããŸãããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸããããã«ããŸããç§ã¯å ¬åŒããã¥ã¡ã³ãã§ãã¹ãŠã段éçã«å®è¡ããŸãããããŠããªããããªããæåããã§ãããããšèšããŸããã
ç§ã¯åœŒã«ãåé¡ãã©ãã«ããã®ãããããªãå Žåã¯ããã®å Žãé¢ããŠç§ã®ãã±ãããä»ã®äººã«å²ãåœãŠãããã«äžå¯§ã«é Œã¿ãŸããã
決å
3 æ¥ç®ã«ãæ°ãããšã³ãžãã¢ã® Arun B. ãç§ã«å²ãåœãŠãããŸããã圌ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã®æåããããããåã® 1 人ã®ãšã³ãžãã¢ã§ã¯ãªãããšãããã«ããããŸããã 圌ã¯å±¥æŽå šäœãèªã¿ãããã«èªåã® github ã«ãã psXNUMX äžã®ç¬èªã®ã¹ã¯ãªããã䜿çšããŠãã°ãåéããããã«äŸé ŒããŸããã ãã®åŸãã¯ã©ã¹ã¿ãŒã®äœæãã³ãã³ãçµæã®åºåããã°ã®åéãç¹°ãè¿ãè¡ãããŸããããArun B. ã¯ç§ã«å°ãããã質åããå€æãããšãæ£ããæ¹åã«é²ãã§ããŸãã
vpc ã³ã³ãããŒã©ãŒã§ -stderrthreshold=debug ãæå¹ã«ãã段éã«éããã®ã¯ãã€ã§ãã? 次ã«äœãèµ·ãã£ãã®ã§ãããã? ãã¡ããæ©èœããŸãã) ãããã¯åã«ãã®ãªãã·ã§ã³ã§ã¯èµ·åããã-stderrthreshold=info ã®ã¿ãæ©èœããŸãã
ç§ãã¡ã¯ããã§çµäºããArun B. ã¯ãåããšã©ãŒãçºçããããã«ç§ã®æé ãåçŸããããšãããšèšããŸããã ç¿æ¥ãArun B ããè¿ä¿¡ãåãåããŸããã圌ã¯ãã®ã±ãŒã¹ãæŸæ£ããŸããã§ããããvpc ã³ã³ãããŒã©ãŒã®ã¬ãã¥ãŒ ã³ãŒããåãäžãããããã©ãã«ããã®ãããªãæ©èœããªãã®ããèŠã€ããŸããã
ãããã£ãŠãVPC ã§ã¡ã€ã³ ã«ãŒã ããŒãã«ã䜿çšããå Žåãããã©ã«ãã§ã¯ãvpc ã³ã³ãããŒã©ãŒã«å¿
èŠãªå¿
èŠãªãµãããããšã®é¢é£ä»ãããããŸããããããªã㯠ãµããããã®å Žåãã«ã¹ã¿ã ã«ãŒã ããŒãã«ããããŸããããã«ã¯é¢é£æ§ããããŸãã
ã¡ã€ã³ ã«ãŒã ããŒãã«ãšå¿ èŠãªãµããããã®é¢é£ä»ããæåã§è¿œå ããããŒãã°ã«ãŒããåäœæããããšã§ããã¹ãŠãå®å šã«æ©èœããŸãã
Arun B. ããã®ãã°ã EKS éçºè
ã«æ¬åœã«å ±åãããã¹ãŠããã®ãŸãŸåäœããæ°ããããŒãžã§ã³ã® vpc-controller ãç»å Žããããšãé¡ã£ãŠããŸãã çŸåšã®ææ°ããŒãžã§ã³ã¯: 602401143452.dkr.ecr.ap-southeast-1.amazonaws.com/eks/vpc-resource-controller:0.2.1
ã«ã¯ãã®åé¡ããããŸãã
æåŸãŸã§èªãã§ããã ããçãããå®è£
åã«æ¬çªç°å¢ã§äœ¿çšãããã¹ãŠã®ãã®ããã¹ãããŠãã ããã
åºæïŒ habr.com