ÕªÒª£ºOpenStack»ù½ð»á³ýÁËÒª½ÓÊÜContainerºÍGoogle KubernetesµÈÈÝÆ÷¹ÜÀíÆ½Ì¨£¬»¹»ý¼«ÍƽøMagnum×ÓÏîÄ¿ÔÚ¼¼ÊõÉÏʵÏÖÈÝÆ÷ÓëOpenStackµÄÉî¶ÈÕûºÏ¡£±¾ÎÄÊÇMagnum Core MemberÁõ¹âÑÇÉî¶È½âÎöOpenStackÓëDockerµÄ¼¯³É¡£ ¡¾±àÕß°´¡¿Î¸绪OpenStack Summit£¬Container/Docker³ÉΪһ´ó¹Ø×¢½¹µã£¬OpenStack»ù½ð»á³ýÁ˱íʾ½«½ÓÊÜContainerºÍGoogle KubernetesµÈÈÝÆ÷¹ÜÀíÆ½Ì¨£¬»¹»ý¼«ÍƽøMagnum×ÓÏîÄ¿£¬ÔÚ¼¼ÊõÉÏʵÏÖÈÝÆ÷ÓëOpenStackµÄÉî¶ÈÕûºÏ¡£ÓÉ´Ë£¬ÈÝÆ÷È¡´úOpenStackµÄ˵·¨²»¹¥×ÔÆÆ¡£ÈÃÎÒÃÇÀ´¿´Ò»Æª¸ù¾ÝMagnumµÄCore MemberÁõ¹âÑÇÔÚOpen Cloud 2015Éϵķ¢ÑÔÕûÀíµÄÎÄÕ£¬ÏêϸÁ˽âOpenStackÓëDockerµÄ¼¯³ÉºÍ¸÷Ïà¹Ø×ÓÏîÄ¿µÄÓÅÁÓ¡£ÎÄÕÂÔÔØ¡¶³ÌÐòÔ±¡·µç×Ó¿¯£¬È«ÎÄÈçÏ£º
OpenStackºÍDocker
OpenStackºÍDockerÖ®¼äÊǺܺõĻ¥²¹¹ØÏµ¡£DockerµÄ³öÏÖÄÜÈÃIaaS²ãµÄ×ÊԴʹÓõøü¼Ó³ä·Ö£¬ÒòΪDockerÏà¶ÔÐéÄâ»úÀ´Ëµ¸üÇáÁ¿£¬¶Ô×ÊÔ´µÄÀûÓÃÂÊ»á¸ü¼Ó³ä·Ö¡£Èçͼ1Ëùʾ¡£
 ͼ1 OpenStackºÍDockerµÄ¹ØÏµ
´Óͼ1¿ÉÒÔ¿´³ö£¬DockerÖ÷ÒªÕë¶ÔPaasƽ̨£¬ÊÇÒÔÓ¦ÓÃΪÖÐÐÄ¡£OpenStackÖ÷ÒªÕë¶ÔIaasƽ̨£¬ÒÔ×ÊԴΪÖÐÐÄ£¬¿ÉÒÔΪÉϲãµÄPaaSƽ̨Ìṩ´æ´¢¡¢ÍøÂç¡¢¼ÆËãµÈ×ÊÔ´¡£
 ͼ2 OpenStackÏîÄ¿µÄ²ã¼¶¹ØÏµ
OpenStackÖа´ÕÕ²ãÀ´·Ö¼¶µÄһЩÏîÄ¿£¬Èçͼ2Ëùʾ¡£Í¼2´ÓÏÂÍùÉÏ¿´£º
µÚÒ»²ãÊÇ»ù´¡ÉèÊ©²ã£¬ÕâÒ»²ãÖ÷Òª°üº¬Nova¡¢GlanceºÍKeystone£¬Èç¹ûÎÒÃÇÒªÏëµÃµ½×î»ù±¾µÄ»ù´¡ÉèÊ©µÄ·þÎñ£¬±ØÐë°²×°²¿ÊðÕâÈý¸öÏîÄ¿¡£
µÚ¶þ²ãÊÇÀ©Õ¹»ù´¡ÉèÊ©²ã£¬ÕâÒ»²ã¿ÉÒÔÈÃÎÒÃǵõ½¸ü¶à¸ú»ù´¡ÉèÊ©Ïà¹ØµÄ¸ß¼¶·þÎñ£¬Ö÷Òª°üº¬Cinder¡¢Swift¡¢Neutron¡¢DesignateºÍIronicµÈ£¬ÆäÖÐCinderÌṩ¿é´æ´¢£¬SwiftÌṩ¶ÔÏó´æ´¢£¬NeutronÌá¹©ÍøÂç·þÎñ£¬DesignateÌṩDNS·þÎñ£¬IronicÌṩÂã»ú·þÎñ¡£
µÚÈý²ãÊÇ¿ÉÑ¡µÄÔöÇ¿ÌØÐÔ£¬°ïÓû§ÌṩһЩ¸ü¼Ó¸ß¼¶µÄ¹¦ÄÜ£¬Ö÷Òª°üº¬Ceilometer¡¢HorizonºÍBarbican£¬ÆäÖÐCeilometerÌṩ¼à¿Ø¡¢¼ÆÁ¿·þÎñ£¬HorizonÌṩÓû§½çÃæ£¬BarbicanÌá¹©ÃØÔ¿¹ÜÀí·þÎñ¡£
µÚËIJãÖ÷ÒªÊÇÏû·ÑÐÍ·þÎñ£¬ËùνµÄÏû·ÑÐÍ·þÎñ£¬Ö÷ÒªÊÇÖ¸µÚËIJãµÄ·þÎñ¶¼ÐèҪͨ¹ýʹÓÃǰÈý²ãµÄ·þÎñÀ´¹¤×÷¡£
µÚËIJãÖ÷ÒªÓÐHeat¡¢Magnum¡¢Sahara¡¢SolumºÍMuranoµÈ£¬ÆäÖÐHeatÖ÷ÒªÌṩorchestration·þÎñ£¬MagnumÖ÷ÒªÌṩÈÝÆ÷·þÎñ£¬SaharaÖ÷ÒªÌṩ´óÊý¾Ý·þÎñ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýSaharaºÜ·½±ãµØ²¿ÊðHadoop¡¢Spark¼¯Èº¡£SolumÖ÷ÒªÌṩӦÓÿª·¢µÄ·þÎñ£¬²¢ÇÒ¿ÉÒÔÌṩһЩÀàËÆÓÚCI/CDµÄ¹¦ÄÜ¡£MuarnoÖ÷ÒªÌṩӦÓÃĿ¼µÄ·þÎñ£¬ÀàËÆÓÚApp Store£¬¾ÍÊÇÓû§¿ÉÒÔ°ÑһЩ³£ÓõÄÓ¦Ó÷¢²¼³öÀ´¹©ÆäËûÓû§È¥Ê¹Óá£×îÓÒ±ßÊÇKolla£¬KollaµÄÖ÷Òª¹¦ÄÜÊÇÈÝÆ÷»¯ËùÓеÄOpenStack·þÎñ£¬±ãÓÚOpenStack°²×°²¿ÊðºÍÉý¼¶¡£
OpenStackÖкÍDockerÓйØÏµµÄÏîÄ¿Èçͼ3Ëùʾ¡£
 ͼ3 OpenStackÖкÍDockerÓйØÏµµÄÏîÄ¿
