Kubernetes ã¯ã©ã¹ã¿ãŒäžã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ ã¹ãã¬ãŒãžãæ§æããã«ã¯ãããã€ãã®æ¹æ³ããããŸãã ãããã®äžã«ã¯ããã§ã«æ代é ãã«ãªã£ãŠãããã®ãããã°ãããæè¿ã«ç»å Žãããã®ããããŸãã ãã®èšäºã§ã¯ãææ°ã®ãªãã·ã§ã³ã§ããã³ã³ãã ã¹ãã¬ãŒãž ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããæ¥ç¶ãå«ããã¹ãã¬ãŒãž ã·ã¹ãã ãæ¥ç¶ããããã® XNUMX ã€ã®ãªãã·ã§ã³ã®æŠå¿µã«ã€ããŠèª¬æããŸãã
æ¹æ³ 1: ããã ãããã§ã¹ã㧠PV ãæå®ãã
Kubernetes ã¯ã©ã¹ã¿ãŒå ã®ããããèšè¿°ããäžè¬çãªãããã§ã¹ãã¯æ¬¡ã®ãšããã§ãã
ã©ã®ããªã¥ãŒã ãã©ãã«æ¥ç¶ãããŠãããã説æãããããã§ã¹ãã®éšåãè²ã§åŒ·èª¿è¡šç€ºãããŸãã
ã»ã¯ã·ã§ã³å ã® ããªã¥ãŒã ããŠã³ã ããŠã³ã ãã€ã³ã (mountPath)ãã€ãŸãæ°žç¶ããªã¥ãŒã ãã³ã³ããå ã®ã©ã®ãã£ã¬ã¯ããªã«ããŠã³ããããããããã³ããªã¥ãŒã ã®ååã瀺ããŸãã
ã»ã¯ã·ã§ã³å ã® x ãããã§äœ¿çšãããŠãããã¹ãŠã®ããªã¥ãŒã ããªã¹ãããŸãã åããªã¥ãŒã ã®ååãã¿ã€ã (ãã®å Žå: awsElasticBlockStore)ãããã³æ¥ç¶ãã©ã¡ãŒã¿ãŒãæå®ããŸãã ãããã§ã¹ãã«ã©ã®ãã©ã¡ãŒã¿ããªã¹ãããããã¯ãããªã¥ãŒã ã®ã¿ã€ãã«ãã£ãŠç°ãªããŸãã
åãããªã¥ãŒã ãè€æ°ã®ããã ã³ã³ããã«åæã«ããŠã³ãã§ããŸãã ãã®ããã«ããŠãç°ãªãã¢ããªã±ãŒã·ã§ã³ ããã»ã¹ãåãããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸãã
ãã®æ¥ç¶æ¹æ³ã¯ãKubernetes ããŸã åæ段éã«ãã£ãåœåã«çºæãããŸããããçŸåšã§ã¯ãã®æ¹æ³ã¯æ代é ãã§ãã
ããã䜿çšããå Žåãããã€ãã®åé¡ããããŸãã
- ãã¹ãŠã®ããªã¥ãŒã ã¯æåã§äœæããå¿ èŠããããKubernetes ã§ã¯äœãäœæã§ããŸããã
- åããªã¥ãŒã ã®ã¢ã¯ã»ã¹ ãã©ã¡ãŒã¿ã¯äžæã§ãããããªã¥ãŒã ã䜿çšãããã¹ãŠã®ãããã®ãããã§ã¹ãã§æå®ããå¿ èŠããããŸãã
- ã¹ãã¬ãŒãž ã·ã¹ãã ãå€æŽããã«ã¯ïŒAWS ãã Google Cloud ãžã®ç§»è¡ãªã©ïŒããã¹ãŠã®ãããã§ã¹ãã§ããŠã³ããããããªã¥ãŒã ã®èšå®ãšã¿ã€ããå€æŽããå¿ èŠããããŸãã
ããã¯ãã¹ãŠéåžžã«äžäŸ¿ã§ãããããå®éã«ã¯ããã®ã¡ãœããã¯äžéšã®ç¹æ®ãªã¿ã€ãã®ããªã¥ãŒã (configMapãsecretãemptyDirãhostPath) ã®ã¿ãæ¥ç¶ããããã«äœ¿çšãããŸãã
-
configMap ãš Secret ã¯ãã³ã³ãããŒå ã® Kubernetes ãããã§ã¹ãããã®ãã¡ã€ã«ãå«ãããªã¥ãŒã ãäœæã§ããããã«ãããµãŒãã¹ ããªã¥ãŒã ã§ãã
-
emptyDir ã¯äžæããªã¥ãŒã ã§ããããããã®åç¶æéäžã®ã¿äœæãããŸãã ãã¹ããäžæããŒã¿ã®ä¿åã«äŸ¿å©ã§ãã ããããåé€ããããšãemptyDir ããªã¥ãŒã ãåé€ããããã¹ãŠã®ããŒã¿ã倱ãããŸãã
-
hostPath - ã¢ããªã±ãŒã·ã§ã³ãå«ãã³ã³ãããŒå ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠãããµãŒããŒã®ããŒã«ã« ãã£ã¹ã¯äžã®ä»»æã®ãã£ã¬ã¯ã㪠(/etc/kubernetes ãªã©) ãããŠã³ãã§ããŸãã ããã¯å®å šã§ã¯ãªãæ©èœã§ãããããéåžžãã»ãã¥ãªã㣠ããªã·ãŒã§ã¯ãã®ã¿ã€ãã®ããªã¥ãŒã ã®äœ¿çšãçŠæ¢ããŠããŸãã ããããªããšãæ»æè ã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããå ã« HTC Kubernetes ãã£ã¬ã¯ããªãããŠã³ããããã¹ãŠã®ã¯ã©ã¹ã¿ãŒèšŒææžãçãããšãã§ããŸãã éåžžãhostPath ããªã¥ãŒã ã¯ãkube-system åå空éã§å®è¡ãããã·ã¹ãã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠã®ã¿äœ¿çšãèš±å¯ãããŸãã
æ¹æ³ 2. SC/PVC/PV ããŒã¹ãžã®æ¥ç¶
代æ¿ã®æ¥ç¶æ¹æ³ã¯ãStorage ã¯ã©ã¹ãPersistent VolumeClaimãPersistent Volume ã®æŠå¿µã§ãã
ã¹ãã¬ãŒãžã¯ã©ã¹ æ¥ç¶ãã©ã¡ãŒã¿ãããŒã¿ ã¹ãã¬ãŒãž ã·ã¹ãã ã«ä¿åããŸãã
PersistentVolumeClaim ã¢ããªã±ãŒã·ã§ã³ã«å¿
èŠãªèŠä»¶ã«ã€ããŠèª¬æããŸãã
æç¶ããªã¥ãŒã ã¢ã¯ã»ã¹ãã©ã¡ãŒã¿ãšããªã¥ãŒã ã¹ããŒã¿ã¹ãä¿åããŸãã
ã¢ã€ãã¢ã®æ¬è³ª: ããã ãããã§ã¹ãã§ã¯ãPersistentVolumeClaim ã¿ã€ãã®ããªã¥ãŒã ã瀺ããclaimName ãã©ã¡ãŒã¿ãŒã§ãã®ãšã³ãã£ãã£ã®ååã瀺ããŸãã
PersistentVolumeClaim ãããã§ã¹ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãå¿ èŠãšããããŒã¿éã®èŠä»¶ãèšè¿°ãããŠããŸãã å«ãïŒ
- ãã£ã¹ã¯ãµã€ãºã
- ã¢ã¯ã»ã¹æ¹æ³: ReadWriteOnce ãŸã㯠ReadWriteMany;
- ã¹ãã¬ãŒãž ã¯ã©ã¹ãžã®ãªã³ã¯ - ããªã¥ãŒã ãäœæããããŒã¿ ã¹ãã¬ãŒãž ã·ã¹ãã ã
ã¹ãã¬ãŒãž ã¯ã©ã¹ ãããã§ã¹ãã«ã¯ãã¹ãã¬ãŒãž ã·ã¹ãã ãžã®æ¥ç¶ã®ã¿ã€ããšãã©ã¡ãŒã¿ãæ ŒçŽãããŸãã ãã¥ãŒãã¬ããã¯ãããŒãã«ããªã¥ãŒã ãããŠã³ãããããã«ããããå¿ èŠãšããŸãã
PersistentVolume ãããã§ã¹ãã¯ãç¹å®ã®ããªã¥ãŒã ã®ã¹ãã¬ãŒãž ã¯ã©ã¹ãšã¢ã¯ã»ã¹ ãã©ã¡ãŒã¿ãŒ (ããªã¥ãŒã IDããã¹ãªã©) ã瀺ããŸãã
PVC ãäœæãããšããKubernetes ã¯ããªã¥ãŒã ã®ãµã€ãºãšå¿ èŠãªã¹ãã¬ãŒãž ã¯ã©ã¹ã確èªãã空ãã® Persistent Volume ãéžæããŸãã
ãã®ãã㪠PV ãå©çšã§ããªãå ŽåãKubernetes ã¯ç¹å¥ãªããã°ã©ã ã§ããããããžã§ã㌠(ãã®ååã¯ã¹ãã¬ãŒãž ã¯ã©ã¹ã«ç€ºãããŠããŸã) ãèµ·åã§ããŸãã ãã®ããã°ã©ã ã¯ã¹ãã¬ãŒãž ã·ã¹ãã ã«æ¥ç¶ããå¿ èŠãªãµã€ãºã®ããªã¥ãŒã ãäœæããèå¥åãåä¿¡ããŠââãPersistent VolumeClaim ã«é¢é£ä»ãããã Kubernetes ã¯ã©ã¹ã¿ãŒå ã« PersistentVolume ãããã§ã¹ããäœæããŸãã
ãã®å€æ°ã®æœè±¡åã«ãããã¢ããªã±ãŒã·ã§ã³ãã©ã®ã¹ãã¬ãŒãž ã·ã¹ãã ã§åäœããŠãããã«é¢ããæ å ±ããã¢ããªã±ãŒã·ã§ã³ ãããã§ã¹ã ã¬ãã«ãã管çã¬ãã«ãŸã§åé€ã§ããŸãã
ããŒã¿ ã¹ãã¬ãŒãž ã·ã¹ãã ã«æ¥ç¶ããããã®ãã¹ãŠã®ãã©ã¡ãŒã¿ã¯ãã¯ã©ã¹ã¿ç®¡çè ãæ åœããã¹ãã¬ãŒãž ã¯ã©ã¹ã«ãããŸãã AWS ãã Google Cloud ã«ç§»è¡ãããšãã«å¿ èŠãªã®ã¯ãã¢ããªã±ãŒã·ã§ã³ ãããã§ã¹ãã§ã¹ãã¬ãŒãž ã¯ã©ã¹ã®ååã PVC ã«å€æŽããããšã ãã§ãã ããŒã¿ ã¹ãã¬ãŒãžçšã®æ°žç¶ããªã¥ãŒã ã¯ãProvisioner ããã°ã©ã ã䜿çšããŠã¯ã©ã¹ã¿ãŒå ã«èªåçã«äœæãããŸãã
æ¹æ³ 3: ã³ã³ãã ã¹ãã¬ãŒãž ã€ã³ã¿ãŒãã§ã€ã¹
ããŸããŸãªã¹ãã¬ãŒãž ã·ã¹ãã ãšå¯Ÿè©±ãããã¹ãŠã®ã³ãŒãã¯ãKubernetes ã³ã¢ã®äžéšã§ãã ãã°ä¿®æ£ãŸãã¯æ°æ©èœã®ãªãªãŒã¹ã¯æ°ãããªãªãŒã¹ã«é¢é£ä»ããããŠããããããµããŒããããŠãããã¹ãŠã®ããŒãžã§ã³ã® Kubernetes ã«å¯ŸããŠã³ãŒããå€æŽããå¿ èŠããããŸãã ããããã¹ãŠãä¿å®ããããæ°ããæ©èœãè¿œå ãããããã®ã¯å°é£ã§ãã
ãã®åé¡ã解決ããããã«ãCloud FoundryãKubernetesãMesosãããã³ Docker ã®éçºè ã¯ãã³ã³ãã ã¹ãã¬ãŒãž ã€ã³ã¿ãŒãã§ã€ã¹ (CSI) ãäœæããŸãããããã¯ãã³ã³ãã管çã·ã¹ãã ãšç¹å®ã®ã·ã¹ãã ã§åäœããç¹å¥ãªãã©ã€ã㌠(CSI ãã©ã€ããŒ) ã®çžäºäœçšãèšè¿°ããã·ã³ãã«ãªçµ±åã€ã³ã¿ãŒãã§ã€ã¹ã§ããã¹ãã¬ãŒãžã·ã¹ãã ã ã¹ãã¬ãŒãž ã·ã¹ãã ãšå¯Ÿè©±ããããã®ãã¹ãŠã®ã³ãŒãã¯ãKubernetes ã³ã¢ããå¥ã®ã·ã¹ãã ã«ç§»åãããŸããã
éåžžãCSI ãã©ã€ããŒã¯ãããŒã ãã©ã°ã€ã³ãšã³ã³ãããŒã©ãŒ ãã©ã°ã€ã³ã® XNUMX ã€ã®ã³ã³ããŒãã³ãã§æ§æãããŸãã
ããŒã ãã©ã°ã€ã³ã¯åããŒãäžã§å®è¡ãããããªã¥ãŒã ã®ããŠã³ããšããªã¥ãŒã äžã§ã®æäœã®å®è¡ãæ åœããŸãã ã³ã³ãããŒã©ãŒ ãã©ã°ã€ã³ã¯ã¹ãã¬ãŒãž ã·ã¹ãã ãšå¯Ÿè©±ããããªã¥ãŒã ã®äœæãŸãã¯åé€ãã¢ã¯ã»ã¹æš©ã®å²ãåœãŠãªã©ãè¡ããŸãã
çŸæç¹ã§ã¯ãå€ããã©ã€ããŒã¯ Kubernetes ã«ãŒãã«ã«æ®ã£ãŠããŸããã䜿çšã¯æšå¥šãããªããªãã䜿çšããã·ã¹ãã å°çšã® CSI ãã©ã€ããŒãã€ã³ã¹ããŒã«ããããšããå§ãããŸãã
ãã®é©æ°æ§ã¯ãStorage ã¯ã©ã¹ã䜿çšããŠããŒã¿ ã¹ãã¬ãŒãžãèšå®ããããšã«ãã§ã«æ £ããŠãã人ãæãããããããããŸããããå®éã«ã¯ãæãããããšã¯äœãèµ·ãã£ãŠããŸããã ããã°ã©ãã«ãšã£ãŠã¯ãå®éã«ã¯äœãå€ãããŸããããããŸã§ã¯ãStorage ã¯ã©ã¹ãšããååã§ã®ã¿äœæ¥ããŠãããä»åŸãããããã§ãããã 管çè åãã«ãhelm chart ã®ã€ã³ã¹ããŒã«ãè¿œå ãããèšå®ã®æ§é ãå€æŽãããŸããã 以åã«èšå®ã Storage ã¯ã©ã¹ã«çŽæ¥å ¥åããŠããå Žåã¯ããŸã Helm ãã£ãŒãã§èšå®ãã次㫠Storage ã¯ã©ã¹ã§èšå®ããå¿ èŠããããŸãã 調ã¹ãŠã¿ããšäœãæªãããšã¯èµ·ããŠããŸããã§ããã
CSI ãã©ã€ããŒã䜿çšãã Ceph ã¹ãã¬ãŒãž ã·ã¹ãã ã®æ¥ç¶ã«åãæ¿ããããšã§åŸãããå©ç¹ãäŸãšããŠèŠãŠã¿ãŸãããã
Ceph ã䜿çšããå ŽåãCSI ãã©ã°ã€ã³ã¯ãã¹ãã¬ãŒãž ã·ã¹ãã ãæäœããããã®çµã¿èŸŒã¿ãã©ã€ããŒãããå€ãã®ãªãã·ã§ã³ãæäŸããŸãã
- åçãã£ã¹ã¯ã®äœæã éåžžãRBD ãã£ã¹ã¯ã¯ RWO ã¢ãŒãã§ã®ã¿äœ¿çšãããŸãããCSI for Ceph ã§ã¯ RWX ã¢ãŒãã§ã®äœ¿çšãå¯èœã§ãã ç°ãªãããŒãäžã®è€æ°ã®ãããã¯ãåã RDB ãã£ã¹ã¯ãããŒãã«ããŠã³ããããããã䞊è¡ããŠæäœã§ããŸãã å ¬å¹³ãæãããã«ããã¹ãŠãããã»ã©æããããã§ã¯ãããŸããããã®ãã£ã¹ã¯ã¯ããã㯠ããã€ã¹ãšããŠã®ã¿æ¥ç¶ã§ããŸããã€ãŸãããã«ã ã¢ã¯ã»ã¹ ã¢ãŒãã§åäœããããã«ã¢ããªã±ãŒã·ã§ã³ã調æŽããå¿ èŠããããŸãã
- ã¹ãããã·ã§ãããäœæããŠããŸãã Kubernetes ã¯ã©ã¹ã¿ãŒã§ã¯ãã¹ãããã·ã§ãããäœæããèŠä»¶ãå«ããããã§ã¹ããäœæã§ããŸãã CSI ãã©ã°ã€ã³ã¯ãããèªèãããã£ã¹ã¯ããã¹ãããã·ã§ãããååŸããŸãã ããã«åºã¥ããŠãPersistentVolume ã®ããã¯ã¢ãããŸãã¯ã³ããŒãäœæã§ããŸãã
- ãã£ã¹ã¯ãµã€ãºã®å¢å Kubernetes ã¯ã©ã¹ã¿ãŒå ã®ã¹ãã¬ãŒãžãš Persistent Volume äžã§ã
- å²ãåœãŠã Kubernetes ã«çµã¿èŸŒãŸããŠãã CephFS ãã©ã€ããŒã¯ã¯ã©ãŒã¿ããµããŒãããŠããŸããããææ°ã® Ceph Nautilus ãåããæ°ãã CSI ãã©ã°ã€ã³ã䜿çšãããšãCephFS ããŒãã£ã·ã§ã³ã§ã¯ã©ãŒã¿ãæå¹ã«ããããšãã§ããŸãã
- ã¡ããªã¯ã¹ã CSI ãã©ã°ã€ã³ã¯ãã©ã®ããªã¥ãŒã ãæ¥ç¶ãããŠããããã©ã®ãããªéä¿¡ãè¡ãããŠããããªã©ã«é¢ããããŸããŸãªã¡ããªã¯ã¹ã Prometheus ã«æäŸã§ããŸãã
- ããããžãŒãèªèããŸãã ã¯ã©ã¹ã¿ãŒãå°ççã«åæ£ãããæ¹æ³ããããã§ã¹ãã§æå®ããã¢ã ã¹ãã«ãã ã«ããã¹ãã¬ãŒãž ã·ã¹ãã ããã³ãã³ã§å®è¡ãããŠãããããã«æ¥ç¶ããããšãåé¿ã§ããŸãã
CSI çµç±ã§ Ceph ã Kubernetes ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããæ¹æ³ã«ã€ããŠã¯ããåç
§ããŠãã ããã
èšäºã®èè : Sergey BondarevãSouthbridge ã®çŸåœ¹ã¢ãŒããã¯ããèªå® Kubernetes 管çè ãkubespray éçºè ã® XNUMX 人ã
宣äŒã®ããã§ã¯ãªããå©çã®ããã®å°ã㪠Post Scriptum...
PS Sergey Bondarev ã XNUMX ã€ã®éäžã³ãŒã¹ãæå°: æŽæ°
åºæïŒ habr.com