Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Docker±³ºóµÄÈÝÆ÷¼¯Èº¹ÜÀí¡ª´ÓBorgµ½Kubernetes£¨Ò»£©
 
×÷Õߣº ÕÅÀÚ À´Ô´£ºInfoQQ ·¢²¼ÓÚ 2015-8-14
  2634  次浏览      27
 

2015Äê4Ô£¬´«ÎÅÐí¾ÃµÄBorgÂÛÎÄ×ÜËã³öÏÖÔÚÁËGoogle ResearchµÄÒ³ÃæÉÏ¡£ËäÈ»´«ÑÔBorg×÷ΪG¼ÒµÄ¡°ÀÏ¡±ÏîĿһֱÊDz۵ãÂúÂú£¬¶øÇÒ±¾ÉíµÄÖªÃû¶ÈºÍÓ°ÏìÁ¦Ò²Ó¦¸Ã±È²»Éϵ±ÄêµÄ¡°Èý´óÂÛÎÄ¡±£¬µ«ÊÇͬºÜ¶àºÃÆæµÄС»ï°éÒ»Ñù£¬±ÊÕß»¹ÊÇÈÄÓÐÐËȤµØ°ÑÕâÆª¡°·ÇµäÐÍ¡±ÂÛÎİݶÁÁËÒ»·¬¡£

×¢£º±¾ÎÄ×÷ÕßÕÅÀÚ½«ÔÚ8ÔÂ28ÈÕ~29ÈÕµÄCNUTÈ«ÇòÈÝÆ÷¼¼Êõ·å»áÉÏ·ÖÏíÌâΪ¡¶´Ó0µ½1£ºKubernetesʵս¡·µÄÑݽ²£¬Ñݽ²ÖÐËû½«ÖصãÆÊÎöKubernetesµÄºËÐÄÔ­ÀíºÍʵ¼ù¾­Ñ飬²¢·ÖÏí´ó¹æÄ£ÈÝÆ÷¼¯Èº¹ÜÀíËùÃæÁÙµÄÎÊÌâºÍ½â¾ö˼·¡£

1. BorgÔÚ½²Ê²Ã´¹ÊÊÂ

Æäʵ£¬Èç¹ûÕâÆªÂÛÎÄ·¢±íÔÚÁ½ÈýÄêǰ£¬BorgµÄ¹Ø×¢¶È¿ÖÅÂÕæÃ»ÓнñÌìÕâô¸ß¡£×÷Ϊһƪ±¾ÖÊÉÏÊǹØÓÚÊý¾ÝÖÐÐÄÀûÓÃÂʵİ빤³Ì¡¢°ëÑо¿ÐԵijɹû£¬Õâ¸öÁìÓòµÄ¹Ø×¢ÈËȺÀ´×Ô´ó³§µÄÔËά²¿ÒÔ¼°ÏµÍ³²¿µÄ¼¼ÊõͬÁÅ¿ÉÄÜÒªÕ¼ºÜ´óµÄ±ÈÀý¡£¶ø¶ÔÓÚ¾ø´ó¶àÊýÑо¿ÈËÔ±£¬ÆÕͨ¿ª·¢Õߣ¬ÉõÖÁ°üÀ¨Æ½Ì¨¿ª·¢Õß¶øÑÔ£¬BorgÂÛÎı¾ÉíµÄÎüÒýÁ¦Ó¦¸Ã˵¶¼ÊDZȽÏÓÐÏ޵ġ£

²»¹ý£¬Ò»µ©ÎÒÃǰÑBorg·Åµ½µ±Ç°Õâ¸öʱ¼äµãÉÏÀ´ÖØÐÂÉóÊÓ£¬ÕâÆª±¾¸Ãƽµ­µÄÂÛÎľÍÓµÓÐÁËÖÚ¶àÉî²ãÒâÒå¡£µ±È»£¬ÕâÒ»Çоø·ÇżȻ£¬´Ó2013ÄêÄ©ÒÔDockerΪ´ú±íµÄÈÝÆ÷¼¼ÊõµÄѸËÙÐËÆð£¬2014ÄêGoogleÈÝÆ÷¹ÜÀíÆ½Ì¨KubernetesºÍContainer EngineµÄÇ¿ÊÆÀ©ÕÅ£¬ÔÙµ½Èç½ñÓÉMesosÒ»ÊÖ´òÔìµÄDCOS£¨Êý¾ÝÖÐÐIJÙ×÷ϵͳ£©¸ÅÄîµÄÖËÊÖ¿ÉÈÈ¡£ÈÝÆ÷¼¼ÊõÁîÈËÕ¦ÉàµÄ½ø»¯ËٶȺܿì¾Í½«Ò»¸öÔø¾­²¢²»ÐèÒª±»´ó¶àÊý¿ª·¢ÈËÔ±¹Ø×¢µÄÎÊÌâ°Úµ½ÁËÌ¨Ãæ£º

ÎÒÃÇÓ¦¸ÃÈçºÎ¸ßЧµØ³éÏóºÍ¹ÜÀíÒ»¸öÆÄ¾ß¹æÄ£µÄ·þÎñ¼¯Èº£¿

Õ⣬ÕýÊÇBorgÈ«Á¦²ûÊöµÄºËÐÄÎÊÌâ¡£

˵µÃ¸üÈ·ÇÐÒ»µã£¬µ±ÎÒÃÇÖð²½½ÓÄÉÁËÒÔÈÝÆ÷Ϊµ¥Î»²¿ÊðºÍÔËÐÐÓ¦ÓÃÖ®ºó£¬ÔËάÈËÔ±ÖÕÓÚ¿ÉÒÔ´ÓÎÞÐÝÖ¹µÄ°ü¹ÜÀí£¬ÄªÃûÆäÃîµÄ»·¾³²îÒ죬·±ÔÓÖØ¸´µÄÅú´¦ÀíºÍÈÎÎñ×÷ÒµµÄÖÐÉÔ΢»Ø¹ýÒ»µãÉñÀ´£¬¿ªÊ¼ÖØÐÂÉóÊÓ×Ô¼ºÊÖÖеÄÎïÀí×ÊÔ´µÄ×éÖ¯ºÍµ÷¶È·½Ê½£º¼´ÎÒÃÇÄܲ»Äܽ«ÈÝÆ÷¿´×÷´«Í³²Ù×÷ϵͳµÄ½ø³Ì£¬°ÑËùÓеķþÎñÆ÷¼¯Èº³éÏó³ÉΪͳһµÄCPU¡¢ÄÚ´æ¡¢´ÅÅ̺ÍÍøÂç×ÊÔ´£¬È»ºó°´Ðè·ÖÅ䏸ÈÎÎñʹÓÃÄØ£¿

ËùÒÔ£¬×÷Ϊ¡¶Docker±³ºóµÄ¼¼Êõ½âÎö¡·ÏµÁÐÎÄÕµÄÌØ±ðƪ£¬±ÊÕß½«ºÍ¶ÁÕßÒ»Æð´ÓBorg³ö·¢£¬½áºÏËüµÄͬԴÏîÄ¿KubernetesÖг¢ÊÔ̽Ë÷Ò»ÏÂÕâ¸öÎÊÌâµÄ´ð°¸¡£

2. BorgµÄºËÐĸÅÄî

ͬ´ó¶àÊýPaaS¡¢ÔÆÆ½Ì¨ÀàÏîÄ¿Ðû³ÆµÄ¿ÚºÅÒ»Ñù£¬Borg×î»ù±¾µÄ³ö·¢µã»¹ÊÇ¡°Ï£ÍûÄÜÈÿª·¢Õß×î´ó¿ÉÄܵذѾ«Á¦¼¯ÖÐÔÚÒµÎñ¿ª·¢ÉÏ¡±£¬¶ø²»ÐèÒª¹ØÐÄÕâЩ´úÂëÖÆÆ·µÄ²¿Êðϸ½Ú¡£²»¹ý£¬ÁíÒ»·½Ã棬Borg·Ç³£Ç¿µ÷ÈçºÎ¶ÔÒ»¸ö´ó¹æÄ£µÄ·þÎñÆ÷¼¯Èº×ö³ö¸üºÏÀíµÄ³éÏó£¬Ê¹µÃ¿ª·¢Õß¿ÉÒÔÏñ¶Ô´ýһ̨PCÒ»Ñù·½±ãµØ¹ÜÀí×Ô¼ºµÄËùÓÐÈÎÎñ¡£ÕâÓëMesosÏÖÔÚÖ÷ÍÆµÄ¹ÛµãÊÇÒ»Öµģ¬Í¬Ê±Ò²ÊÇBorgͬPaaSÀàÏîÄ¿±ÈÈçFlynn¡¢Deis¡¢Cloud FoundryµÈÇø±ð¿ªÀ´µÄÒ»¸öÖ÷ÒªÌØÕ÷£º¼´Borg£¬ÒÔ¼°KubernetesºÍMesosµÈ£¬¶¼²»ÊÇÒ»¸öÃæÏòÓ¦ÓõIJúÎï¡£

ʲô½ÐÃæÏòÓ¦Óã¿

¾ÍÊÇÒÔÓ¦ÓÃΪÖÐÐÄ¡£ÏµÍ³Ô­ÉúΪÓû§Ìá½»µÄÖÆÆ·ÌṩһϵÁеÄÉÏ´«¡¢¹¹½¨¡¢´ò°ü¡¢ÔËÐС¢°ó¶¨·ÃÎÊÓòÃûµÈ½Ó¹ÜÔËά¹ý³ÌµÄ¹¦ÄÜ¡£ÕâÀàϵͳһ°ã»áÇø·Ö¡±Ó¦Ó᰺͡±·þÎñ¡°£¬²¢ÇÒÒÔÆ½Ì¨×Ô¼º¶¨ÒåµÄ·½Ê½Îª¡±Ó¦Óá°£¨±ÈÈçJava³ÌÐò£©Ìṩ¾ßÌåµÄ¡±·þÎñ¡°£¨±ÈÈçMySQL·þÎñ£©¡£ÃæÏòÓ¦ÓÃÊÇPaaSµÄÒ»¸öºÜÖØÒªµÄÌØµã¡£