Ö÷Òª°üÀ¨Nova¡¢Heat¡¢Magnum¡¢Sahara¡¢Solum¡¢MuranoºÍKollaµÈ¡£ÓÉͼ3µÃÖª£¬ºÍDockerÏà¹ØµÄ´ó²¿·ÖÏîÄ¿¶¼ÔÚPaaSºÍSaaS²ã¡£ÒÔÏÂÖ÷Òª·Ö±ð˵Ã÷Nova¡¢Heat¡¢Magnum¡¢MuranoºÍKolla¡£
Nova Docker Driver
Èçͼ4Ëùʾ£¬Õâ¸öDriverÊÇOpenStackºÍDockerµÄµÚÒ»´Î¼¯³É£¬Ö÷ÒªÊǰÑDocker×÷ΪһÖÖеÄHypervisorÀ´´¦Àí£¬°ÑËùÓеÄContainerµ±³ÉVMÀ´´¦Àí¡£ÌṩÁËÒ»¸öDockerµÄNova Compute Driver£¬¼¯³ÉºÜ¼òµ¥£¬Í¨¹ýDocker REST APIÀ´²Ù×÷Container¡£
 ͼ4 Nova Compute Driver£¬OpenStackºÍDockerµÄµÚÒ»´Î¼¯³É
Õâ¸öDriverµÄÓŵãÊÇʵÏֱȽϼòµ¥£¬Ö»ÐèÒª°ÑNova ComputeÖеÄһЩ¶ÔÐéÄâ»ú²Ù×÷µÄ³£ÓýӿÚʵÏ־ͿÉÒÔ£¬ÏÖÔÚÖ÷ÒªÖ§³Ö´´½¨¡¢Æô¶¯¡¢Í£Ö¹¡¢Pause¡¢UnpauseµÈÐéÄâ»úµÄ»ù±¾²Ù×÷¡£ÒòΪNova Docker DriverÒ²ÊÇÒ»¸öNovaµÄCompute Driver£¬ËùÒÔËü¿ÉÒÔÏñÆäËûµÄCompute DriverÒ»ÑùʹÓÃOpenStackÖеÄËùÓзþÎñ£¬°üÀ¨Ê¹ÓÃNovaschedulerÀ´×ö×ÊÔ´µ÷¶È£¬ÓÃHeatÀ´×öÓ¦Óò¿Êð¡¢·þÎñ·¢ÏÖ¡¢À©ÈÝËõÈݵȣ¬Í¬Ê±Ò²¿ÉÒÔͨ¹ýºÍNeutron¼¯³ÉÀ´¹ÜÀíDockerÍøÂç¡£Ò²Ö§³Ö¶à×â»§£¬Îª²»Í¬µÄ×â»§ÉèÖò»Í¬µÄQuota£¬×ö×ÊÔ´¸ôÀë¡£
ËüµÄȱµãÒ²ºÜÃ÷ÏÔ£¬ÒòΪDockerºÍÐéÄâ»ú²î±ðҲͦ´óµÄ£¬Docker»¹ÓÐһЩºÜ¸ß¼¶µÄ¹¦ÄÜÊÇVMËùûÓеģ¬ÏñÈÝÆ÷¹ØÁª£¬¾ÍÊÇʹ²»Í¬ÈÝÆ÷Ö®¼äÄܹ»¹²ÏíһЩ»·¾³±äÁ¿£¬À´ÊµÏÖһЩ·þÎñ·¢ÏֵŦÄÜ£¬ÀýÈçK8SµÄPod¾ÍÊÇͨ¹ýÈÝÆ÷¹ØÁªÀ´ÊµÏֵġ£ÁíÍâÒ»¸öÊǶ˿ÚÓ³É䣬K8SµÄPodҲʹÓÃÁ˶˿ÚÓ³ÉäµÄ¹¦ÄÜ£¬¿ÉÒÔ°ÑÒ»¸öPodÖеÄËùÓÐContainerµÄPort¶¼Í¨¹ýNet Container Export³öÈ¥£¬±ãÓÚºÍÍâ½çͨÐÅ¡£»¹ÓÐÒ»¸öÊDz»Í¬ÍøÂçģʽµÄÅäÖã¬ÒòΪDockerµÄÍøÂçģʽºÜ¶à£¬°üÀ¨Hostģʽ¡¢ContainerģʽµÈµÈ£¬ÒÔÉϵÄËùÓй¦Äܶ¼ÊÇNova Docker Driver²»ÄÜʵÏֵġ£
Heat Docker Driver
ÒòΪNova Docker Driver²»ÄÜʹÓÃDockerµÄһЩ¸ß¼¶¹¦ÄÜ£¬ËùÒÔÉçÇø¾ÍÏëÁËÁíÒ»¸ö·½·¨£¬ºÍHeatÈ¥¼¯³É£¬Èçͼ5Ëùʾ¡£
 ͼ5 Heat Docker Driver
ÒòΪHeat²ÉÓõÄÒ²ÊDzå¼þģʽ£¬ËùÒÔ¾ÍÔÚHeatʵÏÖÁËÒ»¸öеÄResource£¬×¨ÃÅÀ´ºÍDocker¼¯³É¡£Õâ¸öHeat²å¼þÊÇÖ±½Óͨ¹ýREST APIºÍDocker½»»¥µÄ£¬²»ÐèÒªºÍNova¡¢CinderºÍNeutronµÈÀ´½øÐн»»¥¡£
Õâ¸öDriverµÄÒ»¸öÓŵãÊ×ÏÈÊÇËüÍêÈ«¼æÈÝDockerµÄAPI£¬ÒòΪÎÒÃÇ¿ÉÒÔÔÚHeat TemplateÀï±ßÈ¥¶¨ÒåÎÒÃǹØÐĵIJÎÊý£¬¿ÉÒÔʵÏÖDockerµÄËùÓи߼¶¹¦ÄÜ¡£ÁíÍâÒòΪºÍHeat¼¯³ÉÁË£¬ËùÒÔĬÈϾÍÓÐÁËMulti-TenantµÄ¹¦ÄÜ£¬¿ÉÒÔʵÏÖ²»Í¬DockerÓ¦ÓÃÖ®¼äµÄ¸ôÀë¡£
µ«ËüµÄȱµãÒ²·Ç³£Ã÷ÏÔ£¬ÒòΪËüÊÇHeatÖ±½Óͨ¹ýREST APIºÍDocker½»»¥µÄ£¬ËùÒÔHeat Docker DriverûÓÐ×ÊÔ´µ÷¶È£¬Óû§ÐèÒªÔÚTemplateÖÐÖ¸¶¨ÐèÒªÔÚÄÄһ̨Docker·þÎñÆ÷ÉÏÈ¥²¿Êð£¬ËùÒÔÕâ¸öDriver²»Êʺϴó¹æÄ£Ó¦Óã¬ÒòΪûÓÐ×ÊÔ´µ÷¶È¡£ÁíÍâÒòΪûÓкÍNeutronÈ¥½»»¥£¬ËùÒÔÍøÂç¹ÜÀíÒ²Ö»ÄÜÓÃDocker±¾ÉíµÄÍøÂç¹ÜÀí¹¦ÄÜÀ´ÊµÏÖ¡£
ͼ6ÊÇʹÓÃHeat Docker DriverµÄÒ»¸öºÜµäÐ͵ÄÓ¦Óó¡¾°¡£Ö÷ÒªÊÇͨ¹ýHeatÔÚÐéÄâ»ú²¿ÊðÒ»¸öС¹æÄ£µÄDocker ContainerÓ¦Óã¬Õâ¸öÀý×ÓÖ÷ÒªÊÇÒ»¸öWeb ServerµÄÓ¦Óá£

