æè¿ã«åŒãç¶ã
å°å ¥
ããã¯ãªãã§ããïŒ
Yandex.Cloud çšã® CCM ãéçºããåæ©ã¯ããã§ã«èª¬æãããã®ãšå®å
šã«äžèŽããŸãã
CCMãšã¯äžäœäœãªã®ã§ããããïŒ
éåžžãç§ãã¡ã¯ã¯ã©ã¹ã¿ãŒã®ããã«åšå²ã®ç°å¢ãæºåããŸãã å€ãã - ããšãã°ãTerraform ã䜿çšããŸãã ããããå Žåã«ãã£ãŠã¯ãåšå²ã®ã¯ã©ãŠãç°å¢ã管çããå¿
èŠãããå ŽåããããŸãã ã¯ã©ã¹ã¿ãŒããã ãã®å¯èœæ§ãæäŸããããããå®è£
ãããŸã
å ·äœçã«ã¯ãCloud Controller Manager ã¯ã次㮠XNUMX ã€ã®äž»èŠãªã¿ã€ãã®å¯Ÿè©±ãæäŸããŸãã
- ã€ã³ã¹ã¿ã³ã¹ â Kubernetes ã®ããŒã ãªããžã§ã¯ãéã® 1:1 é¢ä¿ãå®è£
ããŸã (
Node
) ãšã¯ã©ãŠããããã€ããŒã®ä»®æ³ãã·ã³ã ãã®ããã«ãç§ãã¡ã¯æ¬¡ã®ããšãè¡ããŸãã- ãã£ãŒã«ãã«èšå
¥ããŠãã ãã
spec.providerID
ãªããžã§ã¯ãã®äžã§Node
ã ããšãã°ãOpenStack CCM ã®å Žåããã®ãã£ãŒã«ãã®åœ¢åŒã¯æ¬¡ã®ãšããã§ããopenstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0
ã ã¯ã©ãŠããããã€ããŒã®ååãšããªããžã§ã¯ãã®ãµãŒã㌠(OpenStack ã®ä»®æ³ãã·ã³) ã®äžæã® UUID ã確èªã§ããŸãã - è£äœ
nodeInfo
ãªããžã§ã¯ãã®äžã§Node
ä»®æ³ãã·ã³ã«é¢ããæ å ±ã ããšãã°ãAWS ã§ã¯ã€ã³ã¹ã¿ã³ã¹ ã¿ã€ããæå®ããŸãã - ã¯ã©ãŠãå
ã®ä»®æ³ãã·ã³ã®ååšã確èªããŸãã ããšãã°ããªããžã§ã¯ãã®å Žåã
Node
ç¶æ ã«ãªã£ãNotReady
ãä»®æ³ãã·ã³ãã¯ã©ãŠããããã€ããŒã«ååšãããã©ããã確èªããã«ã¯ã次ã®ããã«ããŸããproviderID
ã ããã«ååšããªãå Žåã¯ããªããžã§ã¯ããåé€ããŸãNode
ãããã§ãªããã°ãã¯ã©ã¹ã¿ãŒå ã«æ°žä¹ ã«æ®ããŸãã
- ãã£ãŒã«ãã«èšå
¥ããŠãã ãã
- ãŸãŒã³ â ãªããžã§ã¯ãã®é害ãã¡ã€ã³ãèšå®ããŸã
Node
ãã¹ã±ãžã¥ãŒã©ãã¯ã©ãŠã ãããã€ããŒã®ãªãŒãžã§ã³ãšãŸãŒã³ã«åŸã£ãŠãããã®ããŒããéžæã§ããããã«ããŸãã - ããŒããã©ã³ãµãŒ â ãªããžã§ã¯ããäœæãããšã
Service
ã¿ã€ãä»ãLoadBalancer
å€éšããã®ãã©ãã£ãã¯ãã¯ã©ã¹ã¿ãŒ ããŒãã«è»¢éããäžçš®ã®ãã©ã³ãµãŒãäœæããŸãã ããšãã°ãYandex.Cloud ã§ã¯æ¬¡ã®ããã«äœ¿çšã§ããŸããNetworkLoadBalancer
ОTargetGroup
ãããã®ç®çã®ãã; - ã«ãŒã â ããŒãéã«ãããã¯ãŒã¯ãæ§ç¯ããŸãã Kubernetes ã®èŠä»¶ã«åŸã£ãŠãåãããã¯ç¬èªã® IP ã¢ãã¬ã¹ãæã¡ãä»ã®ãããã«å°éã§ããå¿ èŠããããŸãã ãããã®ç®çã®ããã«ããªãŒããŒã¬ã€ ãããã¯ãŒã¯ (VXLANãGENEVE) ã䜿çšããããã¯ã©ãŠã ãããã€ããŒã®ä»®æ³ãããã¯ãŒã¯ã«ã«ãŒãã£ã³ã° ããŒãã«ãçŽæ¥èšå®ã§ããŸãã
- é³é â PVC ãš SC ã䜿çšã㊠PV ãåçã«é åºä»ãã§ããŸãã åœåããã®æ©èœã¯ CCM ã®äžéšã§ããããéåžžã«è€éãªãããå¥ã®ãããžã§ã¯ãã§ãã Container Storage Interface (CSI) ã«ç§»åãããŸããã ç§ãã¡ã¯CSIã«ã€ããŠäœåºŠã話ããŠããŸãã
пОÑалО ãããŠããã§ã«è¿°ã¹ãããã«ããªãªãŒã¹ CSIãã©ã€ããŒã
以åã¯ãã¯ã©ãŠããšå¯Ÿè©±ãããã¹ãŠã®ã³ãŒãã¯ã次ã®å Žæã«ãã Kubernetes ãããžã§ã¯ãã®ã¡ã€ã³ Git ãªããžããªã«ãããŸããã k8s.io/kubernetes/pkg/cloudprovider/providers
ãããã倧èŠæš¡ãªã³ãŒãããŒã¹ãæ±ãã®ã¯äžäŸ¿ã§ããããããããæŸæ£ããããšã«ããŸããã å€ãå®è£
ã¯ãã¹ãŠæ¬¡ã®å Žæã«ç§»åãããŸããã
CSI ãšåæ§ã«ãå€ãã®å€§èŠæš¡ã¯ã©ãŠã ãããã€ããŒã¯ãã§ã« Kubernetes äžã®ã¯ã©ãŠãã掻çšããããã« CCM ãèšèšããŠããŸãã ãµãã©ã€ã€ãŒã CCM ãæã£ãŠããªãããå¿ èŠãªæ©èœããã¹ãŠ API çµç±ã§å©çšã§ããå Žåã¯ãèªå㧠CCM ãå®è£ ã§ããŸãã
ç¬èªã® CCM å®è£
ãäœæããã«ã¯ã以äžãå®è£
ããã ãã§ååã§ã
Ð
å ·çŸå
ã©ããã£ãŠãããªããšã«ãªã£ããã ãã
ãšéçºïŒãšãããã䜿çšïŒãå§ããŸããã
ãã ãããã®å®è£ ã§ã¯æ¬¡ã®ãã®ãæ¬ ããŠããŸããã
- JWT IAM ããŒã¯ã³ã«ããèªèšŒã
- ãµãŒãã¹ã³ã³ãããŒã©ãŒã®ãµããŒãã
èè ã«åæãã (ããªã·ã³) Telegram ã§ã¯ãyandex-cloud-controller-manager ããã©ãŒã¯ããäžè¶³ããŠããæ©èœãè¿œå ããŸããã
äž»ãªæ©èœ
çŸåšãCCM ã¯æ¬¡ã®ã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããŠããŸãã
- ã€ã³ã¹ã¿ã³ã¹;
- ãŸãŒã³;
- ããŒããã©ã³ãµãŒ.
å°æ¥ãYandex.Cloud ãé«åºŠãª VPC æ©èœãšé£æºãå§ãããšãã€ã³ã¿ãŒãã§ã€ã¹ãè¿œå ãããäºå®ã§ãã ã«ãŒã.
äž»ãªèª²é¡ãšããŠã® LoadBalancer
æåã«ãä»ã® CCM å®è£
ãšåæ§ã«ã次ã®ãã¢ãäœæããããšããŸããã LoadBalancer
О TargetGroup
ããããã« Service
ã¿ã€ãä»ã LoadBalancer
ã ãã ããYandex.Cloud 㯠XNUMX ã€ã®èå³æ·±ãå¶éãçºèŠããŸããã TargetGroups
亀差ããŠãã Targets
ïŒã㢠SubnetID
- IpAddress
).
ãããã£ãŠãäœæããã CCM å
ã§ã³ã³ãããŒã©ãŒãèµ·åããããªããžã§ã¯ããå€æŽããããšã³ã³ãããŒã©ãŒãèµ·åãããŸãã Node
åä»®æ³ãã·ã³äžã®ãã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ã«é¢ããæ
å ±ãåéããç¹å®ã®ä»®æ³ãã·ã³ã«å±ãããã®ã«åŸã£ãŠã°ã«ãŒãåããŸãã NetworkID
ãã«ãã£ãŠäœæãããŸã TargetGroup
Ма NetworkID
ãé¢é£æ§ãç£èŠããŸãã ç¶ããŠããªããžã§ã¯ããäœæãããšãã«ã Service
ã¿ã€ãä»ã LoadBalanacer
äºåã«äœæãããã®ãæ·»ä»ããã ãã§ã TargetGroup
æ°ããã« NetworkLoadBalanacer
'ååã
䜿çšãéå§ããã«ã¯ã©ãããã°ããã§ãã?
CCM ã¯ãKubernetes ããŒãžã§ã³ 1.15 以éããµããŒãããŸãã ã¯ã©ã¹ã¿ãŒå
ã§æ©èœããã«ã¯ããã©ã°ãå¿
èŠã§ãã --cloud-provider=external
ã«èšå®ãããŸãã true
kube-apiserverãkube-controller-managerãkube-schedulerãããã³ãã¹ãŠã® kubelet çšã
ã€ã³ã¹ããŒã«èªäœã«å¿
èŠãªãã¹ãŠã®æé ã«ã€ããŠã¯ãã
CCM ã䜿çšããã«ã¯ã以äžãå¿ èŠã§ãã
-
æå®ãã ãããã§ã¹ãå ã®ãã£ã¬ã¯ããªèå¥å (folder-id
ïŒYandex.Cloud; - Yandex.Cloud API ãšå¯Ÿè©±ããããã®ãµãŒãã¹ ã¢ã«ãŠã³ãã ãããã§ã¹ãã§ã¯
Secret
å¿ èŠæ¿èªãããããŒã転éãã ãµãŒãã¹ã¢ã«ãŠã³ãããã ããã¥ã¡ã³ãã§ã¯èª¬æããã ããµãŒãã¹ ã¢ã«ãŠã³ããäœæããŠããŒãååŸããæ¹æ³ã
ãã£ãŒãããã¯ããåŸ
ã¡ããŠãããŸãã
çµæ
éå» 20 é±éã«ããããå®è£ ããã CCM ã 8 ã€ã® Kubernetes ã¯ã©ã¹ã¿ãŒã§äœ¿çšããŠããŸããããæ¥æã«ã¯ãã®æ°ã XNUMX ã«æ¡å€§ããäºå®ã§ãã çŸåšã倧èŠæš¡ãã€éèŠãª KXNUMX ã€ã³ã¹ããŒã«ã« CCM ã䜿çšããããšã¯ãå§ãããŸããã
CSI ã®å Žåãšåæ§ãYandex éçºè ããã®ãããžã§ã¯ãã®éçºãšãµããŒããåŒãåããŠãããã°å¹žãã§ããç§ãã¡ã«ãšã£ãŠããé¢é£æ§ã®é«ãã¿ã¹ã¯ãåŠçããããã«ã圌ãã®èŠæ±ã«å¿ããŠãªããžããªã転éããæºåãã§ããŠããŸãã
PS
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes 㧠Yandex.Cloud çšã® CSI ãã©ã€ããŒãéçºããçµéš "; - «
Kubernetes ã¯ã©ã¹ã¿ãŒãæºåããã®ã¯ç°¡åã§äŸ¿å©ã§ãã? ã¢ããªã³ãªãã¬ãŒã¿ãŒã®çºè¡š "; - «
Kubernetes ã®æ¡åŒµãšè£è¶³ (æŠèŠãšãã㪠ã¬ããŒã) 'ã
åºæïŒ habr.com