ÁíÒ»·½Ã棬BorgÇ¿µ÷µÄÊǹæÄ£¶þ×Ö¡£ÎÄÕÂͨƪ¶à´ÎÇ¿µ÷ÁËGoogleÄÚ²¿ÅÜÔÚBorgÉϵÄ×÷ÒµÊýÁ¿¡¢ÒÔ¼°±»BorgÍйܵĻúÆ÷ÊýÁ¿Ö®ÅÓ´ó¡£±ÈÈçÎÒÃÇ´«Í³ÈÏÖªÉϵġ°Éú²ú¼¶±ð¼¯Èº¡±ÔÚÎÄÕÂÖлù±¾ÉÏÊôÓÚTinyµÄ·¶³ë£¬¶øBorgËæ±ãÒ»¸öMediumµÄ¼ÆËãµ¥ÔªÄóöÀ´¶¼ÊÇÒ»¼ÒÖдóÐÍÆóÒµÊý¾ÝÖÐÐĵĹæÄ££¨10K¸ö»úÆ÷£©¡£ÕâÒ²Ó¦Ö¤ÁËÌÔ±¦±ÏÐþÀÏ´óÔø¾­Ëµ¹ýµÄ£º¡°¹æÄ£¾ø¶ÔÊÇÍÆ¶¯¼¼Êõ·¢Õ¹µÄ×î¹Ø¼üÒòËØ¡±¡£

BorgÀï·þÎñÆ÷µÄ»®·ÖÈçÏ£º Site = Ò»×éÊý¾ÝÖÐÐÄ£¨Cluster£©£¬ Cluster = Ò»×鼯Ëãµ¥Ôª£¨Cell£©£¬ Cell = Ò»×é»úÆ÷¡£ ÆäÖмÆËãµ¥Ôª£¨Cell£©ÊÇ×î³£Óõļ¯ÈºÀà±ð¡£

2.1 Job£¬Task

¼ÈÈ»Borg²»¹ØÐÄ¡°Ó¦Óᱺ͡°·þÎñ¡±µÄÇø±ð£¬Ò²²»ÒÔÓ¦ÓÃΪÖÐÐÄ£¬ÄÇôËüÐèÒª½Ó¹ÜºÍÔËÐеÄ×÷ÒµÊÇʲô£¿

ÊÇJob¡£

BorgÎÄÕÂÀï¶ÔJobµÄ¶¨ÒåºÜ¼òµ¥£¬¾ÍÊǶà¸öÈÎÎñ£¨Task£©µÄ¼¯ºÏ£¬¶øËùνTask¾ÍÊÇÅÜÔÚLinuxÈÝÆ÷ÀïµÄÓ¦Óýø³ÌÁË¡£ÕâÑù¿´ÆðÀ´JobÊDz»ÊǾ͵ÈͬÓÚKubernetesÀïµÄPod£¨ÈÝÆ÷×飩Ĩ£¿

Æäʵ²»È»¡£JobÓ³Éäµ½KubernetesÖеϰ£¬ÆäʵµÈͬÓÚÓû§Ìá½»µÄ¡°Ó¦Óá±£¬ÖÁÓÚÕâ¸öÓ¦ÓÃÔËÐÐÁ˼¸¸ö¸±±¾Pod£¬Ã¿¸öPodÀïÓÖÔËÐÐ×ÅÄÄЩÈÝÆ÷£¬Óû§²¢²»ÐèÒª¹ØÐÄ¡£Óû§Ö»ÖªµÀ£¬ÎÒÃÇ·ÃÎÊÕâ¸ö·þÎñ£¬Ó¦¸Ã·µ»ØÄ³¸ö½á¹û£¬¾Í¹»ÁË¡£

¾Ù¸öÀý×Ó£¬ÒòΪ¸ß¿ÉÓõÈÔ­Òò£¬Óû§³£³£»áÔÚKubernetesÀï´´½¨²¢Æô¶¯Èô¸É¸öһģһÑùµÄPod£¨Õâ¸ö¹¦ÄÜÊÇͨ¹ýKubernetesµÄReplication ControllerʵÏֵģ©¡£ÕâЩһģһÑùµÄPod¡°¸±±¾¡±µÄ¸÷ÏîÅäÖúÍÈÝÆ÷ÄÚÈݵȶ¼ÍêÈ«Ïàͬ£¬ËûÃdzéÏó³ÉÒ»¸öÂß¼­ÉϵĸÅÄî¾ÍÊÇJob¡£

ÓÉÓÚJobÊÇÒ»¸öÂß¼­ÉϵĸÅÄBorgʵ¼ÊÉϸºÔð¹ÜÀíºÍµ÷¶ÈµÄʵÌå¾ÍÊÇTask¡£Óû§µÄsubmit¡¢kill¡¢update²Ù×÷Äܹ»´¥·¢Task״̬»ú´ÓPendingµ½RunningÔÙµ½DeadµÄµÄ×ªÒÆ£¬ÕâÒ»µãÂÛÎÄÀïÓÐÏêϸµÄͼ½â¡£ÖµµÃÒ»ÌáµÄÊÇ£¬×÷Õß»¹Ç¿µ÷ÁËTaskÊÇͨ¹ýÏÈSIGTERM£¬Ò»¶¨Ê±¼äºóºóÔÙSIGKILLµÄ·½Ê½À´±»É±ËÀµÄ£¬ËùÒÔTaskÔÚ±»É±ËÀǰÓÐÒ»¶¨Ê±¼äÀ´½øÐС°ÇåÀí£¬±£´æ×´Ì¬£¬½áÊøÕýÔÚ´¦ÀíµÄÇëÇó²¢ÇҾܾøÐµÄÇëÇ󡱵Ť×÷¡£

2.2 Alloc

BorgÖУ¬ÕæÕýÓëPod¶ÔÓ¦µÄ¸ÅÄîÊÇAlloc¡£

AllocµÄÖ÷Òª¹¦ÄÜ£¬¾ÍÊÇÔÚһ̨»úÆ÷ÉÏ¡°»®¡±Ò»¿é×ÊÔ´³öÀ´£¬È»ºóÒ»×éTask¾Í¿ÉÒÔÔËÐÐÔÚÕⲿ·Ö×ÊÔ´ÉÏ¡£ÕâÑù£¬¡°³¬Ç×ÃÜ¡±¹ØÏµµÄTask¾Í¿ÉÒÔ±»·ÖÔÚͬһ¸öAllocÀ±ÈÈçÒ»¸ö¡°TomcatÓ¦ÓᱺÍËüµÄ¡°logstash·þÎñ¡±¡£

KubernetesÖÐPodµÄÉè¼ÆÓëAllocÈç³öÒ»ÕÞ£ºÊôÓÚͬһ¸öPodµÄDockerÈÝÆ÷¹²ÏíNetwork NamepaceºÍvolume£¬ÕâЩÈÝÆ÷ʹÓÃlocalhostÀ´½øÐÐͨÐÅ£¬¿ÉÒÔ¹²ÏíÎļþ£¬ÈκÎʱºò¶¼»á±»µ±×÷Ò»¸öÕûÌåÀ´½øÐе÷¶È¡£

ËùÒÔ£¬AllocºÍPodµÄÉè¼ÆÆäʵ¶¼ÊÇÔÚ×ñÑ­¡°Ò»¸öÈÝÆ÷Ò»¸ö½ø³Ì¡±µÄÄ£ÐÍ¡£¾­³£ÓÐÈËÎÊ£¬ÎÒ¸ÃÈçºÎÔÚDockerÈÝÆ÷ÀïÅܶà¸ö½ø³Ì£¿Æäʵ£¬ÕâÖÖÐèÇó×îºÃÊÇͨ¹ýÀàËÆPodÕâÖÖ·½·¨À´½â¾ö£ºÃ¿¸ö½ø³Ì¶¼ÅÜÔÚÒ»¸öµ¥¶ÀµÄÈÝÆ÷ÀȻºóÕâЩÈÝÆ÷ÓÖͬÊôÓÚÒ»¸öPod£¬¹²ÏíÍøÂçºÍÖ¸¶¨µÄvolume¡£ÕâÑù¼ÈÄÜÂú×ãÕâЩ½ø³ÌÖ®¼äµÄ½ôÃÜЭ×÷£¨±ÈÈçͨ¹ýlocalhost»¥Ïà·ÃÎÊ£¬Ö±½Ó½øÐÐÎļþ½»»»£©£¬ÓÖÄܱ£Ö¤Ã¿¸ö½ø³Ì²»»á¼·Õ¼ÆäËû½ø³ÌµÄ×ÊÔ´£¬ËüÃÇ»¹ÄÜ×÷Ϊһ¸öÕûÌå½øÐйÜÀíºÍµ÷¶È¡£Èç¹ûûÓÐKubernetesµÄ»°£¬Pod¿ÉÒÔʹÓá°Docker in Docker¡±µÄ°ì·¨À´Ä£Ä⣬¼´Ê¹ÓÃÒ»¸öDockerÈÝÆ÷×÷ΪPod£¬ÕæÕýÐèÒªÔËÐеĽø³Ì×÷ΪDockerÈÝÆ÷ǶÌ×ÔËÐÐÔÚÕâ¸öPodÈÝÆ÷ÖУ¬ÕâÑùËüÃÇÖ®¼ä»¥²»¸ÉÉæ£¬ÓÖÄÜ×÷ΪÕûÌå½øµ÷¶È¡£

ÁíÍ⣬Kubernetesʵ¼ÊÉÏûÓÐJobÕâ¸ö˵·¨£¬¶øÊÇÖ±½ÓÒÔPodºÍTaskÀ´³éÏóÓû§µÄÈÎÎñ£¬È»ºóʹÓÃÏàͬµÄLabelÀ´±ê¼ÇͬÖʵÄPod¸±±¾¡£ÕâºÜ´ó³Ì¶ÈÊÇÒòΪÔÚBorgÖÐJob Task AllocµÄ×ö·¨À»á³öÏÖ¡°½»²æ¡±µÄÇé¿ö£¬±ÈÈçÊôÓÚ²»Í¬JobµÄTask¿ÉÄÜ»áÒòΪ¡°³¬Ç×ÃÜ¡±¹ØÏµ±»»®·Öµ½Í¬Ò»¸öAllocÖУ¬¾¡¹Ü´ËʱJobÖ»ÊǸöÂß¼­¸ÅÄÕ⻹ÊÇ»á¸øÏµÍ³µÄ¹ÜÀí´øÀ´ºÜ¶à²»·½±ã¡£

2.3 JobµÄ·ÖÀà

BorgÖеÄJob°´ÕÕÆäÔËÐÐÌØÐÔ»®·ÖΪÁ½ÀࣺLRS£¨Long Running Service£©ºÍbatch jobs¡£