ͼ6 Heat Docker DriverµÄÒ»¸öºÜµäÐ͵ÄÓ¦Óó¡¾°
ËüµÄ·½·¨ÊÇÔÚHeat Tempalte¶¨ÒåÁ½ÖÖÀàÐ͵ÄResource£¬Ò»ÖÖÊÇNova Server£¬Ò»ÖÖÊÇDocker Container£¬Docker ContainerÐèÒªÒÀÀµNova Server£¬¾ÍÊDZØÐëNova Server´´½¨Íêºó²ÅÄÜ¿ªÊ¼´´½¨Docker Container¡£µ±Óû§ÔÚ´´½¨Nova ServerµÄʱºò£¬ÐèÒªÔÚNova ServerÉÏͨ¹ýUser Data°²×°Docker£¬Docker ContainerÐèÒªµÈNova ServerÆô¶¯ºó£¬ÔÚNova ServerÉÏ´´½¨Docker Container¡£ÕâÀïÓÐÒ»¸öÏêϸµÄÀý×Ó£¬´ó¼Ò¿ÉÒԲο¼£ºhttp://techs.eNovance.com/7104/multi-tenant-Docker-with-openstack-heat
Magnum
ÔÚOpenStackºÍDocker¼¯³ÉµÄ¹ý³ÌÖУ¬ÎÒÃÇ·¢ÏÖ´ÓOpenStackÏÖÓеÄÏîÄ¿ÖУ¬ÕÒ²»µ½Ò»¸öºÜºÃµÄ¼¯³Éµã£¬ËäÈ»ºÍNova¡¢Heat¶¼×öÁ˼¯³ÉµÄ³¢ÊÔ£¬µ«È±µãºÜÃ÷ÏÔ£¬ËùÒÔÉçÇø¾Í¿ªÊ¼ÁËÒ»¸öеÄרÃÅÕë¶ÔDockerºÍOpenStack¼¯³ÉµÄÏîÄ¿Magnum£¬ÓÃÀ´ÌṩÈÝÆ÷·þÎñ¡£MagnumÊÇ2014ÄêÔÚ°ÍÀè·å»áºó´Ó11Ô¿ªÊ¼×öµÄ£¬µ½ÏÖÔÚ5¸öÔÂʱ¼äÓÐ27¸öContributor£¬ÓÐ700¶à¸öCommit£¬·¢Õ¹ËÙ¶È»¹¿ÉÒÔ¡£
MangumµÄÖ÷ҪĿµÄÊÇÌṩContainer·þÎñµÄ£¬Ëüͬʱ»¹¿ÉÒԺͶà¸öDocker¼¯Èº¹ÜÀíϵͳ¼¯³É£¬°üÀ¨K8S¡¢Swarm¡¢CoreOSµÈ¡£ºÍÕ⼸¸öƽ̨¼¯³ÉµÄÖ÷ÒªÔÒòÊÇÄÜÈÃÓû§¿ÉÒԺܷ½±ãµØÍ¨¹ýOpenStackÔÆÆ½Ì¨À´¼¯³ÉK8S¡¢CoreOS¡¢SwarmÕâЩÒѾºÜ³ÉÐ͵ÄDocker¼¯Èº¹ÜÀíϵͳ£¬´Ù½øDockerºÍOpenStackÉú̬ϵͳµÄÈںϡ£
Ê×ÏÈÀ´¿´MagnumµÄÖ÷Òª¸ÅÄÈçͼ7Ëùʾ¡£
 ͼ7 MagnumµÄÖ÷Òª¸ÅÄî
ÔÚÕâ¸öͼµÄÓұߣ¬Ö÷ÒªÓУºBay¡¢Baymodel¡¢Node¡¢Pod¡¢Service¡¢Replication ControllerºÍContainer¡£
BayÔÚMagnumÖ÷Òª±íʾһ¸ö¼¯Èº£¬ÏÖÔÚͨ¹ýMagnum¿ÉÒÔ´´½¨K8SºÍSwarmµÄbay£¬Ò²¾ÍÊÇK8SºÍSwarmµÄ¼¯Èº¡£
BaymodelÊÇFlavorµÄÒ»¸öÀ©Õ¹£¬FlavorÖ÷ÒªÊǶ¨ÒåÐéÄâ»úµÄ¹æ¸ñ£¬BaymodelÖ÷ÒªÊǶ¨ÒåÒ»¸öDocker¼¯ÈºµÄһЩ¹æ¸ñ£¬ÀýÈçÕâ¸ö¼¯ÈºµÄ¹ÜÀí½ÚµãµÄFlavor¡¢¼ÆËã½ÚµãµÄFlavor¡¢¼¯ÈºÊ¹ÓõÄImageµÈ¡£
NodeÖ÷ÒªÊÇÖ¸BayÖеÄij¸ö½Úµã¡£
Pod¡¢Replication ControllerºÍServiceµÄÒâ˼ºÍÔÚK8SµÄÒâ˼ÊÇÒ»ÑùµÄ£¬Óû§¿ÉÒÔͨ¹ýMagnumÀ´ºÍK8S¼¯³É£¬Í¨¹ýMagnum APIÀ´²Ù×÷K8S¼¯Èº¡£
PodÊÇKubernetes×î»ù±¾µÄ²¿Êðµ÷¶Èµ¥Ôª£¬¿ÉÒÔ°üº¬¶à¸öContainer£¬Âß¼ÉϱíʾijÖÖÓ¦ÓõÄÒ»¸öʵÀý¡£±ÈÈçÒ»¸öWebÕ¾µãÓ¦ÓÃÓÉǰ¶Ë¡¢ºó¶Ë¼°Êý¾Ý¿â¹¹½¨¶ø³É£¬ÕâÈý¸ö×é¼þ½«ÔËÐÐÔÚ¸÷×ÔµÄÈÝÆ÷ÖУ¬ÄÇôÎÒÃÇ¿ÉÒÔ´´½¨ÈýPod£¬Ã¿¸öPodÔËÐÐÒ»¸ö·þÎñ¡£»òÕßÒ²¿ÉÒÔ½«Èý¸ö·þÎñ´´½¨ÔÚÒ»¸öPod£¬ÕâÈ¡¾öÓÚÓû§µÄÓ¦ÓÃÐèÇó¡£
ServiceÊÇPodµÄ·ÓÉ´úÀí³éÏó£¬ÓÃÓÚ½â¾öPodµÄ¸ß¿ÉÓõÄÎÊÌâ¡£ServiceÒòΪPodµÄÔËÐÐ״̬¿É¶¯Ì¬±ä»¯(±ÈÈçPodµÄIP±äÁË»òÕßij¸öPod±»É¾³ýÁ˵È)£¬ËùÒÔ·ÃÎʶ˲»ÄÜÒÔдËÀIPµÄ·½Ê½È¥·ÃÎʸÃPodÌṩµÄ·þÎñ¡£ServiceµÄÒýÈëÖ¼ÔÚ±£Ö¤PodµÄ¶¯Ì¬±ä»¯¶Ô·ÃÎʶË͸Ã÷£¬·ÃÎʶËÖ»ÐèÒªÖªµÀServiceµÄµØÖ·£¬ÓÉServiceÀ´Ìṩ´úÀí¡£
Replication ControllerÊÇPodµÄ¸´ÖƳéÏó£¬ÓÃÓÚ½â¾öPodµÄÀ©ÈÝËõÈÝÎÊÌ⡣ͨ³££¬·Ö²¼Ê½Ó¦ÓÃΪÁËÐÔÄÜ»ò¸ß¿ÉÓÃÐԵĿ¼ÂÇ£¬ÐèÒª¸´Öƶà·Ý×ÊÔ´£¬²¢ÇÒ¸ù¾Ý¸ºÔØÇé¿ö¶¯Ì¬ÉìËõ¡£Í¨¹ýReplication Controller£¬ÎÒÃÇ¿ÉÒÔÖ¸¶¨Ò»¸öÓ¦ÓÃÐèÒª¼¸·Ý¸´ÖÆ£¬Kubernetes½«ÎªÃ¿·Ý¸´ÖÆ´´½¨Ò»¸öPod£¬²¢ÇÒ±£Ö¤Êµ¼ÊÔËÐÐPodÊýÁ¿×ÜÊÇÓë¸Ã¸´ÖÆÊýÁ¿ÏàµÈ£¨ÀýÈ磬µ±Ç°Ä³¸öPodå´»úʱ£¬×Ô¶¯´´½¨ÐµÄPodÀ´Ìæ»»£©¡£
Container¾ÍÊÇij¸öDockerÈÝÆ÷¡£
MagnumÖеÄÖ÷Òª·þÎñÓÐÁ½¸ö£¬Ò»¸öÊÇMagnum API£¬Ò»¸öÊÇMagnum Conductor¡£
Magnum APIºÍÆäËûÏîÄ¿µÄAPIµÄ¹¦ÄÜÊÇÒ»ÑùµÄ£¬Ö÷ÒªÊÇ´¦ÀíClientµÄÇëÇ󣬽«ÇëÇóͨ¹ýÏûÏ¢¶ÓÁз¢Ë͵½backend£¬MagnumÏÖÔÚÖ§³ÖµÄbackendÓÐK8S¡¢CoreOS¡¢Swarm¡¢DockerµÈ£¬Î´À´»¹»áÖ§³ÖRocketµÈDocker¼¯Èº¹ÜÀí¹¤¾ß¡£
ÔÚMagnum£¬ºǫ́´¦ÀíÖ÷ÒªÊÇͨ¹ýMagnum ConductorÀ´×öµÄ¡£Magnum ConductorµÄÖ÷Òª×÷ÓÃÊǽ«ClientµÄÇëÇóת·¢µ½¶ÔÓ¦µÄBackend£¬Í¨¹ý¶ÔÓû§ÇëÇóµÄ½âÎö£¬°ïÓû§ÕÒµ½×îºÏÊʵÄBackend£¬ËùÒÔMagnum ConductorÐèҪΪÿ¸öAPIµÄÇëÇóÕÒµ½ºÏÊʵÄBackend´¦ÀíClientµÄRequest¡£
MagnumÆäʵºÍNovaµÄ¼Ü¹¹ºÜÏñ£¬NovaÖ÷ÒªÌṩIaaS·þÎñ£¬MagnumÖ÷ÒªÌṩCaaS£¬Nova¿ÉÒÔ¹ÜÀí²»Í¬ÀàÐ͵ÄHypervisor£¬°üÀ¨VMware¡¢KVM¡¢PowerVMµÈ£¬MagnumÒ²Ò»Ñù£¬Ëü¿ÉÒÔ¹ÜÀí²»Í¬µÄDocker¼¯Èº¹ÜÀí¹¤¾ß£¬°üÀ¨K8S¡¢Swarm¡¢CoreOSµÈ¡£×îÖÕÄ¿±êÊÇÆÚÍûºÍNovaÒ»Ñù£¬Äܹ»ÈÃÓû§²»ÓùØÐĺǫ́µÄDocker¼¯Èº¹ÜÀí¹¤¾ßµ½µ×ÊÇʲô£¬Ö»¹ÜÌáÇëÇó£¬×îÖÕͨ¹ýMagnum»ñµÃ×Ô¼ºÐèÒªµÄContainer¡£
´Óͼ7À´¿´£¬MagnumºÜ¼òµ¥£¬Ö÷ÒªÊÇ×öÁËЩ¼¯³É¹¤×÷£¬µ«ÆäʵMagnum¶Ô¿ª·¢ÈËÔ±µÄÒªÇóÒ²ºÜ¸ß£¬ÒòΪMagnumÐèÒªºÍHeat¡¢Ironic¡¢Nova¡¢K8S¡¢CoreOSºÍSwarmµÈ¼¯³É£¬ËùÒÔÐèÒª¿ª·¢ÈËÔ±¶ÔÕâЩÏîÄ¿¶¼ÓÐÒ»¶¨µÄÁ˽⣬ÖÁÉÙÐèÒª¶ÔÕâЩÏîÄ¿µÄ¸ÅÄîºÍÖ÷ÒªÌØÐÔ¶¼ºÜÇå³þ¡£
MagnumÏÖÔÚµÄһЩÖ÷ÒªÌØÐÔ£¬°üÀ¨K8S as a Service¡¢CoreOS as a Service¡¢Swarm as a ServiceµÈ¡£ËùÒÔÓÐÕâЩ¹¦ÄÜ£¬Ö÷ÒªÊÇÒòΪÓеĿͻ§ÒѾÓÐOpenStack¼¯ÈºÁË£¬ÏÖÔÚÏëÔÚOpenStackÉÏÔËÐÐһЩÒÔÓ¦ÓÃΪÖÐÐĵÄϵͳ£¬ÏñK8S¡¢Swarm¡¢MesosµÈ£¬Í¨¹ýÕâЩϵͳΪÓû§ÌṩӦÓ÷þÎñ£¬ËùÒÔÓû§¾Í¿ÉÒÔͨ¹ýMagnumÀ´ÊµÏÖËüµÄÐèÇó£¬Í¨¹ýOpenStackÌṩIaas·þÎñ£¬ÉϲãµÄK8S¡¢SwarmµÈÀ´ÌṩContainer·þÎñ¡£
ÁíÍ⣬Magnum»¹ÊµÏÖÁ˶à×â»§µÄ¹¦ÄÜ£¬¿ÉÒÔ½«²»Í¬×â»§Ö®¼äµÄResouce¸ôÀ룬ÿ¸ö×â»§¿ÉÒÔÓÃ×Ô¼ºµÄBaymodel¡¢BayµÈ¶ÔÏó£¬ÊµÏÖ°²È«¸ôÀë¡£Magnum×¼±¸ºÍK8SµÄ¿ª·¢ÈËÔ±ºÏ×÷£¬´òÔìÒ»¸ö×îºÃµÄOpenStackºÍK8S½áºÏµÄÏîÄ¿¡£
Magnum RoadmapÈçͼ8Ëùʾ¡£
 ͼ8 Magnum Roadmap