ÉÏÊöÁ½ÖÖ»®·ÖÔÚ´«Í³µÄPaaSÖÐÒ²ºÜ³£¼û¡£LRSÀà·þÎñ¾ÍÏñÒ»¸ö¡°ËÀÑ­»·¡±£¬±ÈÈçÒ»¸öWeb·þÎñ¡£ËüÍùÍùÐèÒª·þÎñÓÚÓû§»òÕ߯äËü×é¼þ£¬¹Ê¶ÔÑÓʱÃô¸Ð¡£µ±È»ÂÛÎÄÀïGoogle¾ÙµÄLRSÀý×Ó¾ÍÒª¸ß´óÉϲ»ÉÙ£¬±ÈÈçGmail¡¢Google Docs¡£

¶øbatch jobsÀàÈÎÎñ×îµäÐ͵ľÍÊÇMap-ReduceµÄjob£¬»òÕ߯äËüÀàËÆµÄ¼ÆËãÈÎÎñ¡£ËüÃǵÄÖ´ÐÐÍùÍùÐèÒª³ÖÐøÒ»¶Îʱ¼ä£¬µ«ÊÇ×îÖÕ¶¼»áÍ£Ö¹£¬Óû§ÐèÒªËѼ¯²¢»ã×ÜÕâЩjob¼ÆËãµÃµ½µÄ½á¹û»òÕßÊÇjob³ö´íµÄÔ­Òò¡£ËùÒÔBorgÔÚGoogleÄÚ²¿Æðµ½ÁËYARNºÍMesosµÄ½ÇÉ«£¬ºÜ¶àÏîĿͨ¹ýÔÚBorgÖ®ÉϹ¹½¨frameworkÀ´Ìá½»²¢Ö´ÐÐÈÎÎñ¡£BorgÀïÃæ»¹Ö¸³ö£¬batch job¶Ô·þÎñÆ÷˲ʱµÄÐÔÄܲ¨¶¯ÊDz»Ãô¸ÐµÄ£¬ÒòΪËü²»»áÏñLRSÒ»ÑùÐèÒªÁ¢¿ÌÏìÓ¦Óû§µÄÇëÇó£¬ÕâÒ»µã¿ÉÒÔÀí½â¡£

±È½ÏÓÐÒâ˼µÄÊÇ£¬BorgÖдó¶àÊýLRS¶¼»á±»¸³Óè¸ßÓÅÏȼ¶²¢»®·ÖΪÉú²ú»·¾³¼¶±ðµÄÈÎÎñ£¨prod£©£¬¶øbatch jobÔò»á±»¸³ÓèµÍÓÅÏȼ¶£¨non-prod£©¡£ÔÚʵ¼Ê»·¾³ÖУ¬prodÈÎÎñ»á±»·ÖÅäºÍÕ¼Óô󲿷ֵÄCPUºÍÄÚ´æ×ÊÔ´¡£ÕýÊÇÓÉÓÚÓÐÁËÕâÑùµÄ»®·Ö£¬BorgµÄ¡°×ÊÔ´ÇÀÕ¼¡±Ä£ÐͲŵÃÒÔʵÏÖ£¬¼´prodÈÎÎñ¿ÉÒÔÕ¼ÓÃnon-prodÈÎÎñµÄ×ÊÔ´£¬ÕâÒ»µãÎÒÃǺóÃæ»áרÃÅ˵Ã÷¡£

¶Ô±ÈKubernetes£¬ÎÒÃÇ¿ÉÒÔ·¢ÏÖÔÚLRSÉ϶¨ÒåÉÏÊÇÓëBorgÀàËÆµÄ£¬µ«ÊÇĿǰKubernetesÈ´²»ÄÜÖ§³Öbatch job£ºÒòΪ¶ÔÓ¦µÄJob Controller»¹Ã»ÓÐʵÏÖ¡£ÕâÒâζ×ŵ±Ç°KubernetesÉÏÒ»¸öÈÝÆ÷ÖеÄÈÎÎñÖ´ÐÐÍê³ÉÍ˳öºó£¬»á±»Replication ControllerÎÞÌõ¼þÖØÆô¡£KubernetesÉв»Äܰ´ÕÕÓû§µÄÐèÇóÈ¥ËѼ¯ºÍ»ã×ÜÕâЩÈÎÎñÖ´ÐеĽá¹û¡£

2.4 ÓÅÏȼ¶ºÍÅä¶î

Ç°ÃæÒѾ­Ìáµ½ÁËBorgÈÎÎñÓÅÏȼ¶µÄ´æÔÚ£¬ÕâÀïÏêϸ½éÉÜÒ»ÏÂÓÅÏȼ¶µÄ»®·Ö¡£

BorgÖаÑÓÅÏȼ¶·ÖÀàΪ¼à¿Ø¼¶¡¢Éú²ú¼¶¡¢ÅúÈÎÎñ¼¶¡¢¾¡Á¦¼¶£¨Ò²½Ð²âÊÔ¼¶£©¡£ÆäÖÐ¼à¿Ø¼¶ºÍÉú²ú¼¶µÄÈÎÎñ¾ÍÊÇÇ°ÃæËù˵µÄprodÈÎÎñ¡£ÎªÁ˱ÜÃâÔÚÇÀÕ¼×ÊÔ´µÄ¹ý³ÌÖгöÏÖ¼¶ÁªµÄÇé¿ö´¥·¢Á¬Ëø·´Ó¦£¨AÇÀÕ¼B£¬BÇÀÕ¼C£¬CÔÙÇÀÕ¼D£©£¬Borg¹æ¶¨prodÈÎÎñ²»ÄÜ»¥ÏàÇÀÕ¼¡£

Èç¹û˵ÓÅÏȼ¶¾ö¶¨Á˵±Ç°¼¯ÈºÀïµÄÈÎÎñµÄÖØÒªÐÔ£¬Åä¶îÔò¾ö¶¨ÁËÈÎÎñÊÇ·ñ±»ÔÊÐíÔËÐÐÔÚÕâ¸ö¼¯ÈºÉÏ¡£

¾¡¹ÜÎÒÃǶ¼ÖªµÀ£¬¶ÔÓÚÈÝÆ÷À´Ëµ£¬CGroupÖеÄÅä¶îÖ»ÊÇÒ»¸öÏÞÖÆ¶ø²¢·ÇÕæÕý¸î¾ÝµÄ×ÊÔ´Á¿£¬µ«ÊÇÎÒÃDZØÐëΪ¼¯ÈºÉ趨һ¸ö±ê×¼À´±£Ö¤Ìá½»À´ÈÎÎñ²»»áÏò¼¯ÈºË÷Òª¹ý·Ö¶àµÄ×ÊÔ´¡£BorgÖÐÅä¶îµÄÃèÊö·½·¨ÊÇ£º¸ÃÓû§µÄÈÎÎñÔÚÒ»¶Îʱ¼äÄÚÔÚijһ¸ö¼ÆËãµ¥ÔªÉÏÔÊÐíÇëÇóµÄ×î´ó×ÊÔ´Á¿¡£ÐèÒªÔÙ´ÎÖØÉ꣬Åä¶îÒ»¶¨ÊÇÈÎÎñÌύʱ¾ÍÐèÒªÑéÖ¤µÄ£¬ËüÊÇÈÎÎñºÏ·¨ÐÔµÄÒ»²¿·Ö¡£

¼ÈÈ»ÊÇÅä¶î£¬¾Í´æÔÚ³¬ÂôµÄÇé¿ö¡£ÔÚBorgÖУ¬ÔÊÐí±»³¬ÂôµÄÊÇnon-prodµÄÈÎÎñ£¬¼´ËüÃÇÔÚij¸ö¼ÆËãµ¥ÔªÉÏÇëÇóµÄ×ÊÔ´¿ÉÄܳ¬³öÁËÔÊÐíµÄ¶î¶È£¬µ«ÊÇÔÚÔÊÐí³¬ÂôµÄÇé¿öÏÂËüÃÇÈÔÈ»ÓпÉÄܱ»ÏµÍ³½ÓÊÜ£¨ËäÈ»ºÜ¿ÉÄÜÓÉÓÚ×ÊÔ´²»×ã¶øÔÝʱ½øÈëPending״̬£©¡£¶øÓÅÏȼ¶×î¸ßµÄÈÎÎñÔò±»BorgÈÏΪÊÇÏíÓÐÎÞÏÞÅä¶îµÄ¡£

ÓëKubernetesÀàËÆµÄÊÇ£¬BorgµÄÅä¶îÒ²ÊǹÜÀíÔ±¾²Ì¬·ÖÅäµÄ¡£Kubernetesͨ¹ýÓû§¿Õ¼ä£¨namespace£©À´ÊµÏÖÁËÒ»¸ö¼òµ¥µÄ¶à×â»§Ä£ÐÍ£¬È»ºóΪÿһ¸öÓû§¿Õ¼äÖ¸¶¨Ò»¶¨µÄÅä¶î£¬±ÈÈ磺

apiVersion: v1beta3
kind: ResourceQuota
metadata:
name: quota
spec:
hard:
cpu: "20"
memory: 10Gi
pods: "10"
replicationcontrollers: "20"
resourcequotas: "1"
services: "5"

µ½ÕâÀÎÒÃÇÓбØÒª¶à˵һ¾ä¡£ÏñBorg¡¢KubernetesÒÔ¼°MesosÕâÀàÏîÄ¿£¬ËüÃǰÑϵͳÖÐËùÓÐÐèÒª¶ÔÏó¶¼³éÏó³ÉÁËÒ»ÖÖ¡°×ÊÔ´¡±±£´æÔÚ¸÷×Եķֲ¼Ê½¼üÖµ´æ´¢ÖУ¬¶ø¹ÜÀíÔ±ÔòʹÓÃÈçÉÏËùʾµÄ¡°×ÊÔ´ÃèÊöÎļþ¡±À´½øÐÐÕâЩ¶ÔÏóµÄ´´½¨ºÍ¸üС£ÕâÑù£¬Õû¸öϵͳµÄÔËÐж¼ÊÇÎ§ÈÆ×Å¡°×ÊÔ´¡±µÄÔöɾ¸Ä²éÀ´Íê³ÉµÄ£¬¸÷×é¼þµÄÖ÷Ñ­»·×ñÑ­×Å¡°¼ì²é¶ÔÏ󡱡¢¡°¶ÔÏó±ä»¯¡±¡¢¡°´¥·¢Ê¼þ¡±¡¢¡°´¦Àíʼþ¡±ÕâÑùµÄÖÜÆÚÀ´Íê³ÉÓû§µÄÇëÇó¡£ÕâÑùµÄϵͳÓÐ×ÅÒ»¸öÃ÷ÏÔµÄÌØµã¾ÍÊÇËüÃÇÒ»°ã¶¼Ã»ÓÐÒýÈëÒ»¸öÏûϢϵͳÀ´½øÐÐʼþÁ÷µÄЭ×÷£¬¶øÊÇʹÓá°ectd¡±»òÕß¡°Zookeeper¡±×÷ΪʼþϵͳµÄºËÐIJ¿·Ö¡£