µÚÒ»¸öÊÇMagnum ConductorµÄˮƽÀ©Õ¹£¬Magnum·þÎñÒ²ÊÇÎÞ״̬µÄ£¬ËùÒÔ¿ÉÒÔˮƽÀ©Õ¹£¬Ò»µ©·¢ÏÖConductorÐÔÄÜ´æÔÚÆ¿¾±Ê±£¬¿ÉÒÔͨ¹ýÆô¶¯Ò»¸öеÄConductorÀ´·Öµ£ÏµÍ³¸ºÔØ¡£
µÚ¶þ¸öÊÇÔÉúDocker¼¯ÈºµÄµ÷¶ÈÎÊÌ⣬MagnumÏÖÔÚÖ»ÄܹÜÀíµ¥¸öµÄDockerµÄ·þÎñÆ÷£¬ÒòΪ»¹Ã»ÓÐÒ»¸öÔÉúµÄµ÷¶ÈÆ÷Äܹ»ÈÃMagnum¹ÜÀíÒ»¸öDocker¼¯Èº£¬µ«¿ÉÒÔºÍSwarm¡¢Gantt»òMesos¼¯³ÉʵÏÖDocker¼¯Èº×ÊÔ´µ÷¶ÈµÄ¹¦ÄÜ¡£ÏÖÔÚ¾¹ýÌÖÂÛ£¬¿ÉÄÜ»áʹÓÃSwarmÀ´×öµ÷¶È£¬ÒòΪͨ¹ýMagnum²¿ÊðÍêSwarm¼¯Èººó£¬Ä¬ÈϾͿÉÒÔͨ¹ýSwarmÀ´¹ÜÀíDocker¼¯ÈºÁË¡£
µÚÈý¸öÊÇÔÉúDocker¼¯ÈºµÄÍøÂç¹ÜÀí£¬ÏÖÔÚ´ó¼ÒµÄÒ»ÖÂÏë·¨ÊÇÔÚDocker serverÉÏͨ¹ýHostģʽÀ´²¿ÊðÒ»¸öContainerµÄl2 agentÀ´¹ÜÀíDocker ServerµÄÍøÂç¡£
µÚËĸöÊÇNotification£¬ÆäÖ÷Òª×÷ÓÃÊDZãÓÚ×·×ÙMagnumÖÐËùÓжÔÏóµÄ״̬£¬ÓÈÆäÊǵ±µÚÈý·½ºÍMagnum¼¯³ÉµÄʱºò£¬¿ÉÒÔͨ¹ýNotificationÀ´¼à¿ØMagnumÖеIJÙ×÷µÄ¶ÔÏó¡£
×îºóÒ»¸öÊÇK8SÉî¶È¼¯³É£¬ÏÖÔÚMagnumºÍK8SµÄ¼¯³ÉÊÇMagnumͨ¹ýµ÷ÓÃK8SÃüÁîÐÐkubectlºÍK8S½»»¥£¬ÕâÑù×ö±È½Ï¼òµ¥£¬µ«Êܵ½µÄÏÞÖÆºÜ´ó£¬ÒòΪMagnumÐèҪͨ¹ý½âÎöKubectlµÄÊä³öÀ´ÅжÏÿ¸öµ÷ÓÃÊDz»Êdzɹ¦£¬µ«ÓÐʱKubectl²¢²»ÄÜÊä³öij¸öAPIµÄËùÓÐOutput£¬ËùÒÔMagnum¹ØÐĵÄһЩֵͨ¹ýKubectl¿ÉÄÜÄò»µ½¡£ÏÖÔÚÓиöBluePrint¾ÍÊÇÏëͨ¹ýK8SclientʹÓÃREST APIÀ´ºÍK8S½»»¥£¬ÕâÑù¾Í¿ÉÒÔÄõ½Ã¿¸öµ÷ÓõÄÈ«²¿Êä³ö£¬Magnum¿ÉÒԺܷ½±ãµØÈ¡µÃ×Ô¼º¹ØÐĵÄÊä³ö£¬À´×öÏàÓ¦µÄ²Ù×÷¡£Í¼8ÏÂÃæµÄLinkÊÇMagnumÏÖÔÚµÄËùÓеÄBluePrint¡£
Murano
MuranoÊÇMirantis¹±Ï׵쬲¢ÇÒÒ²½øÁËOpenStack Namespace¡£Ò²ºÍK8S¼¯³ÉÁË£¬Óû§¿ÉÒÔͨ¹ýMuranoʹÓÃK8SµÄ¹¦ÄÜ£¬¿ÉÒÔͨ¹ýMurano²¿ÊðPod¡¢Service¡¢Replication ControllerµÈ¡£MuranoÖ÷ÒªÊÇÔÚOpenStack»ù´¡ÉÏÌṩӦÓÃĿ¼·þÎñ¡£MuarnoºÍSolumÖ®¼äÆäʵÊÇÓйØÏµµÄ£¬SolumÖ÷ÒªÊÇÓÃÀ´¿ª·¢Ó¦Óõģ¬Solum°ÑÓ¦Óÿª·¢Íêºó£¬¿ÉÒÔͨ¹ýMuranoÀ´·¢²¼¡£Óû§¿ÉÒÔͨ¹ýMuranoÌôÑ¡×Ô¼ºÐèÒªµÄÓ¦Ó÷þÎñ£¬Í¨¹ýÓ¦Ó÷þÎñ×éºÏ¹¹½¨×Ô¼ºµÄÓ¦Óá£
MuranoÒ²ÊÇͨ¹ýHeat²¿ÊðÓ¦Óã¬KubernetesºÍMurano¼¯³ÉÖ®ºó£¬ÏÖÔÚK8SÒ²ÒѾ³ÉΪMuranoµÄÒ»¸öÓ¦Ó÷þÎñÁË¡£
ͼ9ËùʾÊÇMuranoµÄÒ»¸ö¹¤×÷Á÷£¬¿ÉÒÔ¿´µ½ËüµÄʹÓúܼòµ¥¡£Ê×ÏÈ´´½¨Óû§µÄÓ¦Óû·¾³£¬È»ºóΪӦÓû·¾³Ìí¼ÓÓ¦Ó÷þÎñ£¬½ÓÏÂÀ´²¿ÊðÓ¦Óû·¾³£¬Ó¦Óû·¾³»áͨ¹ýOpenStackµÄHeatÀ´²¿Êð¡£
 ͼ9 MuranoµÄÒ»¸ö¹¤×÷Á÷
ͼ10Ö÷ÒªÊÇ˵Ã÷ÔõÑùͨ¹ýMurano²¿ÊðÒ»¸öK8SµÄPod¡£
 ͼ10 ͨ¹ýMurano²¿ÊðÒ»¸öK8SµÄPod
MuranoºÍK8SµÄ¼¯³ÉÖ÷ÒªÔÚǰÈý²½£¬µÚÒ»²½ÊÇÏÈ´´½¨Ò»¸öK8SµÄ»·¾³£»È»ºóÔÚµÚ¶þ²½ÐèҪΪÎÒÃÇ´´½¨µÄK8S»·¾³Ìí¼ÓÒ»¸öÓ¦Ó÷þÎñ£¬Ê×ÏÈÐèÒªÌí¼ÓÒ»¸öK8SµÄ¼¯ÈºÓ¦ÓÃÄ£°å£¬È»ºóÔÚK8S¼¯ÈºµÄ»ù´¡ÉÏÌí¼ÓÒ»¸öPodµÄÓ¦Ó㻵ÚÈý²½ÊÇÔÚµÚ¶þ²½PodµÄ»ù´¡ÉÏ£¬ÎªPodÌí¼ÓContainer¡£ÕâÈý²½×öÍêºó£¬¾Í¿ÉÒÔ²¿Êð»·¾³ÁË£¬×îÖÕMurano»áµ÷ÓÃHeatÊ×ÏÈ´´½¨Ò»¸öK8SµÄ¼¯Èº£¬È»ºóK8S¼¯Èº¸ù¾ÝÓû§µÄÐèÇó´´½¨Pod¡£ËùÓеÄÕâЩ²Ù×÷¶¼¿ÉÒÔÔÚMuranoµÄGUIÉϲÙ×÷£¬·Ç³£¼òµ¥¡£
OpenStack Deployment With Docker
OpenStackÏÖÔڵIJ¿Ê𹤾ߺܶ࣬°üÀ¨RDO¡¢Fuel¡¢Chef¡¢Triple-OµÈ£¬µ«ÕâЩ¹¤¾ß¶ÔOpenStackÉý¼¶µÄÖ§³Ö²»ÊǺܺá£ÏëÔÚOpenStackÉý¼¶µÄ»°£¬Ö÷ÒªÓÐÁ½ÖÖ·½Ê½£º»ùÓÚImageÓë»ùÓÚPackage ¡£
»ùÓÚPackageµÄ¸üз½Ê½Í¨³£²»ÊÇÔ×ӵģ¬Éý¼¶¹ý³ÌÖдæÔںܶർÖÂʧ°ÜµÄÔÒò£¬ÓÈÆäÊÇһЩ¹«¹²°üÒÀÀµµÄÎÊÌ⣬¿ÉÄܵ¼Ö²¿·Öpackage¸üÐÂʧ°ÜµÄ¿ÉÄÜ¡£»ùÓÚImageµÄ·½Ê½£¬¸üÐÂÊÇÔ×ӵġ£
Triple-OÊÇÒ»¸öºÜµäÐ͵Äͨ¹ý¾µÏñ²¿ÊðµÄÀý×Ó£¬µ«ÊÇTriple-OÉý¼¶OpenStack¼¯ÈºÊ±£¬Á£¶ÈÌ«´ó£¬Ëüͨ³£Çé¿öÏÂÊÇͬʱ¶ÔOpenStack¶à¸ö·þÎñÈ¥Éý¼¶£¬ÕâÑù¶ÔOpenStack¼¯ÈºÓ°Ïì±È½Ï´ó£¬»áµ¼ÖÂijЩ·þÎñÔÚÒ»¶¨Ê±¼ä¶ÎÄÚ²»Äܱ»·ÃÎÊ¡£
ËùÒÔ¾ÍÓÐKollaÕâÑùÒ»¸öÏîÄ¿£¬À´½â¾ö¿ìËÙÉý¼¶ºÍ»Ø¹öµÄÎÊÌâ¡£
Kolla£ºDocker+OpenStack
KollaµÄÖ÷Òª¹¦ÄÜÊÇʹÓÃDockerÈÝÆ÷¿ìËÙ²¿ÊðÉý¼¶OpenStack·þÎñ¡£
KollaµÄ×îÖÕÄ¿±êÊÇΪOpenStackµÄÿһ¸ö·þÎñ¶¼´´½¨Ò»¸ö¶ÔÓ¦µÄDocker Image£¬Í¨¹ýDocker Image½«Éý¼¶µÄÁ£¶È¼õСµ½Service¼¶±ð£¬´Ó¶øÊ¹Éý¼¶Ê±£¬¶ÔOpenStackÓ°ÏìÄÜ´ïµ½×îС£¬²¢ÇÒÒ»µ©Éý¼¶Ê§°Ü£¬Ò²ºÜÈÝÒ׻عö¡£Éý¼¶Ö»ÐèÒªÈý²½£ºPullа汾µÄÈÝÆ÷¾µÏñ£¬Í£Ö¹Àϰ汾µÄÈÝÆ÷·þÎñ£¬È»ºóÆô¶¯Ð°汾ÈÝÆ÷¡£»Ø¹öÒ²²»ÐèÒªÖØÐ°²×°°üÁË£¬Ö±½ÓÆô¶¯Àϰ汾ÈÝÆ÷·þÎñ¾ÍÐУ¬·Ç³£·½±ã¡£
KollaÊÇͨ¹ýDocker ComposeÀ´²¿ÊðOpenStack¼¯ÈºµÄ£¬ÏÖÔÚÖ÷ÒªÊÇÕë¶ÔÂã»ú²¿ÊðµÄ£¬ËùÒÔÔÚ²¿ÊðDocker Containerʱ£¬Ä¬ÈϵÄÍøÂçÅäÖö¼ÊÇHostģʽ¡£ËùÒÔKollaµÄºÃ´¦¾Í·Ç³£Ã÷ÏÔÁË£¬½«OpenStackÉý¼¶µÄÁ£¶Èϸ»¯µ½ÁËService¼¶±ð£¬Éý¼¶Ê§°Üʱ£¬¿ÉÒÔºÜÈÝÒ׻عö¡£
ͼ11չʾÔõÑùͨ¹ýKollaÈ¥²¿ÊðÒ»¸öOpenStack¼¯Èº¡£
 ͼ11 ͨ¹ýKollaÈ¥²¿ÊðÒ»¸öOpenStack¼¯Èº
¿ÉÒÔ¿´µ½Ê×ÏÈÐèÒªÆô¶¯Ò»¸ö¹ÜÀí½Úµã£¬Ö»ÐèҪͨ¹ýÒ»¸öÃüÁî¾Í¿ÉÒ԰ѹÜÀí½Úµã²¿ÊðÍê³É£¬Õâ¸öÃüÁîÊǵ÷ÓÃDocker ComposeÀ´²¿ÊðOpenStackµÄËùÓзþÎñ£¬È»ºóÎÒÃÇ¿ÉÒÔÔÚÿһ¸ö¼ÆËã½ÚµãÉÏͨ¹ýDocker Compose°²×°¼ÆËã½ÚµãÐèÒªµÄ·þÎñ£¬¾ÍÄܲ¿ÊðÒ»¸öOpenStack¼¯Èº¡£ÒòΪKollaµÄDocker ImageÁ£¶ÈºÜС£¬ËüÕë¶Ôÿ¸öOpenStack·þÎñ¶¼ÓÐÌØ¶¨µÄImage£¬ËùÒÔÎÒÃÇÒ²¿ÉÒÔͨ¹ýDocker RunÀ´²Ù×÷ij¸ö¾ßÌåµÄOpenStack·þÎñ¡£Õâ¸öÀý×ÓÊÇͨ¹ýDocker ImageÆô¶¯ÁËGlance API¡£
ͼ12ÊÇÒ»¸öOpenStack computeµÄÒ»¸öÀý×Ó¡£
 ͼ12 OpenStack computeµÄÒ»¸öÀý×Ó
ÕâÊÇÒ»¸ö¼òµ¥µÄYMLÎļþ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýDocker composeʹÓÃÕâЩYMLÎļþ²¿ÊðOpenStack½Úµã£¬¿ÉÒÔ¿´µ½Õâ¸öYMLÎļþ°üº¬Compute Data Image¡¢Libvirt Image¡¢Network Image¡¢Nova API ImageºÍCompute ImageµÈ¡£µÚÒ»¸öCompute DataÖ÷ÒªÊÇΪÆäËûContainerÌṩ´æ´¢·þÎñµÄ£¬¿ÉÒÔ¿´µ½LibvirtºÍNovacomputeµÄContainerµÄ´æ´¢¶¼ÊÇ´ÓCompute DataÀ´µÄ£¬ÒòΪËüÃǶ¼ÓÐÒ»¸ö×Ö¶Îvoluemes_fromÖ¸ÏòCompute DataÕâ¸öContainer¡£
ÈçºÎÑ¡Ôñ£¿
OpenStackºÍDockerÏà¹ØµÄÏîÄ¿Õâô¶à£¬¸ÃÔõôȥѡÔñÄØ£¿¼òµ¥ËµÃ÷ÈçÏ¡£
Èç¹ûÓû§Ö»ÊÇÏ뽫ÒÔǰµÄVM WorkloadÇ¨ÒÆµ½Docker Container£¬ÄÇôËü¿ÉÒÔʹÓÃNova Docker Driver£¬Ò»¸öºÜµäÐ͵ÄÀý×ÓÊÇSaharaͨ¹ýHeatµ÷ÓÃNova Docker DriverÀ´´´½¨Hadoop¼¯Èº¡£
Èç¹ûÓû§ÏëʹÓÃDockerµÄһЩ¸ß¼¶¹¦ÄÜÀ´²¿ÊðÒ»¸öС¹æÄ£¼¯Èº£¬ÄǾͿÉÒÔ¿¼ÂÇHeat Docker Driver¡£
Èç¹ûÓû§Ïëͨ¹ýOpenStack¼¯³ÉÏÖÓеÄһЩDocker¼¯Èº¹ÜÀí¹¤¾ßÏñK8S¡¢SwarmÀ´¹ÜÀí´ó¹æÄ£µÄDocker¼¯Èº£¬½¨ÒéʹÓÃMagnum¡£ÁíÍâÒòΪMagnumÒ²ÊÇ»ùÓÚHeat×öµÄ£¬ËùÒÔĬÈÏÒ²Ö§³Ö»ìºÏÔÆµÄ¹¦ÄÜ¡£
MuranoºÍDockerµÄ¼¯³É£¬Ö÷ÒªÌåÏÖÔÚËüÌṩÁËÒ»¸öK8SµÄÓ¦Óã¬Óû§¿ÉÒÔͨ¹ýÕâ¸öK8SÓ¦ÓÃÀ´¹ÜÀíDocker¼¯Èº¡£µ«MuranoºÍDockerµÄ½¹µã²»Ò»Ñù£¬MagnumÖ÷ÒªÌṩÈÝÆ÷·þÎñ£¬MuranoÖ÷ÒªÌṩӦÓÃĿ¼·þÎñ¡£
×îºóµÄKolla£¬Ö÷ÒªÊǼò»¯OpenStackµÄ°²×°²¿ÊðºÍÉý¼¶µÄ¡£
KiloµÄ²ã¼¶¶à×â»§¹ÜÀí
ÒòΪDockerµÄ³öÏÖ£¬Ê¹µÃIaaS²ãµÄ¼ÆËãÃܶȽøÒ»²½ÌáÉý£¬ÕâÖÖÃܼ¯Ð͵ļÆËã¶Ô×ÊÔ´µ÷¶ÈºÍÔËάµÄÒªÇóºÜ¸ß£¬ÐèҪһЩ±È½Ï¸ß¼¶µÄ×ÊÔ´µ÷¶È²ßÂÔÀ´Ìá¸ß×ÊÔ´ÀûÓÃÂÊ¡£Docker ContainerºÍÐéÄâ»úµÄ×î´óÇø±ðÊÇËüÇáÁ¿µÄÌØÐÔ£¬¶ÔÓÚÕâÖÖÇáÁ¿ÐÔµÄÈÝÆ÷¼¼Êõ£¬¿ÉÒÔͨ¹ýÔÚ×ÊÔ´µ÷¶ÈÖмÓÈ벻ͬ×â»§Ö®¼ä×ÊÔ´¹²ÏíµÄ»úÖÆÀ´Ìá¸ß×ÊÔ´ÀûÓÃÂÊ¡£ËùÒÔOpenStackÔÚKiloмӵIJ㼶×â»§µÄ¹ÜÀí£¬Õâ¸ö¹¦ÄÜ¿ÉÒÔÀí½âΪһÖÖ»ù±¾µÄ×ÊÔ´¹²Ïí£¬ÒòΪÕâ¸ö¹¦ÄÜÔÊÐí¸¸ÕË»§ºÍ×ÓÕË»§Ö®¼ä¹²Ïí×ÊÔ´¡£
ͼ13ÊÇÒ»¸öÀý×Ó¡£
 ͼ13 ²ã¼¶µÄ¶à×â»§¹ÜÀí