2.5 Ãû×Ö·þÎñºÍ¼à¿Ø

ÓëMesosµÈ²»Í¬£¬BorgÖÐʹÓõÄÊÇ×Ô¼ÒµÄÒ»ÖÂÐÔ´æ´¢ÏîÄ¿ChubbyÀ´×÷Ϊ·Ö²¼Ê½Ð­µ÷×é¼þ¡£ÕâÆäÖд洢µÄÒ»¸öÖØÒªÄÚÈݾÍÊÇΪÿһ¸öTask±£´æÁËÒ»¸öDNSÃû×Ö£¬ÕâÑùµ±TaskµÄÐÅÏ¢·¢Éú±ä»¯Ê±£¬±ä¸üÄܹ»Í¨¹ýChubby¼°Ê±¸üе½TaskµÄ¸ºÔؾùºâÆ÷¡£ÕâͬKubernetesͨ¹ýWatch¼àÊÓetcdÖÐPodµÄÐÅÏ¢±ä»¯À´¸üзþÎñ´úÀíµÄÔ­ÀíÊÇÒ»ÑùµÄ£¬µ«ÊÇÓÉÓÚʹÓÃÁËÃûΪ¡°Service¡±µÄ·þÎñ´úÀí»úÖÆ£¨Service¿ÉÒÔÀí½âΪÄܹ»×Ô¶¯¸üеĸºÔؾùºâ×é¼þ£©£¬KubernetesÖÐĬÈϲ¢Ã»ÓÐÄÚÖÃÃû×Ö·þÎñÀ´½øÐÐÈÝÆ÷¼äͨÐÅ£¨µ«ÊÇÌṩÁ˲å¼þʽµÄDNS·þÎñ¹©¹ÜÀíԱѡÓã©¡£

ÔÚ¼à¿Ø·½Ã棬BorgÖеÄËùÓÐÈÎÎñ¶¼ÉèÖÃÁËÒ»¸ö½¡¿µ¼ì²éURL£¬Ò»µ©Borg¶¨ÆÚ·ÃÎÊij¸öTaskµÄURLʱ·¢ÏÖ·µ»Ø²»·ûºÏÔ¤ÆÚ£¬Õâ¸öTask¾Í»á±»ÖØÆô¡£Õâ¸ö¹ý³ÌͬKubernetesÔÚPodÖÐÉèÖÃhealth_checkÊÇÒ»ÑùµÄ£¬±ÈÈçÏÂÃæÕâ¸öÀý×Ó£º

apiVersion: v1beta3
kind: Pod
metadata:
name: pod-with-healthcheck
spec:
containers:
- name: nginx
image: nginx
# defines the health checking
livenessProbe:
# an http probe
httpGet:
path: /_status/healthz
port: 80
# length of time to wait for a pod to initialize
# after pod startup, before applying health checking
initialDelaySeconds: 30
timeoutSeconds: 1
ports:
- containerPort: 80

ÕâÖÖ×ö·¨µÄÒ»¸öСȱµãÊÇTaskÖзþÎñµÄ¿ª·¢ÕßÐèÒª×Ô¼º¶¨ÒåºÃÕâЩ/healthzURLºÍ¶ÔÓ¦µÄÏìÓ¦Âß¼­¡£µ±È»£¬ÁíÒ»ÖÖ×ö·¨ÊÇ¿ÉÒÔÔÚÈÝÆ÷ÀïÄÚÖÃһЩ¡°Ì½Õ롱À´Íê³ÉºÜ¶à½¡¿µ¼ì²é¹¤×÷¶ø×öµ½¶ÔÓû§µÄ¿ª·¢¹ý³Ì͸Ã÷¡£

³ýÁ˽¡¿µ¼ì²é£¬Borg¶ÔÈÕÖ¾µÄ´¦ÀíÒ²ºÜÖµµÃ½è¼ø¡£BorgÖÐTaskµÄÈÕÖ¾»áÔÚTaskÍ˳öºó±£ÁôÒ»¶Îʱ¼ä£¬·½±ãÓû§½øÐе÷ÊÔ¡£Ïà±ÈÖ®ÏÂĿǰ´ó¶àÊýPaaS»òÕßÀàËÆÏîÄ¿µÄÈÝÆ÷Í˳öºóÈÕÖ¾¶¼»áÁ¢¼´±»É¾³ý£¨³ý·ÇÓû§×¨ÃÅ×öÁËÈÕÖ¾´æ´¢·þÎñ£©¡£

×îºó£¬BorgÇáÃ赭дµØ´ø¹ýÁ˱£´æevent×öÉ󼯵ŦÄÜ¡£ÕâÆäʵÓëKubernetesµÄevent¹¦ÄÜÒ²ºÜÀàËÆ£¬±ÈÈçKubeµÄÒ»ÌõeventµÄ¸ñʽÀàËÆÓÚ£º

·¢Éúʱ¼ä ½áÊøÊ±¼ä ÖØ¸´´ÎÊý ×ÊÔ´Ãû³Æ ×ÊÔ´ÀàÐÍ ×Óʼþ ·¢ÆðÔ­Òò ·¢ÆðÕß Ê¼þÈÕÖ¾

3. BorgµÄ¼Ü¹¹ÓëÉè¼Æ

BorgµÄ¼Ü¹¹ÓëKubernetesµÄÏàËÆ¶ÈºÜ¸ß£¬ÔÚÿһ¸öCell£¨¹¤×÷µ¥Ôª£©ÀÔËÐÐ×ÅÉÙÁ¿Master½ÚµãºÍ´óÁ¿Worker½Úµã¡£ÆäÖУ¬Borgmaster¸ºÔðÏìÓ¦Óû§ÇëÇóÒÔ¼°ËùÓÐ×ÊÔ´¶ÔÏóµÄµ÷¶È¹ÜÀí£»¶øÃ¿¸ö¹¤×÷½ÚµãÉÏÔËÐÐ×ÅÒ»¸ö³ÆÎªBorgletµÄAgent£¬ÓÃÀ´´¦ÀíÀ´×ÔMasterµÄÖ¸Áî¡£ÕâÑùµÄÉè¼ÆÓëKubernetesÊÇÒ»Öµģ¬KubernetesÕâÁ½ÖÖ½ÚµãÉϵŤ×÷½ø³Ì·Ö±ðÊÇ£º

Master£º
apiserver, controller-manager, scheduler
Minion£º
kube-proxy, kubelet

ËäÈ»ÎÒÃDz»Çå³þBorgÔËÐÐ×ŵŤ×÷½ø³ÌÓÐÄÄЩ£¬µ«µ¥´Ó¹¦ÄÜÃèÊöÀïÃæÎÒÃDz»ÄÑÍÆ²âµ½ÖÁÉÙÔÚMaster½ÚµãÉÏÁ½ÕߵŤ×÷½ø³ÌÓ¦¸ÃÊÇÀàËÆµÄ¡£²»¹ý£¬Èç¹ûÉîÈëµ½ÂÛÎÄÖеÄϸ½ÚµÄ»°£¬ÎÒÃǻᷢÏÖBorgÔÚMaster½ÚµãÉϵŤ×÷Òª±ÈKubernetesÍêÉÆºÜ¶à¡£

3.1 Borgmaster

Ê×ÏÈ£¬BorgmasterÓÉÒ»¸ö¶ÀÁ¢µÄschedulerºÍÖ÷Borgmaster½ø³Ì×é³É¡£ÆäÖУ¬Ö÷½ø³Ì¸ºÔðÏìÓ¦À´×Ô¿Í»§¶ËµÄRPCÇëÇ󣬲¢ÇÒ½«ÕâЩÇëÇó·ÖΪ¡°±ä¸üÀࡱºÍ¡°Ö»¶Á¡±Àà¡£

ÔÚÕâÒ»µãÉÏKubernetesµÄapiserver´¦Àí·½·¨ÀàËÆ£¬kuberµÄAPI·þÎñ±»·ÖΪ¡°¶Áд¡±£¨GET£¬POST£¬PUT£¬DELETE£©ºÍ¡°Ö»¶Á¡±£¨GET£©Á½ÖÖ£¬·Ö±ðÓÉ6443ºÍ7080Á½¸ö²»Í¬µÄ¶Ë¿Ú¸ºÔðÏìÓ¦£¬²¢ÇÒÒªÇó¡°¶Áд¡±¶Ë¿Ú6443Ö»ÄÜÒÔHTTPS·½Ê½½øÐзÃÎÊ¡£Í¬Ñù£¬KubernetesµÄschedulerÒ²ÊÇÒ»¸öµ¥¶ÀµÄ½ø³Ì¡£

µ«ÊÇ£¬Ïà±ÈKubernetesµÄµ¥µãMaster£¬BorgmasterÊÇÒ»¸öÓÉÎå¸ö¸±±¾×é³ÉµÄ¼¯Èº¡£Ã¿Ò»¸ö¸±±¾¶¼ÔÚÄÚ´æÖж¼±£´æÁËÕû¸öCellµÄ¹¤×÷״̬£¬²¢ÇÒʹÓûùÓÚPaxosµÄChubbyÏîÄ¿À´±£´æÕâЩÐÅÏ¢ºÍ±£Ö¤ÐÅÏ¢µÄÒ»ÖÂÐÔ¡£BorgmasterÖеÄLeaderÊÇÒ²ÊǼ¯Èº´´½¨µÄʱºòÓÉPaxosÑ¡¾Ù³öÀ´µÄ£¬Ò»µ©Õâ¸öLeaderʧ°Ü£¬Chubby½«¿ªÊ¼ÐÂÒ»ÂÖµÄÑ¡¾Ù¡£ÂÛÎÄÖÐÖ¸³ö£¬Õâ¸öÖØÑ¡¾Ùµ½»Ö¸´Õý³£µÄ¹ý³ÌÒ»°ãºÄʱ10s£¬µ«ÊÇÔڱȽϴóµÄCellÀïµÄ¼¯Èº»áÓÉÓÚÊý¾ÝÁ¿ÅÓ´ó¶øÑÓ³¤µ½Ò»·ÖÖÓ¡£

¸üÓÐÒâ˼µÄÊÇ£¬Borgmaster»¹½«Ä³Ò»Ê±¿ÌµÄ״̬ͨ¹ý¶¨Ê±×ö¿ìÕյķ½Ê½±£´æ³ÉÁËcheckpointÎļþ£¬ÒÔ±ã¹ÜÀíÔ±»Ø¹öBorgmasterµÄ״̬£¬´Ó¶ø½øÐе÷ÊÔ»òÕ߯äËûµÄ·ÖÎö¹¤×÷¡£»ùÓÚÉÏÊö»úÖÆ£¬Borg»¹Éè¼ÆÁËÒ»¸ö³ÆÎªFauxmasterµÄ×é¼þÀ´¼ÓÔØcheckpointÎļþ£¬´Ó¶øÖ±½Ó½øÈëijʱ¿ÌBorgmasterµÄÀúʷ״̬¡£ÔÙ¼ÓÉÏFauxmaster±¾ÉíΪkubeletµÄ½Ó¿ÚʵÏÖÁË¡°×®¡±£¬ËùÒÔ¹ÜÀíÔ±¾Í¿ÉÒÔÏòÕâ¸öFauxmaster·¢ËÍÇëÇóÀ´Ä£Äâ¸ÃÀúʷ״̬Êý¾ÝÏÂBorgmasterµÄ¹¤×÷Çé¿ö£¬ÖØÏÖµ±Ê±ÏßÉϵÄϵͳ״¿ö¡£Õâ¸ö¶ÔÓÚϵͳµ÷ÊÔÀ´ËµÕæµÄÊǷdz£ÓÐÓᣴËÍ⣬ÉÏÊöFauxmaster»¹¿ÉÒÔÓÃÀ´×öÈÝÁ¿¹æ»®£¬²âÊÔBorgϵͳ±¾ÉíµÄ±ä¸üµÈµÈ¡£Õâ¸öFauxmasterÒ²ÊÇÂÛÎÄÖеÚÒ»´¦ÁíÎÒÃÇÑÛǰһÁÁµÄµØ·½¡£

ÉÏÊöÐ©ÌØÐÔʹµÃBorgÔÚMaster½ÚµãµÄÆóÒµ¼¶ÌØÐÔÉÏÃ÷ÏÔ±ÈKubernetesÒª³ÉÊìµÃ¶à¡£µ±È»£¬ÖµµÃÆÚ´ýµÄÊÇKubeµÄ¸ß¿ÉÓð汾µÄMasterÒ²ÒѾ­½øÈëÁË×îºó½×¶Î£¬Ó¦¸ÃºÜ¿ì¾ÍÄÜ·¢²¼ÁË¡£

3.2 BorgµÄµ÷¶È»úÖÆ

Óû§¸øBorgÐÂÌá½»µÄÈÎÎñ»á±»±£´æÔÚ»ùÓÚPaxosµÄÒ»ÖÂÐÔ´æ´¢Öв¢¼ÓÈëµ½µÈ´ý¶ÓÁС£BorgµÄscheduler»áÒì²½µØÉ¨ÃèÕâ¸ö¶ÓÁÐÖеÄÈÎÎñ£¬²¢¼ì²éµ±Ç°ÕýÔÚ±»É¨ÃèµÄÕâ¸öÈÎÎñÊÇ·ñ¿ÉÒÔÔËÐÐÔÚij̨»úÆ÷ÉÏ¡£ÉÏÊöɨÃèµÄ˳Ðò°´ÕÕÈÎÎñÓÅÏȼ¶´Ó¸ßµ½µÍÀ´Round-Robin£¬ÕâÑùÄܹ»±£Ö¤¸ßÓÅÏȼ¶ÈÎÎñµÄ¿ÉÂú×ãÐÔ£¬±ÜÃâ¡°ÏßÍ·×èÈû¡±µÄ·¢Éú£¨Ä³¸öÈÎÎñÒ»Ö±²»ÄÜÍê³Éµ÷¶Èµ¼ÖÂËüºóÃæµÄËùÓÐÈÎÎñ¶¼±ØÐë½øÐеȴý£©¡£Ã¿É¨Ãèµ½Ò»¸öÈÎÎñ£¬Borg¼´Ê¹Óõ÷¶ÈËã·¨À´¿¼²ìµ±Ç°CellÖеÄËùÓлúÆ÷£¬×îÖÕÑ¡ÔñÒ»¸öºÏÊʵĽڵãÀ´ÔËÐÐÕâ¸öÈÎÎñ¡£

´ËËã·¨·ÖÁ½½×¶Î£º

µÚÒ»£¬¿ÉÐÐÐÔ¼ì²é¡£Õâ¸ö¼ì²éÿ¸ö»úÆ÷ÊÇËùÓзûºÏÈÎÎñ×ÊÔ´ÐèÇóºÍÆäËüÔ¼Êø£¨±ÈÈçÖ¸¶¨µÄ´ÅÅÌÀàÐÍ£©£¬ËùÒԵõ½µÄ½á¹ûÒ»°ãÊǸö»úÆ÷ÁÐ±í¡£ÐèҪעÒâµÄÊÇÔÚ¿ÉÐÐÐÔ¼ì²éÖУ¬Ò»Ì¨»úÆ÷¡°×ÊÔ´ÊÇ·ñ¹»ÓᱻῼÂǵ½ÇÀÕ¼µÄÇé¿ö£¬ÕâÒ»µãÎÒÃǺóÃæ»áÏêϸ½éÉÜ¡£

µÚ¶þ£¬´ò·Ö¡£Õâ¸ö¹ý³Ì´ÓÉÏÊö¿ÉÐеĻúÆ÷ÁбíÖÐͨ¹ý´ò·ÖÑ¡Ôñ³ö·ÖÊý×î¸ßµÄÒ»¸ö¡£

ÕâÀïÖØµã¿´´ò·Ö¹ý³Ì¡£BorgÉè¼ÆµÄ´ò·Ö±ê×¼ÓÐÈçϼ¸ÖÖ£º

1.¾¡Á¿±ÜÃâ·¢ÉúµÍÓÅÏȼ¶ÈÎÎñµÄ×ÊÔ´±»ÇÀÕ¼£»Èç¹û±ÜÃâ²»ÁË£¬ÔòÈñ»ÇÀÕ¼µÄÈÎÎñÊýÁ¿×îÉÙ¡¢ÓÅÏȼ¶×îµÍ£»

2.ÌôÑ¡ÒѾ­°²×°ÁËÈÎÎñÔËÐÐËùÐèÒÀÀµµÄ»úÆ÷£»

3.ʹÈÎÎñ¾¡Á¿·Ö²¼ÔÚ²»Í¬µÄ¸ß¿ÉÓÃÓòµ±ÖУ»

4.»ìºÏ²¿Êð¸ßÓÅÏȼ¶ºÍµÍÓÅÏȼ¶ÈÎÎñ£¬ÕâÑùÔÚÁ÷Á¿·åֵͻȻ³öÏֺ󣬸ßÓÅÏȼ¶¿ÉÒÔÇÀÕ¼µÍÓÅÏȼ¶µÄ×ÊÔ´£¨ÕâÒ»µãºÜÓÐÒâ˼£©¡£

BorgÆäÊµÔø¾­Ê¹ÓùýE-PVMÄ£ÐÍ£¨¼òµ¥µÄ˵¾ÍÊǰÑËùÓдò·Ö¹æÔò°´ÕÕÒ»¶¨Ëã·¨×ۺϳÉÒ»ÖÖ¹æÔò£©À´½øÐдò·ÖµÄ¡£µ«ÊÇÕâÖÖµ÷¶ÈµÄ½á¹ûÊÇÈÎÎñ×îÖÕ±»Æ½¾ùµÄ·ÖÉ¢µ½ÁËËùÓлúÆ÷ÉÏ£¬²¢ÇÒÿ̨»úÆ÷ÉÏÁô³öÁËÒ»¶¨µÄ¿ÕÏпռäÀ´Ó¦¶ÔѹÁ¦·åÖµ¡£ÕâÖ±½ÓÔì³ÉÁËÕû¸ö¼¯Èº×ÊÔ´µÄË鯬»¯¡£

ÓëÉÏÊö×ö·¨µÄÏà·´µÄÊÇÁíÒ»¸ö¼«¶Ë£¬¼´¾¡Á¿ÈÃËùÓеĻúÆ÷¶¼ÌîÂú¡£µ«ÊÇÕ⽫µ¼ÖÂÈÎÎñ²»ÄܺܺõÄÓ¦¶ÔÍ»·¢·åÖµ¡£¶øÇÒBorg»òÕßÓû§¶ÔÓÚÈÎÎñËùÐèµÄ×ÊÔ´Åä¶îµÄ¹À¼ÆÍùÍù²»ÊǺÜ׼ȷ£¬ÓÈÆäÊǶÔÓÚbatch jobÀ´Ëµ£¬ËüÃÇËùÇëÇóµÄ×ÊÔ´Á¿Ä¬ÈÏÊǺÜÉٵģ¨ÌرðÊÇCPU×ÊÔ´£©¡£ËùÒÔÔÚÕâÖÖµ÷¶È²ßÂÔÏÂbatch job»áºÜÈÝÒ×±»Ìî³äÔÚÏÁСµÄ×ÊÔ´·ì϶ÖУ¬Õâʱһµ©Óöµ½Ñ¹Á¦·åÖµ£¬²»½öbatch job»á³öÎÊÌ⣬ÓëËüÔËÐÐÔÚͬһ̨»úÆ÷ÉϵÄLRSÒ²»áÔâÑê¡£

¶øBorg²ÉÓõÄÊÇ¡°»ì²¿¼ÓÇÀÕ¼¡±µÄģʽ£¬ÕâÖÖ×ö·¨¼¯³ÉÁËÉÏÊöÁ½ÖÖÄ£Ð͵ÄÓŵ㣺¼æ¹Ë¹«Æ½ÐÔºÍÀûÓÃÂÊ¡£ÕâÆäÖУ¬LRSºÍbatch jobµÄ»ì²¿ÒÔ¼°ÓÅÏȼ¶ÌåϵµÄ´æÔÚΪ×ÊÔ´ÇÀÕ¼ÌṩÁË»ù´¡¡£ÕâÑù£¬BorgÔÚ¡°¿ÉÐÐÐÔ¼ì²é¡±½×¶Î¾Í¿ÉÒÔ¿¼ÂÇÒѾ­ÔÚ´Ë»úÆ÷ÉÏÔËÐеÄÈÎÎñµÄ×ÊÔ´Äܱ»ÇÀÕ¼¶àÉÙ¡£Èç¹ûËãÉÏ¿ÉÒÔÇÀÕ¼µÄÕⲿ·Ö×ÊÔ´ºó´Ë»úÆ÷¿ÉÒÔÂú×ã´ýµ÷¶ÈÈÎÎñµÄÐèÇóµÄ»°£¬ÈÎÎñ¾Í»á±»ÈÏΪ¡°¿ÉÐС±¡£½ÓÏ£¬Borg»á°´ÓÅÏȼ¶µÍµ½¸ß¡°kill¡±Õą̂»úÆ÷ÉϵÄÈÎÎñÖ±µ½Âú×ã´ýÔËÐÐÈÎÎñµÄÐèÇó£¬Õâ¾ÍÊÇÇÀÕ¼µÄ¾ßÌåʵʩ¹ý³Ì¡£µ±È»£¬±»¡°kill¡±µÄÈÎÎñ»áÖØÐ½øÈëÁ˵÷¶È¶ÓÁУ¬µÈ´ýÖØÐµ÷¶È¡£