ÎÒÃÇ¿ÉÒÔ¿´µ½Ã¿¸ö×â»§µÄÅԱ߶¼ÓÐһЩֵ£¬ÒÔ×î¶¥²ãµÄ×⻧ΪÀý£¬Õâ¸ö×â»§hard_limit=1000£¬used=100£¬reserved=100£¬allocated=70£¬ËüÃǵÄÒâ˼·Ö±ðΪ£ºhard_limitÊÇÕâ¸ö×â»§µÄ×ÊÔ´ÉÏÏÞ£»usedÊǵ±Ç°Õâ¸ö×â»§ÒѾʹÓõÄ×ÊÔ´£»reservedÊDZ»Õâ¸ö×â»§Ô¤¶¨µÄ×ÊÔ´£¬¼´Ê¹µ±Ç°µÄ×â»§²»Óã¬Ò²²»ÄÜ·Ö¸ø±ðµÄ×â»§£»allocatedÊǵ±Ç°×â»§·Ö¸ø×ÓÕË»§µÄ×ÊÔ´£¬ËüµÄÖµÊÇÖ±½Ó×ÓÕË»§µÄhard_limitµÄ×ܺ͡£ÎÒÃÇ¿ÉÒÔ¿´µ½ORGÕâ¸ö×â»§µÄÖ±½Ó×ÓÕË»§Á½¸ö²¿ÃÅ1ºÍ²¿ÃÅ2£¬Á½¸öµÄhard_limt·Ö±ðΪ300ºÍ400£¬ËùÒÔORGµÄallocatedÖµÊÇ700£¬ÕâËĸöÖµ»¹Òþ²ØÁËÒ»¸öÖµ£¬ÄǾÍÊÇfree£¬µ±Ç°ÕË»§µÄ¿ÕÏÐ×ÊÔ´£¬freeÊÇhard_limit¼õµôused¡¢reservedºÍallocated£¬¿ÕÏÐ×ÊÔ´ÓÐÁ½¸ö×÷Óã¬Ò»¸öÊÇ¿ÉÒÔ¹©±¾ÕË»§Ê¹Ó㬻¹ÓÐÒ»¸öÊǹ©×ÓÕË»§Ê¹Óá£ÎÒÃÇ¿ÉÒÔ¿´µ½ORGµÄ¿ÕÏÐ×ÊԴΪ1000-100-100-700=100£¬¾ÍÊÇ˵ËüÏÖÔÚÓÐ100¸ö¿ÕÏеÄ×ÊÔ´£¬¿ÉÒÔ¹©×Ô¼º»òÕß×ÓÕË»§Ê¹Ó㬾ÍÊǸøDept-1»òÕßDept-2È¥Óá£ÕâÑù¾ÍΪOpenStackÔö¼ÓÁ˲»Í¬²ã¼¶×â»§Ö®¼äµÄ×ÊÔ´¹²ÏíµÄ¹¦ÄÜ¡£
ÕâÖÖÐÎʽÓÐʲôȱµãÄØ£¿ÎÒÃÇ¿ÉÒÔ¿´µ½ÕË»§Ö®¼äµÄ¹ØÏµÖ»¾ÖÏÞÓÚ¸¸×ÓÕË»§£¬Í¬Ò»²ã¼¶µÄÕË»§Ö®¼ä»¹ÊÇûÓйØÏµ£¬ËüÃǵÄ×ÊÔ´Ò²²»ÄÜ»¥Ï๲Ïí¡£ÎÒÃÇ¿´team11ºÍteam12£¬ËüÃÇÖ®¼äµÄ×ÊÔ´²»Äܹ²Ïí£¬¾ÍÊǼ´Ê¹team11µÄ×ÊÔ´¶¼ÓÃÍêÁË£¬team12µÄ×ÊÔ´Ò»µãûÓã¬team11Ò²²»ÄÜ´Óteam12ÄDZ߽è×ÊÔ´¹ýÀ´£¬ÕâÑù·´Ó³µ½ÆóÒµ¾ÍÊÇ£¬Í¬Ò»²ã¼¶µÄ²¿ÃÅÖ®¼ä×ÊÔ´²»Äܹ²Ïí£¬ÕâÊÇÒ»¸öºÜ´óµÄ¶Ì°å£¬»áµ¼ÖÂ×ÊÔ´²»Äܱ»³ä·ÖÀûÓá£ÎÒÃÇ¿ÉÒ԰ѵ±Ç°KiloµÄÕâÖֲ㼶×â»§×ÊÔ´¹²ÏíÀí½âΪ¶Àռģʽ¡£
ͼ14Êǵ±Ç°KiloµÄ²ã¼¶×⻧ģʽ£¬ÏÖÔÚ¹²16¸ö×ÊÔ´£¬T1ºÍT2¸÷¶ÀÕ¼8¸ö£¬ÎÒÃÇ¿ÉÒÔ°Ñÿ¸ö×ÊÔ´¿´³ÉÊÇÒ»¸öDocker Container£¬¼Ù¶¨ËùÓеÄContainer¹æ¸ñ¶¼ÊÇÒ»ÑùµÄ¡£¾ÍÊÇ˵T1ºÍT2×î¶à¿ÉÒÔ´´½¨8¸öContainer¡£
 ͼ14 µ±Ç°KiloµÄ²ã¼¶×⻧ģʽ