ÁíÒ»·½ÃæBorgÒ²Ö¸³öÔÚÈÎÎñµ÷¶È²¢Æô¶¯µÄ¹ý³ÌÖУ¬°²×°ÒÀÀµ°üµÄ¹ý³Ì»á¹¹³É80%µÄÆô¶¯ÑÓʱ£¬ËùÒÔµ÷¶ÈÆ÷»áÓÅÏÈÑ¡ÔñÒѾ­°²×°ºÃÁËÕâЩÒÀÀµµÄ»úÆ÷¡£ÕâÈÃÎÒÏëÆðÀ´ÒÔǰʹÓÃVMware¿ª·¢µÄ±àÅÅϵͳBOSHʱ£¬ËüµÄÿһ¸öJob¶¼»áͨ¹ýspecÃèÊö×Ô¼ºÒÀÀµÄÄЩ°ü£¬±ÈÈçGCC¡£ËùÒÔµ±Ê±ÎªÁ˽Úʡʱ¼ä£¬ÎÒÃÇ»áÔÚ²¿Êð¿ªÊ¼Ç°Ê¹Óýű¾²¢·¢µØÔÚËùÓÐÄ¿±ê»úÆ÷Éϰ²×°ºÃͨÓõÄÒÀÀµ£¬±ÈÈçRuby¡¢GCCÕâЩ£¬È»ºó²Å¿ªÊ¼ÕæÕýµÄ²¿Êð¹ý³Ì¡£ ÊÂʵÉÏ£¬BorgÒ²ÓÐÒ»¸öÀàËÆµÄ°ü·Ö·¢µÄ¹ý³Ì£¬¶øÇÒʹÓõÄÊÇÀàËÆBitTorrentµÄЭÒé¡£

ÕâʱÎÒÃǻص½KubernetesÉÏÀ´£¬²»ÄÑ·¢ÏÖËüÓëBorgµÄµ÷¶È»úÖÆ»¹±È½ÏºÜÀàËÆµÄ¡£Õ⵱ȻҲ¾ÍÒâζ×ÅKubernetesÖÐûÓÐ½è¼ø´«ËµÖеÄOmega¹²Ïí״̬µ÷¶È£¨·´µ¹ÊÇMesosµÄRoadmapÀï³öÏÖÁËÀàËÆ¡±ÀÖ¹Û²¢·¢¿ØÖÆ¡°µÄ¸ÅÄ¡£

KubernetesµÄµ÷¶ÈËã·¨Ò²·ÖΪÁ½¸ö½×¶Î£º

1.¡°Predicates¹ý³Ì¡±£ºÉ¸Ñ¡³öºÏ¸ñµÄMinion£¬ÀàËÆBorgµÄ¡°¿ÉÐÐÐÔ¼ì²é¡±¡£ÕâÒ»½×¶ÎKubernetesÖ÷ÒªÐèÒª¿¼²ìÒ»¸öMinionµÄÌõ¼þ°üÀ¨£º

2.ÈÝÆ÷ÉêÇëµÄÖ÷»ú¶Ë¿ÚÊÇ·ñ¿ÉÓÃ

3.Æä×ÊÔ´ÊÇ·ñÂú×ãPodÀïËùÓÐÈÝÆ÷µÄÐèÇ󣨽ö¿¼ÂÇCPUºÍMemory£¬ÇÒûÓÐÇÀÕ¼»úÖÆ£©

4.volumeÊÇ·ñ³åÍ»

5.ÊÇ·ñÆ¥ÅäÓû§Ö¸¶¨µÄLabel

6.ÊDz»ÊÇÖ¸¶¨µÄhostname

¡°Priorities¹ý³Ì¡±£º¶Ôͨ¹ýÉÏÊöɸѡµÄMinon´ò·Ö£¬Õâ¸ö´ò·ÖµÄ±ê׼ĿǰºÜ¼òµ¥£º

1.Ñ¡Ôñ×ÊÔ´¿ÕÏиü¶àµÄ»úÆ÷

2.ÊôÓÚͬһ¸öÈÎÎñµÄ¸±±¾Pod¾¡Á¿·Ö²¼ÔÚ²»Í¬»úÆ÷ÉÏ

´Óµ÷¶ÈË㷨ʵÏÖÉϲîÒìÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½KubernetesÓëBorgµÄ¶¨Î»ÓÐ×ÅÃ÷ÏԵIJ»Í¬¡£BorgµÄµ÷¶ÈËã·¨ÖÐ×ÊÔ´ÇÀÕ¼ºÍÈÎÎñ»ì²¿ÊÇÁ½¸ö¹Ø¼üµã£¬ÕâÓ¦ÊÇ¿¼Âǵ½ÁËÕâЩ²ßÂÔÔÚGoogleÅÓ´óµÄ»úÆ÷¹æÄ£ÉÏËùÄÜ´øÀ´µÄ¾Þ´óµÄ³É±¾Ï÷¼õ¡£ËùÒÔBorgÔÚËã·¨µÄÉè¼ÆÉÏÇ¿µ÷Á˻첿״̬϶Ô×ÊÔ´·ÖÅäºÍÈÎÎñ·Ö²¼µÄÓÅ»¯¡£¶øKubernetesÃ÷ÏÔÏë°Ñµ÷¶È¹ý³Ì¾¡Á¿¼ò»¯£¬ÆäÁ½¸ö½×¶ÎµÄµ÷¶ÈÒÀ¾Ý¶¼²ÉÓÃÁ˼òµ¥´Ö±©µÄÓ²ÐÔ×ÊÔ´±ê×¼£¬¶øÃ»ÓÐÖ§³ÖÈκÎÇÀÕ¼²ßÂÔ£¬Ò²Ã»ÓÐÓÅÏȼ¶µÄ˵·¨¡£µ±È»£¬ÓÐÒ»²¿·ÖÔ­ÒòÊÇ¿ªÔ´ÏîÄ¿µÄÓû§Ò»°ã¶¼Ï²»¶¶¨ÖÆ×Ô¼ºµÄµ÷¶ÈËã·¨£¬´ÓÕâÒ»µãÉÏÀ´ËµÈ·ÊµÊÇ¡°less is more¡±¡£×ÜÖ®£¬×îÖյĽá¹ûÊǾ¡¹Ü±£ÁôÁËBorgµÄÓ°×Ó£¨±Ï¾¹×÷Õߺܶ඼ÊÇÒ»»ïÈË£©£¬Kubernetesµ÷¶ÈÆ÷µÄʵÏÖÉÏÈ´ÍêÈ«ÊÇÁíÍâÒ»ÌõµÀ·£¬È·ÇеÄ˵¸üÏñSwarmÕâÖÖÆ«Ïò¿ª·¢ÕߵıàÅÅÏîÄ¿¡£

´ËÍ⣬»¹ÓÐÒ»¸ö·Ç³£ÖØÒªµÄÒòËØ²»µÃ²»ÌᣬÄǾÍÊÇDockerµÄ¾µÏñ»úÖÆ¡£BorgÔÚGoogle·þÒÛÆÚ¼äËùʹÓõÄLinuxÈÝÆ÷ËäȻӦÓü«¹ãÇÒ¹æÄ£ÅӴ󣬵«ºËÐŦÄÜ»¹ÊÇLXCµÄ±äÌå»òÕßÇ¿»¯°æ£¬Ç¿µ÷µÄÊǸôÀ빦ÄÜ¡£ÕâÒ»µã´ÓËüµÄ¿ªÔ´°æÏîÄ¿lmctfyµÄʵÏÖ£¬ÒÔ¼°ÂÛÎÄÀïÌáµ½ÐèÒª¿¼ÂÇÈÎÎñÒÀÀµ°üµÈϸ½ÚÉÏÎÒÃǶ¼¿ÉÒÔÍÆ¶Ï³öÀ´¡£¿ÉÊÇDockerµÄÀ÷º¦Ö®´¦¾ÍÔÚÓÚÖ±½Ó·â×°ÁËÕû¸öJobµÄÔËÐл·¾³£¬ÕâʹµÃKubernetesÔÚµ÷¶Èʱ¿ÉÒÔ²»±Ø¿¼ÂÇÒÀÀµ°üµÄ·Ö²¼Çé¿ö£¬²¢ÇÒ¿ÉÒÔʹÓÃPodÕâÑùµÄ¡°Ô­×ÓÈÝÆ÷×顱¶ø²»Êǵ¥¸öÈÝÆ÷×÷Ϊµ÷¶Èµ¥Î»¡£µ±È»£¬ÕâÒ²ÌáʾÁËÎÒÃǽ«À´½øÐÐDockerÈÝÆ÷µ÷¶Èʱ£¬ÆäʵҲ¿ÉÒ԰ѾµÏñµÄ·Ö²¼¿¼ÂÇÔÚÄÚ£º±ÈÈçÊÂÏÈÔÚËùÓй¤×÷½ÚµãÉÏ´«»ù´¡¾µÏñ£»ÔÚ´ò·Ö½×¶ÎÓÅÏÈÑ¡ÔñÈÎÎñËùÐè»ù´¡¾µÏñ¸üÍ걸µÄ½Úµã¡£

Èç¹û¶ÁÕßÏë¸ÐÊÜÒ»ÏÂûÓоµÏñµÄDockerÈÝÆ÷ÊÇʲôÊָУ¬²»·ÁÈ¥ÊÔÓÃÒ»ÏÂDockerConÉϸոչÙÐûµÄruncÏîÄ¿£¨https://github.com/opencontainers/runc£©¡£runcÍêÈ«ÊÇÒ»¸ölibcontainerµÄÖ±½Ó·â×°£¬ÌṩËùÓеÄDockerÈÝÆ÷±Ø±¸¹¦ÄÜ£¬µ«ÊÇûÓоµÏñµÄ¸ÅÄ¼´Óû§ÐèÒª×Ô¼ºÖ¸¶¨rootfs»·¾³£©£¬ÕâÊ®·ÖÌù½ülmctfyµÈ½öרעÓÚ¸ôÀë»·¾³µÄÈÝÆ÷ÏîÄ¿¡£

3.3 Borglet

À뿪ÁËBorgmaster½Úµã£¬ÎÒÃǽÓÏÂÀ´¿´Ò»Ï¹¤×÷½ÚµãÉϵÄBorglet×é¼þ£¬ËüµÄÖ÷Òª¹¤×÷°üÀ¨£º

ÆôÍ£ÈÝÆ÷£¬½øÐÐÈÝÆ÷ʧ°Ü»Ö¸´£¬Í¨¹ýkernel²ÎÊý²Ù×÷ºÍ¹ÜÀíOS×ÊÔ´£¬ÇåÀíϵͳÈÕÖ¾£¬ÊÕ¼¯»úÆ÷״̬¹©Borgmaster¼°ÆäËû¼à¿Ø·½Ê¹Óá£

Õâ¸ö¹ý³ÌÖУ¬Borgmaster»áͨ¹ý¶¨ÆÚÂÖѯÀ´¼ì²é»úÆ÷µÄ״̬¡£ÕâÖÖÖ÷¶¯pollµÄ×ö·¨ºÃ´¦ÊÇÄܹ»´óÁ¿BorgletÖ÷¶¯»ã±¨×´Ì¬Ôì³ÉÁ÷Á¿ÓµÈû£¬²¢ÇÒÄÜ·ÀÖ¹¡°»Ö¸´·ç±©¡±£¨±ÈÈç´óÁ¿Ê§°Üºó»Ö¸´¹ýÀ´µÄ»úÆ÷»áÔÚͬ¶Îһʱ¼ä²»Í£µØÏòBorgmaster·¢ËÍ´óÁ¿µÄ»Ö¸´Êý¾ÝºÍÇëÇó£¬Èç¹ûûÓкÏÀíµÄÓµÈû¿ØÖÆÊֶΣ¬ÕߺܿÉÄÜ»á×èÈûÕû¸öÍøÂç»òÕßÖ±½Ó°ÑmasterÍÏ¿åµô£©¡£Ò»µ©ÊÕµ½»ã±¨ÐÅÏ¢ºó£¬³äµ±leaderµÄBorgmaster»á¸ù¾ÝÕâЩÐÅÏ¢¸üÐÂ×Ô¼º³ÖÓеÄCell״̬Êý¾Ý¡£

Õâ¸ö¹ý³ÌÀ¼¯ÈºBorgmasterµÄ¡°ÓÅÔ½ÐÔ¡±Ôٴεõ½ÁËÌåÏÖ¡£BorgmasterµÄÿ¸ö½Úµãά»¤ÁËÒ»·ÝÎÞ״̬µÄ¡°Á´½Ó·ÖƬ£¨link shard£©¡±¡£Ã¿¸ö·ÖƬֻ¸ºÔðÒ»²¿·ÖBorglet»úÆ÷µÄ״̬¼ì²é£¬¶ø²»ÊÇÕû¸öCell¡£¶øÇÒÕâЩ·ÖƬ»¹Äܹ»»ã¼¯²¢diifÕâЩ״̬ÐÅÏ¢£¬×îºóÖ»ÈÃleader»ñÖª²¢¸üÐÂÄÇЩ·¢ÉúÁ˱仯µÄÊý¾Ý¡£ÕâÖÖ×ö·¨ÓÐЧµØ½µµÍÁËBorgmasterµÄ¹¤×÷¸ºÔØ¡£

µ±È»£¬Èç¹ûÒ»¸öBorgletÔÚ¼¸¸öpollÖÜÆÚÄÚ¶¼Ã»ÓлØÓ¦£¬Ëû¾Í»á±»ÈÏΪ崻úÁË¡£Ô­±¾ÔËÐÐÔÚÕû¸ö½ÚµãÉϵÄÈÎÎñÈÝÆ÷»á½øÈëÖØµ÷¶ÈÖÜÆÚ¡£Èç¹û´ËÆÚ¼äBorgletÓëmasterµÄͨÐŻָ´ÁË£¬ÄÇômaster»áÇëÇóɱËÀÄÇЩ±»Öص÷¶ÈµÄÈÎÎñÈÝÆ÷£¬ÒÔ·ÀÖØ¸´¡£BorgletµÄÔËÐв¢²»ÐèÒªÒÀÀµÓÚBorgmaster£¬¼°Ê±masterÈ«²¿å´»ú£¬ÈÎÎñÒÀÈ»¿ÉÒÔÕý³£ÔËÐС£

ÓëBorgÏà±È£¬KubernetesÔòÑ¡ÔñÁË·½ÏòÏà·´µÄ״̬»ã±¨²ßÂÔ¡£µ±Ò»¸ökubelet½ø³ÌÆô¶¯ºó£¬Ëü»áÖ÷¶¯½«×Ô¼º×¢²á¸ømaster½ÚµãÉϵÄapiserver¡£½ÓÏÂÀ´£¬kubelet»á¶¨ÆÚÏòapiserver¸üÐÂ×Ô¼º¶ÔÓ¦µÄnodeµÄÐÅÏ¢£¬Èç¹ûÒ»¶Îʱ¼äÄÚûÓиüУ¬Ôòmaster¾Í»áÈÏΪ´Ë¹¤×÷½ÚµãÒѾ­·¢Éú¹ÊÕÏ¡£ÉÏÊö»ã±¨ÐÅÏ¢µÄÊÕ¼¯Ö÷ÒªÒÀÀµÓÚÿ¸ö½ÚµãÉÏÔËÐеÄCAdvisor½ø³Ì£¬¶ø²¢·ÇÖ±½ÓÓë²Ù×÷ϵͳ½øÐн»»¥¡£

ÊÂʵÉÏ£¬²»Ö¹kubelet½ø³Ì»áÕâô×ö¡£KubernetesÀïµÄËùÓÐ×é¼þЭ×÷£¬¶¼»á²ÉÓÃÖ÷¶¯È¥¸úapiServer½¨Á¢ÁªÏµ£¬½ø¶øÍ¨¹ýapiserverÀ´¼àÊÓ¡¢²Ù×÷etcdµÄ×ÊÔ´À´Íê³ÉÏàÓ¦µÄ¹¦ÄÜ¡£

¾Ù¸öÀý×Ó£¬Óû§Ïòapiserver·¢ÆðÇëÇó±íʾҪ´´½¨Ò»¸öPod£¬ÔÚµ÷¶ÈÆ÷Ñ¡ÔñºÃÁËij¸ö¿ÉÓõÄminionºóapiserver²¢²»»áÖ±½Ó¸æËßkubelet˵ÎÒÒªÔÚÕâ¸ö»úÆ÷ÉÏ´´½¨ÈÝÆ÷£¬¶øÊÇ»á¼ä½ÓÔÚetcdÖд´½¨Ò»¸ö¡°boundPod¡±¶ÔÏó£¨Õâ¸ö¶ÔÏóµÄÒâ˼ÊÇÎÒÒªÔÚij¸ökubelet»úÆ÷Éϰ󶨲¢ÔËÐÐij¸öPod£©¡£Óë´Ëͬʱ£¬kubeletÔò¶¨Ê±µØÖ÷¶¯¼ì²éÓÐûÓиú×Ô¼ºÓйصġ°boundPod¡±£¬Ò»µ©·¢ÏÖÓУ¬Ëü¾Í»á°´ÕÕÕâ¸ö¶ÔÏó±£´æµÄÐÅÏ¢ÏòDocker Daemon·¢Æð´´½¨ÈÝÆ÷µÄÇëÇó¡£

ÕâÕýÊÇKubernetesÉè¼ÆÖС°Ò»ÇнÔ×ÊÔ´¡±µÄÌåÏÖ£¬¼´ËùÓÐʵÌå¶ÔÏó£¬ÏûÏ¢µÈ¶¼ÊÇ×÷ΪetcdÀï±£´æÆðÀ´µÄÒ»ÖÖ×ÊÔ´À´¶Ô´ý£¬ÆäËûËùÓÐЭ×÷ÕßҪôͨ¹ý¼àÊÓÕâЩ×ÊÔ´µÄ±ä»¯À´²ÉÈ¡¶¯×÷£¬ÒªÃ´¾ÍÊÇͨ¹ýapiserverÀ´¶ÔÕâЩ×ÊÔ´½øÐÐÔöɾ¸Ä²é¡£

ËùÒÔ£¬ÎÒÃÇ¿ÉÒÔ°ÑKubernetesµÄʵÏÖ·½·¨ÃèÊöΪ¡°ÃæÏòetcdµÄ±à³Ìģʽ¡±¡£ÕâÒ²ÊÇKubernetesÓëBorgÉè¼ÆÉϵÄÓÖÒ»¸ö²»Í¬µã£¬Ëµµ½µ×»¹ÊǹæÄ£´æÔڵIJîÒ죺¼´KubernetesÈÏΪËü¹ÜÀíµÄ¼¯ÈºÖв»»á´æÔÚÄÇô¶à»úÆ÷ͬʱÏòapiserver·¢Æð´óÁ¿µÄÇëÇó¡£ÕâÒ²´ÓÁíÒ»¸ö·½Ãæ±íÏÖ³öÁË×÷ÕßÃǶÔetcdÏìÓ¦ÄÜÁ¦»¹ÊDZȽÏÓÐÐÅÐĵġ£

3.4 ¿ÉÀ©Õ¹ÐÔ

ÕâÒ»½ÚÀïÓëÆä˵ÔÚBorgµÄ¿ÉÀ©Õ¹ÐÔ£¬µ¹²»Èç˵ÔÚ½²ËüÈçºÎͨ¹ý¸÷ÖÖÓÅ»¯ÊµÏÖÁ˸ü¸ßµÄ¿ÉÀ©Õ¹ÐÔ¡£