T1Òª4¸ö×ÊÔ´£¬ÒòΪËüÓÐ8¸ö£¬ËùÒÔ¿ÉÒÔÄõ½4¸ö£¬Ê£ÏÂ4¸ö¿ÕÏеģ»T2Òª12¸ö×ÊÔ´£¬ÒòΪËüÖ»ÓÐ8¸ö£¬ËùÒÔÖ»ÄÜÄõ½8¸ö×ÊÔ´¡£×îÖÕ½á¹ûÊÇT1ÓÐ4¸ö¿ÕÏеÄ×ÊÔ´£¬T2ȱÉÙ4¸ö×ÊÔ´£¬ÕâÖÖ¶ÀÕ¼²ßÂÔµÄȱµã¾ÍÊÇ×ÊÔ´²»Äܹ²Ïí£¬¼ÙÈçÄܰÑT1µÄÕâ4¸ö¿ÕÏеÄ×ÊÔ´¸øT2Ó㬾ÍÄÜ´ïµ½×îÓŵÄ×ÊԴʹÓÃÂÊ¡£
Õë¶ÔKilo¼´½«ÊµÏֵIJ㼶ÕË»§µÄȱµã£¬ÓÐÈËÕýÔÚ½¨ÒéOpenStackÉçÇø×÷³ö¸Ä½øÔö¼Óͬһ²ã¼¶×â»§Ö®¼äµÄ×ÊÔ´¹²Ïí£¬Ö÷ÒªÓÐÁ½ÖÖÐÎʽ£ºÍ¬Ò»²ã¼¶×ÊÔ´½èÈë/½è³öºÍͬһ²ã¼¶×ÊÔ´×ÊÔ´¹²Ïí¡£
ͼ15ÊÇͬһ²ã¼¶µÄ×â»§Ö®¼ä×ÊÔ´¹²Ïí¸Ä½øµÄµÚÒ»¸öģʽ£ºÍ¬Ò»²ã¼¶×â»§¼ä×ÊÔ´½èÈë½è³ö¡£
 ͼ15 ͬһ²ã¼¶×â»§¼ä×ÊÔ´½èÈë½è³ö
½èÈë½è³öÊÇ»ùÓÚ¶ÀÕ¼²ßÂÔÀ´¸Ä½øµÄ¡£Õâ¸öÀý×Ӻ͸ղŵĶÀÕ¼²ßÂÔºÜÏñ£¬´ÓÕâ¸öÀý×ÓÎÒÃÇ¿ÉÒÔ¿´µ½£¬×â»§T1ºÍT2¸ö¶ÀÕ¼8¸ö×ÊÔ´£¬×â»§T2¿ÉÒÔ´Ó×â»§T1½èÈë4¸ö×ÊÔ´¡£ÏÖÔÚT1Òª4¸ö£¬ÎÒÓÐ8¸ö£¬¿ÉÒÔÄõ½4¸öÓÃ×Å£¬È»ºóÓÐ4¸öÊÇ¿ÕÏеģ¬T2À´ÁË£¬Òª12¸ö£¬ÏÈÄõ½×Ô¼º¶ÀÕ¼µÄÄÇ8¸ö£¬»¹ÐèÒª4¸ö£¬È»ºó·¢ÏÖ¿ÉÒÔ´ÓT1Äǽè4¸ö£¬ÕýºÃÂú×ãT2µÄÇëÇó¡£ÔÙ½øÒ»²½£¬¾ÍÊǼÙÈçÕâʱºòT1ÓÖÀ´×ÊÔ´ÇëÇóÁË£¬T1¿ÉÒÔͨ¹ýijÖÖ²ßÂÔ½«½è¸øT2µÄÄÇ4¸öÒª»ØÀ´¡£
ͼ16ÊÇͬһ²ã¼¶µÄ×â»§Ö®¼ä×ÊÔ´¹²Ïí¸Ä½øÁíÒ»ÖÖģʽ£ºÍ¬Ò»²ã¼¶×â»§Ö®¼ä×ÊÔ´¹²Ïí¡£
 ͼ16 ͬһ²ã¼¶×â»§Ö®¼ä×ÊÔ´¹²Ïí
ÏÖÔÚͬһ²ãµÄ×â»§Ö®¼äµÄ×ÊÔ´ÊDz»Äܹ²ÏíµÄ£¬ËùÒÔÎÒÃÇÐèÒªÈÃͬһ²ã¼¶×â»§Ö®¼äµÄ×ÊÔ´Äܹ»¹²ÏíÀ´ÌáÉýϵͳµÄ×ÊԴʹÓÃÂÊ¡£ËùÒÔÎÒÃÇÏÖÔÚ¿ÉÒÔÒýÈëͬһ²ã¼¶µÄ×â»§Ö®¼äµÄ¹²Ïíģʽ¡£
¾ÙÀýÀ´Ëµ£¬ÏÖÔÚÓÐÁ½¸ö×â»§£¬T1ºÍT2£¬¶¼²»¶ÀÕ¼ÈκÎ×ÊÔ´£¬¹²ÏíËùÓÐ×ÊÔ´£¬²¢ÇÒT1ºÍT2µÄ¹²Ïí±ÈÀýΪ1:1£¬ÏÖÔÚÒ»¹²ÓÐ16¸ö×ÊÔ´£¬Õâ16¸ö×ÊÔ´¶¼Êǹ²ÏíµÄ£¬T1ºÍT2µÄ¹²Ïí±ÈÀýΪ1:1£¬ËùÒÔT1ºÍT2¶¼deserve 8¸ö×ÊÔ´£¬µ«Õâ8¸ö²¢²»ÊDZ»T1»òÕßT2¶ÀÕ¼µÄ£¬¶øÊǹ²ÏíµÄ¡£
Ò²¾ÍÊÇ˵£¬ÏÖÔÚT1ºÍT2¶¼ÓÐ×ÊÔ´ÇëÇóÁË£¬T1Òª4¸ö£¬T1ÏÖÔÚdeserve 8¸ö£¬ÄǾͿÉÒÔÖ±½ÓÈ¥ÄÃ4¸ö×ÊÔ´¡£T2À´ÁË£¬T2Òª12¸ö£¬µ«ÊÇT2Ö»deserve 8¸ö£¬ÄÇT2¾ÍÏÈÄõ½deserveµÄÕâ8¸ö£¬È»ºóËü·¢ÏÖshare poolÀï±ß»¹ÓÐ4¸ö×ÊԴûÈËÓã¬ÄÇËü¾Í¿ÉÒÔ°ÑÕâ4¸öÔÙÄùýÀ´£¬ÕâÑùT1ºÍT2µÄÇëÇó¾Í¶¼Âú×ãÁË¡£
ÕâÖÖ½èÈë½è³öģʽºÍ¹²ÏíģʽҲ¿ÉÒÔͬʱȥʹÓã¬ÎÒÃÇ¿ÉÒÔ°ÑÒ»²¿·Ö×ÊÔ´ÉèÖóɶÀÕ¼µÄ£¬Ò»²¿·ÖÉèÖÃΪ¹²ÏíµÄ£¬¸øÓû§¸ü´óµÄ¿Õ¼äÀ´ÅäÖÃËüµÄ×ÊÔ´¹æ»®¡£
×÷Õß¼ò½é£ºÁõ¹âÑÇ£¬2008ÄêÓÚÎ÷°²½»Í¨´óѧÈí¼þѧԺ»ñµÃ˶ʿѧλ£¬Ä¿Ç°¾ÍÖ°ÓÚIBM Platform Computingϵͳ¿Æ¼¼²¿ÔƼÆË㲿ÃÅ£¬µ£ÈÎÔÆ¼ÆË㿪·¢²¿¼Ü¹¹Ê¦¡£×Ô2013Äê5Ô¿ªÊ¼²ÎÓëOpenStackÉçÇøµÄ¿ª·¢¹¤×÷£¬ÒÑΪ OpenStackÉçÇø¹±Ï×ÁË200¶à¸öPatch£¬Éæ¼°Nova¡¢Cinder¡¢Heat¡¢BlazarºÍMagnumµÈÏîÄ¿£¬²¢µ£ÈÎMagnumµÄCore Member¡£
|