Ê×ÏÈÊǶÔBorgmasterµÄ¸Ä½ø¡£×î³õµÄBorgmaster¾ÍÊÇÒ»¸öͬ²½Ñ­»·£¬ÔÚÑ­»·¹ý³ÌÖÐ˳Ðò½øÐÐÓû§ÇëÇóÏìÓ¦¡¢µ÷¶È¡¢Í¬Borglet½»»¥µÈ¶¯×÷¡£ËùÒÔBorgµÄµÚÒ»¸ö¸Ä½ø¾ÍÊǽ«µ÷¶ÈÆ÷¶ÀÁ¢³öÀ´£¬´Ó¶øÄܹ»Í¬ÆäËû¶¯×÷²¢ÐÐÖ´ÐС£¸Ä½øºóµÄµ÷¶ÈÆ÷ʹÓÃCell¼¯Èº×´Ì¬µÄ»º´æÊý¾ÝÀ´²»¶ÏÖØ¸´ÒÔϲÙ×÷£º

1.´ÓBorgmaster½ÓÊܼ¯ÈºµÄ״̬±ä»¯

2.¸üб¾µØµÄ¼¯Èº×´Ì¬»º´æÊý¾Ý

3.¶ÔÖ¸¶¨µÄTaskÖ´Ðе÷¶È¹¤×÷

4.½«µ÷¶È½á¹û¸æËßBorgmaster

ÕâЩ²Ù×÷×é³ÉÁ˵÷¶ÈÆ÷µÄÍêÕû¹¤×÷ÖÜÆÚ¡£

Æä´Î£¬BorgmasterÉϸºÔðÏìÓ¦Ö»¶ÁÇëÇóºÍͬBorglet½øÐн»»¥µÄ½ø³ÌÒ²±»¶ÀÁ¢³öÀ´£¬Í¨¹ýÖ°ÔðµÄµ¥Ò»ÐÔÀ´±£Ö¤¸÷×ÔµÄÖ´ÐÐЧÂÊ¡£ÕâЩ½ø³Ì»á±»·ÖÅäÔÚBorgmasterµÄ²»Í¬¸±±¾½ÚµãÉÏÀ´½øÒ»²½Ìá¸ßЧÂÊ£¨Ö»¸ºÔðͬ±¾¸±±¾½ÚµãËù¹ÜÀíµÄÄDz¿·ÖWorker½Úµã½øÐн»»¥£©¡£

×îºóÊÇרÃÅÕë¶Ôµ÷¶ÈÆ÷µÄÓÅ»¯¡£

»º´æ»úÆ÷µÄ´ò·Ö½á¹û¡£±Ï¾¹Ã¿´Îµ÷¶È¶¼¸øËùÓлúÆ÷ÖØÐ´òÒ»´Î·ÖȷʵºÜÎÞÁÄ¡£Ö»Óе±»úÆ÷ÐÅÏ¢»òÕßTask·¢ÉúÁ˱仯£¨±ÈÈçÈÎÎñ±»´ÓÕâ¸ö»úÆ÷Éϵ÷¶È×ßÁË£©Ê±£¬µ÷¶ÈÆ÷»º´æµÄ»úÆ÷·ÖÊý²Å»á·¢Éú¸üС£¶øÇÒ£¬Borg»áºöÂÔÄÇЩ²»Ì«Ã÷ÏÔµÄ×ÊÔ´±ä»¯£¬¼õÉÙ»º´æµÄ¸üдÎÊý¡£

»®·ÖTaskµÈ¼ÛÀà¡£BorgµÄµ÷¶ÈËã·¨Õë¶ÔµÄÊÇÒ»×éÐèÇóºÍÔ¼Êø¶¼Ò»ÑùµÄTask£¨µÈ¼ÛÀࣩ¶ø²»Êǵ¥¸öTaskÀ´Ö´Ðеġ£

Ëæ»úÑ¡ÔñÒ»×é»úÆ÷À´×öµ÷¶È¡£ÕâÊǺÜÓÐÒâ˼µÄÒ»ÖÖ×ö·¨£¬¼´Borgµ÷¶ÈÆ÷²¢²»»á°ÑCellÀïµÄËùÓлúÆ÷ÄùýÀ´°¤¸ö½øÐпÉÐÐÐÔ¼ì²é£¬¶øÊDz»¶ÏµØËæ»úÌôѡһ¸ö»úÆ÷À´¼ì²é¿ÉÐÐÐÔ£¬ÅжÏÊÇ·ñͨ¹ý£¬ÔÙÌôÑ¡ÏÂÒ»¸ö£¬Ö±µ½Í¨¹ýɸѡµÄ»úÆ÷´ïµ½Ò»¶¨µÄÊýÄ¿¡£È»ºóÔÙÔÚÕâЩͨ¹ýɸѡµÄ»úÆ÷¼¯ºÏÀï½øÐдò·Ö¹ý³Ì¡£Õâ¸ö²ßÂÔÓëÖøÃûµÄSparrowµ÷¶ÈÆ÷µÄ×ö·¨ºÜÀàËÆ¡£

ÕâЩÓÅ»¯·½·¨´ó´óÌá¸ßÁËBorgµÄ¹¤×÷ЧÂÊ£¬×÷ÕßÔÚÂÛÎÄÖÐÖ¸³öÔÚÉÏÊö¹¦Äܱ»½ûµô£¬ÓÐЩԭÀ´¼¸°ÙÃëÍê³ÉµÄµ÷¶È¹¤×÷ÐèÒª¼¸Ìì²ÅÄÜÍêÈ«Íê³É¡£

4. ¿ÉÓÃÐÔ

BorgÔÚÌá¸ß¿ÉÓÃÐÔ·½ÃæËù×öµÄŬÁ¦Óë´ó¶àÊý·Ö²¼Ê½ÏµÍ³µÄ×ö·¨Ïàͬ¡£±ÈÈ磺

1.×Ô¶¯Öص÷¶Èʧ°ÜµÄÈÎÎñ

2.½«Í¬Ò»JobµÄ²»Í¬ÈÎÎñ·Ö²¼ÔÚ²»Í¬µÄ¸ß¿ÉÓÃÓò

3.ÔÚ»úÆ÷»òÕß²Ù×÷ϵͳÉý¼¶µÄ¹ý³ÌÖÐÏÞÖÆÔÊÐíµÄÈÎÎñÖжϵĴÎÊýºÍͬʱÖжϵÄÈÎÎñÊýÁ¿

4.±£Ö¤²Ù×÷µÄÃݵÈÐÔ£¬ÕâÑùµ±¿Í»§¶Ëʧ°ÜʱËü¿ÉÒÔ·ÅÐĵķ¢ÆðÖØÊÔ²Ù×÷

5.µ±Ò»Ì¨»úÆ÷ʧÁªºó£¬ÈÎÎñÖØµ÷¶ÈµÄËٶȻᱻ¼ÓÒÔÏÞÖÆ£¬ÒòΪBorg²»ÄÜÈ·¶¨Ê§ÁªµÄÔ­ÒòÊÇ´ó¹æÄ£µÄ»úÆ÷ʧ°Ü£¨±ÈÈç¶Ïµç£©£¬»¹ÊDz¿·ÖÍøÂç´íÎó¡£

6.ÈÎÎñʧ°Üºó£¬ÔÚÒ»¶Îʱ¼äÄÚÔÚ±¾µØ´ÅÅ̱£ÁôÈÕÖ¾¼°ÆäËû¹Ø¼üÊý¾Ý£¬ÄÄŶÔÓ¦µÄÈÎÎñÒѾ­±»É±ËÀ»òÕßµ÷¶Èµ½ÆäËûµØ·½ÁË¡£

×îºóÒ²ÊÇ×îÖØÒªµÄ£¬BorgletµÄÔËÐв»ÒÀÀµÓÚmaster£¬ËùÒÔÄÄÅ¿ØÖƽڵãÈ«²¿å´»ú£¬Óû§Ìá½»µÄÈÎÎñÒÀÈ»Õý³£ÔËÐС£

ÔÚÕâÒ»²¿·Ö£¬KubernetesҲûÓÐÌØ±ðµÄÉè¼Æ¡£±Ï¾¹£¬ÔÚÈÎÎñ¶¼ÒѾ­ÈÝÆ÷»¯µÄÇé¿öÏ£¬Ö»ÒªÕýÈ·µØ´¦ÀíºÃÈÝÆ÷µÄµ÷¶ÈºÍ¹ÜÀí¹¤×÷£¬ÈÎÎñ¼¶±ð¸ß¿ÉÓõĴï³É²¢²»ËãÊ®·ÖÀ§ÄÑ¡£

ÖÁ´Ë£¬ÂÛÎĵÄǰËÄÕÂÎÒÃǾͽéÉÜÍêÁË¡£Í¨¹ýÓëKubernetesµÄʵÏÖ×÷±È½Ï£¬ÎÒÃÇËÆºõÄܵõ½Ò»¸ö¡°Ã²ºÏÉñÀ롱µÄ½áÂÛ¡£¼´KubernetesÓëBorg´Ó±íÃæÉÏ¿´·Ç³£ÏàËÆ£ºÏàͬµÄ¼Ü¹¹£¬ÏàËÆµÄµ÷¶ÈËã·¨£¬µ±È»»¹ÓÐͬһ»ï¿ª·¢ÈËÔ±¡£µ«ÊÇÒ»µ©ÎÒÃÇÈ¥ÉîÈëһЩϸ½Ú¾Í»á·¢ÏÖ£¬ÔÚÄ³Ð©ÖØÒªµÄÉè¼ÆºÍʵÏÖÉÏ£¬BorgËÆºõÓÐןÍKubernetes½ØÈ»²»Í¬µÄÈÏʶ£º±ÈÈçÍêÈ«Ïà·´µÄ×ÊÔ´»ã±¨·½Ïò£¬¸´ÔӶȸù±¾²»ÔÚÒ»¸öˮƽÉϵÄMasterʵÏÖ£¨¼¯ÈºVSµ¥µã£©£¬¶Ôbatch jobµÄÖ§³Ö£¨KubernetesĿǰ²»Ö§³Öbatch job£©£¬¶ÔÓÚÈÎÎñÓÅÏȼ¶ºÍ×ÊÔ´ÇÀÕ¼µÄ¿´·¨µÈµÈ¡£

ÕâЩ±¾À´¿ÉÒÔÕÕ°áµÄ¶«Î÷£¬ÎªÊ²Ã´ÔÚKubernetesÓÖ±»ÖØÐÂÉè¼ÆÁËÒ»±éÄØ£¿ÔÚ±¾Îĵĵڶþ²¿·Ö£¬ÎÒÃǽ«Ò»²½²½´øÁì¶ÁÕßÁìÎòÔì³ÉÕâЩ²îÒìµÄÔ­Òò£¬¼´£º×ÊÔ´»ØÊÕºÍÀûÓÃÂÊÓÅ»¯¡£¾´Çë¹Ø×¢¡£

   
2634 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