±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚDevOpsʱ´ú
,¸ø´ó¼Ò·ÖÏíµÄ¸ü¶àÊǾ۽¹ÔÚ Jenkins ±¾Éí£¬½áºÏ×÷ÕßÔÚ Jenkins ʵ¼ÊʹÓùý³ÌÖкÍÕû¸ö
Jenkins Slave ¹ÜÀíÑÝ»¯µÄ¹ý³ÌµÄ°¸Àý£¬ÕâÑùÄܸø´ó¼Ò´øÀ´¸üºÃµÄ½è¼øºÍ²Î¿¼ÌåÑé¡£ |
|
ÏÂÃæÊÇÖ÷ÒªÒª·ÖÏíµÄËÄ´óÄÚÈÝ£º
Jenkins·Ö²¼Ê½¹¹½¨¼Ü¹¹
»ùÓÚLableµÄSlave¼¯Èº¹ÜÀí
»ùÓÚDocker²å¼þµÄÈÝÆ÷»¯Êµ¼ù
»ùÓÚKubernetesµÄÈÝÆ÷»¯Êµ¼ù
Ò». Jenkins·Ö²¼Ê½¹¹½¨¼Ü¹¹
1.1 ¼Ü¹¹Í¼

Jenkins ·Ö²¼Ê½¼Ü¹¹Ò»¸ö Master ºÍ¶à¸ö Slave Node ·Ö²¼Ê½µÄ¼Ü¹¹¡£
ÔÚ Jenkins Master ÉϹÜÀíÄãµÄÏîÄ¿£¬¿ÉÒÔ°ÑÄãµÄһЩ¹¹½¨ÈÎÎñ·Öµ£µ½²»Í¬µÄ Slave
Node ÉÏÔËÐУ¬Master µÄÐÔÄܾÍÌá¸ßÁË¡£
Èç¹ûµ¥´¿µÄʹÓà Master È¥¹¹½¨£¬³ýÁËÒª³Ðµ£ÏîÄ¿ÉϵıàÒë¡¢²âÊԵȿªÏúÍ⣬»¹»á´ó´óµÄÓ°Ïì Jenkins
Ó¦Óñ¾ÉíÕ¼Óà memory ºÍ CPU ×ÊÔ´¡£
1.2 Jenkins Slave Á¬½Ó·½Ê½

Jenkins Slave Á¬½Ó·½Ê½³£Ê¹ÓÃÏÂÃæÁ½ÖÖ£º
ͨ¹ý SSH Æô¶¯ Slave ´úÀí
ÔÚ Jenkins ÉÏÖ±½ÓÅäÖã¬Ï൱ÓÚ´Ó Master Íù Slave ÉÏÁ¬½Ó£¬´Ó Master ÉÏÖ÷¶¯·¢ÆðµÄÇëÇó¡£
ͨ¹ý JNLP Æô¶¯´úÀí
»ùÓÚ Java Web Start µÄ JNLP µÄÁ¬½Ó£¬´Ó Slave Íù Master Ö÷¶¯µÄ·½Ê½¡£
ÕâÁ½ÖÖÖ÷ÒªµÄÁ¬½Ó·½Ê½£¬ÔÚºóÃæµÄ¼¯Èº slave µÄ¹ÜÀí·½°¸Öж¼»áÉæ¼°µ½¡£
1.3 Jenkins µ÷¶È²ßÂÔ

Óû§ÊÓ½Ç
Ö±½ÓʹÓà slave name,¹¹½¨Ê¹ÓÃÖ¸¶¨ slave
ʹÓà label,¹¹½¨¶àÊýʹÓÃͬһ¸öµÄ slave,ż¶ûʹÓÃÆäËû slave
ϵͳʵÏÖ
consistent hashing algorithm (node,available executors,job
name)
ÿһ¸ö Job ¶¼ÓÐÒ»¸ö¶ÔÓ¦ËùÓÐ Node µÄÓÅÏȼ¶Áбí
ÆäËü²å¼þ
Least Load (https://plugins.jenkins.io/leastload)
Commercial plugin (Even Scheduler Plugin)
ÔÚʹÓõĹý³ÌÖУ¬ÊDz»ÊǶ¼»á¾³£¸Ð¾õµ½ÏÂÃæÁ½ÖÖÇéÐΣº
Èç¹ûÒ»¸öÏîÄ¿µÄ¹¹½¨Ö¸¶¨ÁËÒ»¸ö Slave£¬ÄÇôÕâ¸öÏîÄ¿ËùÓеÄÿ´Î¹¹½¨¶¼Ö»ÓÃÕâ¸öSlave¹¹½¨¡£
Èç¹ûʹÓÃÁËlabel È¥¹ÜÀí¶à¸ö Slave£¬¸øÒ»¸öÏîÄ¿µÄ¹¹½¨Ö¸¶¨ÁËÕâ¸ö label£¬»á·¢ÏÖÕâ¸öÏîÄ¿µÄ¶à´Î¹¹½¨£¬´ó¶àÊý¶¼ÊÇʹÓÃͬһ¸ö
Slave£¬²¢Ã»ÓÐʹÓà label ÀïµÄÆäËü Slave¡£
´Ó Jenkins ±¾ÉíµÄʵÏֽǶÈÀ´Ëµ£¬Jenkins ·ÖÅäËüµÄµ÷¶È²ßÂÔµÄʱºò£¬ÓÐÒ»¸öÒ»ÖÂÐԵĹþÏ£Ëã·¨£¬»á½«ÄãÌí¼ÓµÄ
Slave£¬Ò²¿ÉÒÔ³ÆÎª node ½Úµã£¬ÒÔ¼° node ÉÏÃæ¿ÉÓÃµÄ executors£¬°üÀ¨ job
name£¬×îºóËã³öÀ´Ò»¸öÏ൱ÓÚÄãµÄ job ºÍËùÓÐ Slave ¶ÔÓ¦µÄÓÅÏȼ¶ÁÐ±í£¬»áÑ¡ÔñÓÅÏȼ¶×î¸ßµÄSlaveÈ¥¹¹½¨£¬µ±²»Âú×ãÌõ¼þ»òÕßûÓпÉÓõÄ
executors ʱ£¬²Å»áÑ¡ÓÃÏÂÒ»¸ö½Úµã¡£Õâ¸öÊÇ Jenkins ĬÈϵĵ÷¶È²ßÂÔ£¬¿Éͨ¹ýÆäËü²å¼þÀ´¸Ä±äÕâ¸ö²ßÂÔ£¬Èç
Least Load ²å¼þ£¬Ñ¡ÔñÒ»¸öÊýÄ¿×îÉÙµÄ×î¿ÕÏеĽڵ㡣
¶þ. »ùÓÚ Lable µÄ Slave ¼¯Èº¹ÜÀí
2.1 Android ²úÆ·¸´ÔÓ»·¾³

ÕâÊÇÀÖÊÓ°²×¿²úÆ·µÄ»·¾³¡£
ÒµÎñ²úÆ·²îÒìÐÔ£¬ÒªÖ§³Ö¶à¸ö²úÆ·£¬ÈçÊÖ»ú¡¢µçÊÓ¡¢³µ¡¢ºÐ×Ó¡¢VRµÈ£¬ÎÒËùÔڵijÖÐø¼¯³É²¿ÃÅ£¬È«Ã渺ÔðËùÓÐÉú̬ҵÎñµÄ
CI »·¾³¡£
¶àÖÖ¹¹½¨ÀàÐÍ£¬ÎÒÃdz£¼ûµÄÒµÎñ³¡¾°ÀïÃæ£¬ÓÐ Daily Build£¬Test Build£¬Continiuous
build£¬APK ±àÒëµÈ£¬¹¹½¨µÄÀàÐͲ»Í¬¡£
´úÂëÁ¿´ó£¬ÕâÊǰ²×¿²úÆ·µÄÒ»¸öÌØµã¡£Ïñÿһ¸öTVµÄ´úÂ룬Դ´úÂëÕû¸öÏÂÏÂÀ´¾ÍÊÇ50¶àGB£¬ºÍÒ»¸öÆÕͨµÄ»¥ÁªÍøÓ¦Óã¬ÕæµÄÊDzî±ðÌ«´óÁË¡£
±àÒë¿Õ¼ä´ó£¬Õâô´óµÄ´úÂëÌåÁ¿È¥×ö±àÒ룬ËùÐèµÄ¿Õ¼ä¿ÉÏë¶øÖª£¬Ò»¶¨Òª±ÈÄãµÄ´úÂëÁ¿»¹´ó£¬±àÒëÍêÕû¸ö±àÒë¿Õ¼äÄÜ´ïµ½100-200GB
±àÒëʱ¼ä³¤£¬´úÂëÁ¿´ó£¬±àÒëÐèÒªµÄ¿Õ¼ä¶à£¬ÏàÓ¦µÄËüµÄ±àÒëʱ¼ä¾ÍºÜ³¤¡£ÎÒÃÇÏÖÔÚ²¢ÐеÄÎïÀí»ú24Ïß³ÌÈ¥±à£¬Ò»°ã2-3¸öСʱÍê³ÉÕû¸ö¹ý³Ì¡£
ÒµÎñ¼äÏà¶Ô¶ÀÁ¢¡£ÎÒÃÇÓжà¸ö²úÆ·£¬ÒµÎñÖ®¼ä»¹Ïà¶Ô¶ÀÁ¢£¬Õâ¸ö¶ÀÁ¢ÌåÏÖÔÚÁ½¸ö·½Ã棬һ¸öÊÇÎÒÃDz»Í¬µÄ²úÆ·£¬±ÈÈçÊÖ»úºÍµçÊÓ£¬ÓÐ×Ô¼ºµÄרÊô±àÒë·þÎñÆ÷¡£ÁíÒ»¸öÊÇ·þÎñÆ÷ÉÏÓжÀÁ¢µÄ¹¹½¨»·¾³£¬Ã»ÓÐͳһ£¬ÕâÊÇÒµÎñÖ®¼äµÄ¸´ÔÓÐÔ¾ö¶¨µÄ¡£
·þÎñÆ÷²îÒ죬°æ±¾¡¢CPU¡¢memory¡¢DiskµÈÅäÖò»Ò»Ñù¡£
ÕûÌåÀ´½²£¬ÎÒÃÇËùÃæ¶ÔµÄ°²×¿²úÆ·µÄ CI »·¾³±È½Ï¸´ÔÓ£¬ÏÂÃæµÄÄÚÈÝÒ²½«Î§ÈÆÕâ¸öÍ´µãÀ´½²µÄ¡£
2.2 ÆÕ±éÎÊÌâ

±íÏóÎÊÌ⣺
Slave ºÜ¶à£¬¿ÕÏÐµÄ Slave Ò²ºÜ¶à
¶ÓÁÐÖеȴý¹¹½¨ÈÎÎñºÜ¶à
һЩ¹¹½¨Ê§°Ü,±©Â¶ workspace ¿Õ¼ä²»×ãÎÊÌâ
ÔÒò·ÖÎö£º
ÒµÎñ¼ä,±àÒë»·¾³²»Í³Ò»,²»ÄÜ¿çÒµÎñ¹²Ïí
ÒµÎñÄÚ,ÌØ¶¨ jobs Ö±½Ó°ó¶¨Ìض¨ slave,²¢·¢Á¿ÊÜÏÞÓÚ executor ÊýÄ¿
Slave ÉϹ¹½¨ workspace µÄÒÅÁô,Õ¼ÓôóÁ¿¿Õ¼ä
ÒµÎñÁ¿Ôö´ó,н¨ Jobs Ôö¶à,Æ¿¾±³öÏÖ
ÎÒÃÇÔÚʹÓà Jenkins ¹ý³ÌÖб©Â¶³öһЩÎÊÌ⣬ÎÒÃǹÒÔØµÄ Slave ºÜ¶à£¬¿ÕÏеÄÒ²ºÜ¶à£¬Ã»Óб»³ä·ÖÀûÓÃÆðÀ´¡£ÁíÍ⣬¹ÒÔØÄÇô¶àµÄ
Slave£¬ÎÒÃǶÓÁÐÖеȴý¹¹½¨µÄ»¹ºÜ¶à£¬Ï൱ÓÚÄÇô¶àµÄ Slave ûÓнâ¾ö²¢·¢µÄÎÊÌ⣬ÈÎÎñ»¹Ôڵȴý¡£»¹ÓÐһЩ¹¹½¨Ê§°ÜÁË£¬ÊÇÒòΪ
workspace ¿Õ¼ä²»×ã¡£
Ϊʲô»á²úÉúÉÏÊöÎÊÌâÄØ£¿
Ò»¸öÊÇÒµÎñ¼ä£¬±àÒë»·¾³²»Í³Ò»£¬²»ÄÜ¿çÒµÎñ¹²Ïí¡£Ò»Ì¨ Jenkins ÉϹÒÁËÄÇô¶à Slave ¸ø²»Í¬ÒµÎñÓã¬Ïà¶ÔÀ´Ëµ²»Í¬µÄÒµÎñÖ»ÄÜʹÓÃÕâô¶à
Slave ÖеÄһЩ×Ó¼¯¡£
µÚ¶þÊÇÒµÎñÄÚ£¬ÓÐЩҵÎñµÄͬѧȥÅäÖà job µÄʱºò£¬Ö±½Ó°ó¶¨Ìض¨µÄ Slave£¬Ï൱ÓÚÖ±½Ó°ó¶¨ÄǸö
Slave µÄ name£¬¶ø²»ÊÇ Lable£¬ÕâЩ job ËùÓеĹ¹½¨Ö»ÒÀÀµÓÚÕâ¸ö Slave£¬Õâ¸ö²¢·¢¾ÍÊܵ½±»°óµÄ
Slave µÄ executor ÊýÄ¿ÏÞÖÆ¡£
µÚÈý£¬Slave ÉϹ¹½¨ workspace ÓÐÒÅÁô£¬Õ¼ÓôóÁ¿¿Õ¼ä¡£Ò»¸ö job ¹¹½¨½áÊøºó£¬±àÒëµÄ¿Õ¼äÒÅÁôÔÚ
Slave ÉÏ£¬³ý·ÇÔÚÄãµÄ job ÀïÅäÖÃÁËÇåÀí¹æÔò¡£
´ËÍâ£¬Ëæ×ÅÒµÎñÁ¿Ôö´ó£¬Ð½¨µÄ job Ò²¶à£¬ÂýÂýÆ¿¾±¾Í³öÏÖÁË£¬ÎÊÌâÒ²¾Í¶¼±©Â¶³öÀ´ÁË¡£
ÔÚ×ùµÄÍ¬Ñ§Ëæ×ÅÄãÃǹ«Ë¾ÒµÎñµÄ·¢Õ¹£¬ÕâЩÎÊÌâ¿ÉÄܶ¼»áÓöµ½µÄ¡£
2.3 ÓÅ»¯¸Ä½ø

Ãæ¶ÔÉÏÊöµÄÎÊÌâÎÒÃǸÄÈçºÎ½øÐÐÓÅ»¯¸Ä½øÄØ£¿ÎÒÃÇ×öÁËËĸö·½ÃæµÄÓÅ»¯£º
ͬÖÊ slaves Ìí¼ÓÏàͬ Label,ͬÀàÐÍ jobs ʹÓà Label ½øÐй¹½¨
ÊÊÁ¿Ôö´ó slave µÄ executor ÊýÄ¿
¶¨Ê±É¨ÃèÇåÀí slaves ÉÏµÄ·ÏÆú jobs µÄÒÅÁô workspace
ÒµÎñ jobs ÅäÖà workspace ÇåÀí¹æÔò
ÏÂÃæÏ¸ËµÏ¡£
ÎÒÃǰÑÎÒÃÇͬÖÊ Slaves Ìí¼ÓÏàͬ Lable£¬Óà Lable À´¹ÜÀíÎÒµÄ Slaves£¬Ç°ÃæÓÐ˵µ½ÎÒÃǵÄÒµÎñ²»Í¬µÄ²úÆ·Ïߣ¬Ï൱ÓÚÎÒÃǵıàÒë»·¾³²»Ò»Ñù£¬Í¬Ò»ÌײúÆ·£¬°ÑͬÖÊ
Slaves ͨ¹ý Lable ʹÓã¬Í¬ÀàÐÍ jobs ¿ÉÒÔʹÓà Lable ½øÐй¹½¨¡£
ÊÊÁ¿Ôö´ó executor ÊýÄ¿£¬Ò»¶¨»áÔö´ó²¢·¢Á¿¡£ÎªÊ²Ã´ÊÇÊÊÁ¿£¿±àÒëÏ൱ÓÚÎÒÃÇÓÃÎïÀí»ú24Ï̲߳¢·¢È¥ÅÜ£¬¸ù¾ÝÒµÎñµÄ³¡¾°²»Í¬£¬ÎÒÃÇÊÇÊÊÁ¿µÄ¡£±ÈÈçÔÀ´Ò»¸öÎïÀí»úÖ»ÅäÒ»¸ö£¬¸ù¾ÝÓеIJúÆ·ÏßµÄ
job ûÓÐÏûºÄÄÇô¶àµÄ CPU¡¢memory£¬±àÒëʱ¼äÒªÇ󲻸ߣ¬ÓÐһЩ Slave ´ÓÒ»¸ö executor
Ôö¼Óµ½Á½¸ö£¬¾ÍÄܽâ¾ö job ²¢·¢Á¿µÄÎÊÌâ¡£
µÚÈý¸öÒª½â¾ö Slaves ÉÏÒÅÁôµÄ±àÒë workspace µÄÎÊÌ⣬¶¨Ê±É¨Ãè Slave ÉϵÄ
workspace¡£ÓÐÁ½µãҪעÒ⣬һµãÊÇÔÚÄãʹÓùý³ÌÖУ¬¿ÉÄÜ»áÆµ·±µÄÖØÃüÃû job£¬Èç¹û°Ñ job
ÖØÃüÃûÁË£¬ÔÀ´µÄ±àÒë¿Õ¼ä¾ÍÁôÏÂÀ´ÁË£¬¾ÍûÓÐÒâÒåÁË¡£ÁíÍ⣬´ÓÒµÎñjobÅäÖÃÉÏ£¬Ò»¶¨ÒªÅäÖÃÏàÓ¦µÄ workspace
ÇåÀí¹æÔò¡£±ÈÈç˵±àÒë½áÊøÁË£¬´«µ½°æ±¾·þÎñÆ÷»òÕßÖÆÆ·²Ö¿â£¬workspace ʵ¼ÊÉÏûÓÐÒâÒ壬¿ÉÒÔÔÚ¹¹½¨½áÊøºó¾ÍÅäÖÃÏàÓ¦µÄÇåÀí¹æÔò£¬°Ñ
workspace ÇåÀíµô£¬ÕâÑùÄãµÄ Slave ÉϵĿռä¾Í±»¼°Ê±ÊÍ·ÅÁË£¬¶ø²»»áµÈµ½ÏÂÒ»´Î¹¹½¨µÄʱºòÓÉÓڿռ䲻×ãµ¼ÖµÄʧ°Ü¡£
ÔÚ Jenkins job ÀïÃæ Post build Action£¬ÓÐdelate workspace
ÅäÖ㬿ÉÒÔÕë¶Ô¹´Ñ¡µÄ¹¹½¨µÄ״̬£¨³É¹¦¡¢Ê§°ÜµÈ£©£¬°ÑÕâ¸ö workspace ÇåÀíµô¡£Ä¬ÈÏÇåÀíµÄʱºò»á°ÑÕû¸ö
workspace ¶¼ÇåÀíµô£¬Ò»µã¶¼²»Áô¡£
¿¼Âǵ½ÎÒÃÇÌØÊâµÄÒµÎñ³¡¾°ºÍ±àÒëµÄʱ¼äÌØ±ð³¤£¬ÎÒÃÇÖмäÓÐһЩ±àÒ뻺´æ£¬Èç ccache£¬±£ÁôµÄ»°¶ÔÏ´ι¹½¨µÄ±àÒëËÙ¶ÈÉÏÊÇÓкܴóÌá¸ßµÄ¡£ÔÚÅäÖÃÇåÀí¹æÔòµÄʱºò£¬ÎÒÃÇûÓÐÍêÈ«ÇåÀí£¬¶øÊDZ£ÁôÁËÐèÒªµÄ£¬ÆäËüµÄ¶¼±»ÇåÀíµô¡£´Ó200GBÇåÀíµ½×îºó¿ÉÄÜÖ»ÓÐ50GB£¬Õâ¾ÍÒѾ´ó´óÊÍ·ÅÁ˿ռ䡣
2.4 ÓÅ»¯Ð§¹û

ͨ¹ýÉÏÊöµÄÓÅ»¯¸Ä½ø£¬ÎÒÃÇÈ¡µÃÁËÏÂÃæÈý¸öЧ¹û£º
²¢·¢ÄÜÁ¦ÔöÇ¿,¶ÓÁÐÖй¹½¨ÈÎÎñ»º½â
Slave ¿Õ¼äÓÐЧÀûÂÊÌá¸ß,¿Õ¼ä²»×ãÔì³ÉµÄ¹¹½¨Ê§°Ü´ó´ó¼õÉÙ
Slave ¼¯Èº×ÛºÏ×ÊÔ´ÀûÓÃÂÊÌá¸ß(Disk,CPU),Ç÷ÓÚÒ»ÖÂÐÔ
²¢·¢ÄÜÁ¦ÔöÇ¿£¬À´×ÔÓÚÓà Lable È¥¹ÜÀíÁË£¬±¾Éí Lable ¹ØÁªÁ˶à¸öSlave£¬Õâ¸ö¾ÍÏ൱ÓÚSlave¹¹³ÉÁËÒ»¸ö×ÊÔ´³Ø£¬²¢·¢ÄÜÁ¦¾ÍÌá¸ßÁË¡£´øÀ´µÄÖ±½ÓЧ¹û£¬²¢·¢ÄÜÁ¦Ç¿£¬¶ÓÁÐÖй¹½¨ÈÎÎñµÈ´ýµÄÊýÄ¿¾ÍϽµÁË¡£
Slave ÕûÌåµÄ¿Õ¼äÀûÓÃÂÊÓÐЧÌá¸ß£¬Õâ·½Ãæ×öÁËһЩÇåÀí£¬¿Õ¼ä²»×ãÔì³ÉµÄ¹¹½¨Ê§°Ü´ó´ó¼õÉÙ¡£
Õû¸ö¼¯Èº£¬Í¨¹ý Lable ¹ÜÀí£¬×ÛºÏÀûÓÃÂÊÌá¸ßÁË£¬·´Ó¦µ½ Disk ºÍ CPU ÉÏ¡£ÉÏÃæÁ½¸öͼ£¬×ó±ßÊDZàÒë·þÎñÆ÷µÄ
disk£¬Ç°ÃæÃ¿Ò»¸ö Slave ÉÏËüµÄ disk ʹÓÃÂÊÊDz»¾ùºâµÄ£¬Í¨¹ýʹÓà Lable ÒÔºó£¬Ïà¶ÔÀ´Ëµ
job ·Öµ½ Slave Éϸü¼Ó¾ùºâ£¬disk ÂýÂýÇ÷ÓÚÒ»Ö£¬¶øÇÒÊDZ£³Öµ½Ïà¶ÔºÏÀíµÄˮƽ¡£ÓÒ±ßÕâ¿éÊÇ´ÓCPUµÄ½Ç¶È£¬´Óǰ°ë²¿·Ö¿ªÊ¼¿´£¬²»Í¬µÄ
Slave ½ÚµãÉÏ£¬Éϰ벿·ÖÕ⼸̨±àÒëµÄʱºò CPU ÀûÓÃÂʺܸߣ¬µ«Ï°벿·ÖÕ⼸̨·Ç³£¿Õ¡£Ëæ×żÓÁË
Lable ÒÔºó£¬ËüÃǵÄÇ÷ÊÆÇ÷ÓÚÒ»Ö¡£
2.5 Lable ·½°¸·´Ë¼

Õâ¸öÊǶÔʹÓà Lable ¹ÜÀí Slave µÄһЩ×ܽáºÍ·´Ë¼£º
Òæ´¦£º
Slave ×ÊÔ´³Ø»¯,ÕûÌå×ÊÔ´ÀûÓÃÂÊÌá¸ß
²¢·¢Á¿Ôö´ó(ÊÜËùÓÐ slave µÄ executor ÊýÁ¿ÏÞÖÆ)
Slave µÄ¹ÜÀí¶Ô Job ÅäÖÃ͸Ã÷»¯(Job ÅäÖà Label ʹÓÃ)
¾ÖÏÞÐÔ£º
Jenkins ÄÚÖõĵ÷¶È²ßÂÔ,×ÊÔ´ÀûÓò»¾ùºâ
ͬһ¸ö job µÄ¶à´Î¹¹½¨ÇãÏòÓÚʹÓÃͬһ¸ö slave
ͬһ¸ö job µÄ²¢·¢¹¹½¨£¬ÍùÍùʹÓÃͬһ¸ö slave£¬×ÊÔ´¾ºÕùÔì³É¹¹½¨Ê±¼äÔö¼ÓµÈ
ij¼¸¸ö jobs ¹¹½¨£¬ÍùÍùʹÓÃͬһ¸ö slave£¬×ÊÔ´¾ºÕùÔì³É¹¹½¨Ê±¼äÔö¼ÓµÈ
»·¾³¸ôÀëÎÊÌâ
²»Í¬ÀàÐ굀 job ×ÊÔ´ÐèÇó²»Í¬£¬»·¾³¸´Óúó×ÊÔ´µ÷¶ÈÊÇÎÊÌ⣬¼Ó´ó¹ÜÀí³É±¾
»·¾³²»Í³Ò»£¬ÒµÎñµ÷Õû£¬×ÊÔ´ÔÙ·ÖÅäÒª»ØÂ¯Öع¹(°²×°¶ÔÓ¦µÄ¹¤¾ßϵͳµÈ)
»ù´¡ÉèʩһÖÂÐÔÎÊÌâ
¶à¸öÈÎÎñÅÜÔÚͬһ̨×ÊÔ´ÉϵÄDZÔÚ·çÏպͳåÍ»£¬²»¿É±ä»ù´¡ÉèÊ©
»·¾³ÎÊÌâµ¼ÖµÄCIÐÅÈÎÎÊÌ⣬´úÂëû´í£¬ÊÇ»·¾³ÎÊÌâ
Õâ¸ö¾Í²»Õ¹¿ªÀ´ËµÁË£¬ÓÐÀûÓбף¬Ó¦ÒÔʵ¼ÊÐèÇóÇé¿öÀ´½øÐкÏÀíµÄÇ÷±Ü¡£
Èý. »ùÓÚ Docker ²å¼þµÄÈÝÆ÷»¯Êµ¼ù

3.1 APK ±àÒëÐèÇó
APK ±àÒëÐèÇóËùÃæÁÙµÄÏÖ×´Ö÷ÒªÓÐÒÔϼ¸µã£º
µ¥µã±àÒë·þÎñÆ÷Ö§³ÖËùÓÐ APK ±àÒë¹¹½¨
·þÎñÆ÷ÐÔÄܱȽϲî
»·¾³ÒÀÀµ¸´ÔÓ,¹¤¾ßά»¤³É±¾¸ß
¹¹½¨ÈÎÎñ²¢·¢±È½ÏÀ§ÄÑ
¸ÃÈçºÎÈ¥¸Ä½øÕâЩÎÊÌâÄØ£¿ÎÒÃǾö¶¨Ê¹ÓÃÈÝÆ÷»¯£¬»ùÓÚÈÝÆ÷»¯È¥¹¹½¨ Jenkins Slave£¬Ö±½ÓʹÓÃ
Docker ²å¼þ½øÐÐÈÝÆ÷»¯¡£
ÒµÎñµÄÐèÇóÒÀÈ»ÊǵÚÒ»Çý¶¯Á¦¡£
3.2 Docker image ¹Ì»¯±àÒë»·¾³

¹Ì»¯ Docker image ÄÚÈÝ£¬×î»ù±¾µÄÒªÓÐÕ˺źÍȨÏÞ£¬ÀïÃæÒªÓÐÏàÓ¦µÄ¹¹½¨Õ˺ţ¬°üÀ¨È¨ÏÞ¡£ÒòΪ
Docke image ÓпÉÄÜȥϴúÂ룬°æ±¾²Ö¿âµÈµÈÆäËûµÄ¼¯³É£¬¶¼ÐèÒªÏàÓ¦µÄȨÏÞ¡£
ʹÓà Docker ²å¼þÈ¥¹¹½¨£¬Õâ¸ö¾ÍÀàËÆÓÚÆÕͨµÄ Jenkins Slave¡£ÓëÓà SSHD·½Ê½Ò»Ñù£¬Docker
image ±ØÐëÓõ½ JDK ºÍ SSHD¡£
ÁíÍâÔÚÒµÎñÉÏ£¬APK ±àÒëµÄÒÀÀµ¹¤¾ß£¬±ÈÈ粻ͬ°²×¿ SDK/NDK¡¢libs ºÍ¹¤¾ßµÈ¡£
Ôڹ̻¯ Docker image ¹ý³ÌÖл¹ÓÐһЩҪ¿¼ÂǵÄÎÊÌ⣬±ÈÈç Docker image ºÍÒµÎñ²úÆ·ÒÔ¼°²»Í¬°æ±¾¹¤¾ß¼¯µÄ¹ØÏµ¡£ÎÒÃÇÊǶàÌײúÆ·£¬Ôõôȥ¹ÜÀíÄØ£¿ÊÇ×öÒ»¸ö´ó¶øÈ«µÄ
Docker image À´º¸ÇËùÓеϹÊÇÿһ¸ö²úÆ·Ïß×öÒ»¸ö Docker image£¬Ã¿Ò»¸ö²úÆ·ÏßÀ﹤¾ßÓв»Í¬µÄ°æ±¾¡£ÎÒÃÇÏÖÔÚ»ù±¾ÉÏÊǰ´²úÆ·Ïß×ߵ쬱ÈÈçÊÖ»ú¡¢µçÊӵģ¬ÎÒÃǸøËüÒ»Ì×
Docker image¡£
ÁíÍâÊÇ Docker image ×Ô¶¯»¯ÅäÌ×ÉèÊ©£¬Èç×Ô¶¯»¯¹¹½¨¡¢¸üС¢ÉÏ´«¡¢²¿ÊðµÈ£¬ÕâЩÅäÌ׵ĴëÊ©ÐèÒª¶îÍâȥά»¤µÄ£¬ÕâºÍÆÕͨµÄ
Slave ²»Ò»Ñù¡£
3.3 Jenkins ¼¯³É Docker ²å¼þ

ÕâÀïÊÇÎÒÃÇʹÓà Docker ²å¼þµÄÐÅÏ¢£¬Ê¹Óõİ汾ÊÇ0.15.0£¬ËüËùÖ§³ÖµÄÁ¬½Ó·½Ê½Ö»ÄÜÊÇ SSH
µÄÁ¬½Ó·½Ê½¡£´Ó0.16.0°æ±¾¿ªÊ¼Ö§³ÖJNLPµÄÁ¬½Ó·½Ê½¡£(×îа汾ÒѾ²»ÊÇ0.16.2ÁË£¬ÏêϸÐÅÏ¢Çë²é¿´¹Ù·½ÍøÕ¾¡£±àÕß×¢)
²å¼þµÄÅäÖÃÓÐÁ½µãÖµµÃ×¢ÒâµÄ£º
¿ÉÒÔÌí¼Ó1¸ö»òÕß¶à¸ö Docker host µÄÐÅÏ¢£¬Docker Ò²Ìṩһ¸ö Cloud ¼¯Èº£¬Õâ¸ö
Docker host ¿ÉÒÔÀí½â³ÉÎÒÃÇÔÀ´ÆÕͨµÄ Slave¡£
ÿһ¸ö Docker host ÏÂÃæ¿ÉÒÔÌí¼Ó¹ØÁª1¸ö»òÕß¶à¸ö Docker Template¡£
3.4 ÅäÖÃʾÀý

¿´Ò»ÏÂÅäÖÃʾÀý¡£
Name ÒªÖ¸¶¨Ò»¸ö Docker ÅäÖõÄÃû×Ö¡£
Docker URL ÊÇÄã Docker µÄURL£¬Í¨¹ýʲôÑùµÄ·½Ê½È¥Á¬½Ó Docker host¡£
Container Cap ÉèÖò¢·¢ÊýÁ¿¡£
Docker Template ¿ÉÒÔÌí¼Ó¶à¸ö Docker Ä£°å£¬ÕâÀïÖ»ÊÇÁÐÁËÒ»¸ö£¬Ã¿¸ö Docker
Ä£°åʵ¼ÊÉÏÊÇ´ÓÄÄÀï¿ÉÒÔ»ñµÃÄãµÄ Docker image¡£
Launch method ÓÐÒ»¸öÁ¬½Ó·½Ê½£¬µ±Ê±Õâ¸ö²å¼þÖ»Ö§³ÖSSH£¬ÎÒÃÇÖ»ÄÜͨ¹ýSSHµÄ·½Ê½¡£
3.5 Docker²å¼þ·´Ë¼

Õâ¸öÊǶÔʹÓà Docker ²å¼þµÄһЩ×ܽáºÍ·´Ë¼£º
Òæ´¦£º
ÈÝÆ÷»¯(»·¾³±ê×¼»¯,¸ôÀëÐÔ,°æ±¾,¿ÉÒÆÖ²ÐÔ µÈµÈ)
ÈÝÆ÷ Slave °´Ð赯ÐÔÊÕËõ,×Ô¶¯´´½¨,ʹÓÃ,Ïú»Ù
×ÊÔ´¹²Ïí
¶à¸ö jobs ʹÓò»Í¬ÈÝÆ÷ slave ¿ÉÒÔÔËÐÐÔÚͬ¸ö Docker host
ͬһ Job ͨ¹ýʹÓà label,Ò²¿ÉÒÔÈù¹½¨ÔËÐÐÔÚ²»Í¬ Docker host ÉϵÄÈÝÆ÷ slave
ÉÏ
²¢·¢Á¿(²å¼þÉ趨 cloud/template Capacity)
¾ÖÏÞÐÔ£º
²å¼þÅäÖÃÖÐ Docker host Óë Docker image µÄÇ¿ñîºÏÐÔ,ÅäÖò»·½±ã
Docker host ÊýÁ¿ºÜ¶àµÄʱºò
Docker image ÐèÒªÅäÖõ½¶à¸ö Docker hostÉϵÄʱºò
ʹÓÃJenkinsÄÚÖõĵ÷¶È²ßÂÔ,×ÊÔ´ÀûÓò»¾ùºâ
Ïàͬ Docker image ÅäÖõ½¶à¸ö Docker hostÉÏ Ê¹ÓÃÏàͬ label µÄʱºò
ʹÓÃÕâ¸ö·½°¸¸øÎÒÃÇ´øÀ´ÁËʲôÑùµÄºÃ´¦£¬ÓÐûÓÐʲôÑùµÄ¾ÖÏÞÐÔÄØ£¿
´øÀ´µÄºÃ´¦ÓУº
µÚÒ»£¬ÈÝÆ÷»¯¡£»·¾³±ê×¼»¯¡¢¸ôÀëÐÔ¡¢±¾Éí Docker image Óа汾£¬Ï൱ÓÚ¶Ô¹¹½¨ÓÐÒ»¸ö°æ±¾¿ØÖÆ£¬»¹ÓпÉÒÆÖ²ÐÔ£¬¹¹½¨Ò»´Î£¬host¶¼¿ÉÒÔÈ¥Åä¶¼¿ÉÒÔȥʹÓá£
µÚ¶þ£¬Í¨¹ý Docker ²å¼þÅäÖÃÁË Cloud Slave ¼Ü¹¹£¬ÈÝÆ÷µÄ Slave ¾Í¿ÉÒÔµ¯ÐÔ½øÐÐÊÕËõ¡£Ò»µãÓÐÁ˹¹½¨ÐèÇó£¬Ëü¾Í»áÈ¥¶¯Ì¬µÄÉú³ÉÒ»¸ö
Docker ÈÝÆ÷¹ÒÔØÎª Jenkins Slave ½øÐй¹½¨¡£¹¹½¨½áÊøÒÔºó£¬Õâ¸öÈÝÆ÷¾Í»á±»×Ô¶¯Ïú»Ù¡£ËùÒÔÕû¸ö¹ý³Ì²»ÔÙÊÇÔÀ´ÄÇÖÖÆÕͨµÄ
Slave ³¤Á¬½ÓµÄ·½Ê½¹ÒÔØ£¬ÕâÖÖÍùÍùʹÓùýÁË£¬¾Í¿´²»µ½ÁË£¬¶¯Ì¬Ïú»ÙÁË¡£
µÚÈý£¬×ÊÔ´Äܵõ½¹²Ïí£¬ÒòΪ¶à¸ö job ÎÒÃÇʹÓò»Í¬µÄÈÝÆ÷ slave£¬¿ÉÒÔÔËÐе½Í¬Ò»¸ö Docker
host£¬Ò²¾ÍÊÇ˵ Docker host ÉÏÎÒÃÇ¿ÉÒÔÅäÖöà¸ö Docker image£¬Ìṩ²»Í¬µÄÄ£°å£¬²»Í¬µÄ
job ¶¼¿ÉÒÔʹÓ㬺ܶà job µÄ¹¹½¨¿ÉÒÔÈÓµ½Í¬Ò»¸÷Docker host ÉÏÈ¥Óá£ÁíÍâͬһ¸ö job£¬Í¨¹ýÅäÖÃ
Lable¿ÉÒÔÈÃÄãµÄ¹¹½¨ÔËÐÐÔÚ²»Í¬µÄ Docker host¡£Ã¿Ò»¸öÈÝÆ÷£¬ÄãÌí¼Ó Docker image×÷Ϊģ°åµÄʱºò£¬¶¼ÓÐÒ»¸ö
Lable£¬Õâ¸öºÍÆÕͨµÄ Slave Ò»Ñù£¬Äã¿ÉÒÔÌí¼ÓÒ»¸ö»ò¶à¸ö Lable¡£
µÚËÄ£¬²¢·¢Á¿£¬ÔÚ²å¼þÀïÉ趨¡£Õû¸ö Cloud£¬Äã¿ÉÒÔÉ趨ÄÜÖ§³Ö¶àÉÙ¸öʵÀý¡£template Capacity
¾ö¶¨ÁËÄã×î´óµÄ²¢·¢Á¿¡£Ã¿Ò»¸öÄ£°å£¬Ã¿Ò»¸ö image Ò²¿ÉÒÔ¿ØÖƵġ£
Óкô¦¾ÍÓв»ºÃµÄµØ·½£¬²å¼þÖÐµÄ Docker host ºÍ Docker image ÊÇÇ¿ñîºÏÐÔ£¬±ØÐëÔÚÿһ¸ö
Docker host ÏÂÃæÅäÖÃÄãÐèÒªµÄÓ¦Óá£ÔÚ Docker host ÊýÁ¿ºÜ¶à£¬Docker image
ÐèÒªÅäÖõ½¶à¸ö Docker host ÉϹ²ÏíµÄʱºò£¬ÕâÖÖÅäÖþͺܲ»·½±ãÁË¡£
ÁíÍ⣬µ÷¶È»¹ÊÇʹÓÃÄÚÖõIJßÂÔ£¬Ò²´æÔÚ²»¾ùºâÐÔ¡£±ÈÈçÓÐÁ½Ì¨ Docker host£¬ÉÏÃæÅäÖÃÁËͬһ¸ö
Docker image£¬ÍùÍùÊÇÏÈÈÔµ½µÚÒ»¸ö Docker hostÉϹ¹½¨¡£
ËÄ. »ùÓÚ Kubernetes µÄÈÝÆ÷»¯Êµ¼ù
Ç°ÃæÍ¨¹ýʹÓà Lable µ½ Docker ²å¼þ£¬ÎÒÃÇÒ»²½²½È¥¸Ä½ø¡£Í¬Ê±Ò²·¢ÏÖ»ùÓÚ Docker µÄÈÝÆ÷»¯£¬»¹ÊÇ´æÔÚÉÏÃæµÄ¾ÖÏÞÐÔ£¬²¢²»ÄÜÂú×ãÎÒÃǵÄÐèÇó£¬Òò´Ë»¹ÊÇÐèÒª½øÒ»²½ÓÅ»¯¿´Äܲ»ÄÜÓиü¸ßµÄÌá¸ß¡£

4.1 What is Kubernetes?
kubernetes£¬Ê¹ÓùýÕâ¸öÈÝÆ÷¹¤¾ßµÄ¿ÉÄܱȽÏÊìϤ¡£¿ªÔ´µÄ£¬¿ÉÒÔ×Ô¶¯»¯£¬ÈÝÆ÷»¯Ò»Ð©Ó¦ÓõIJ¿Êð¡£
Õâ¸öÊÇËüµÄÒ»¸ö¼Ü¹¹Í¼£¬ÕâÀïÃæÓÐÒ»¸ö pod µÄ¸ÅÄÏ൱ÓÚÒ»¸ö pod ¿ÉÒÔÓжà¸ö Container¡£ºóÃæÎÒÃǽ²µ½µÄ
kubernetes ²å¼þ¾ÍÊÇͨ¹ý´´½¨Ò»¸ö pod À´¹ÒÔØÒ»¸öÈÝÆ÷ slave µÄ·½Ê½¡£
4.2 ÒµÎñÐèÇó

ÕâÊÇÎÒÃǵÄÒ»¸öÒµÎñÐèÇó£º
×ÊÔ´ÊÕËõÑÏÖØ,ÒµÎñÐèÒªÕý³£ÔËת
ÈÝÆ÷»¯/±ê×¼»¯,¹¹½¨»·¾³¸ôÀë
K8s×ÊÔ´ÏÞÖÆ,µ÷¶È²ßÂÔ,·þÎñÆ÷×ÊÔ´¹²Ïí
ÆäËû¿¼ÂÇÒòËØÓУº
ÈÝÆ÷»¯¹¹½¨ÐÔÄܶԱÈ
°æ±¾µÄÑ¡Ôñ
Docker registry
Docker imageµÄ¹¹½¨¸üÐÂ×Ô¶¯»¯
¹¹½¨»·¾³¹¤¾ßÒÀÀµ
¹¹½¨ÓÅ»¯(´úÂë mirror,±àÒ뻺´æµÈ)
4.3 Êý¾ÝÑéÖ¤¿ÉÐÐÐÔ

ÕâÊÇÎÒÃÇ×öµÄһЩÊý¾ÝÑéÖ¤£¬Ö®Ç°ÎÒÃÇÊÇ¶Ô APK ±àÒ룬¾ÍÊÇÒ»¸ö¼òµ¥µÄÓ¦Óᣵ«ÊÇÎÒÃÇÒª¶ÔÕû¸ö°²×¿²úÆ·£¬±ÈÈçÊÖ»úµçÊÓ£¬Õâ¸öÁ¿¾Í²»Ò»ÑùÁË¡£ÎÒÃDZØÐëÒª×öºÃ³ä·ÖµÄ²âÊÔ£¬Ê¹ÓÃÈÝÆ÷È¥±àÒëÐÔÄܵ½µ×¿¿²»¿¿Æ×¡£
ͨ¹ýʹÓÃVMÈ¥±àÒëºÍʹÓà Docker ÈÝÆ÷±àÒ룬²»Í¬µÄ³¡¾°×öÁËÒ»¸ö¶Ô±È²âÊÔ£¬±àÒëÐÔÄÜ»ù±¾ÉÏÊÇÒ»Öµġ£ËùÒÔ²ÅϾöÐİÑÎÒÃǵÄÒµÎñ¶¼ÍùÕâÉÏÃæÈ¥Ç¨ÒÆ¡£
4.4 Ñ¡Ôñ°æ±¾

Õâ¸öÊǸø´ó¼ÒÒ»¸ö²Î¿¼£¬ÎÒÃÇËùʹÓõÄһЩÖ÷Òª¹¤¾ß»òÕß×é¼þµÄ°æ±¾¡£
4.5 Docker imageµÄ¹¹½¨

ͨ¹ý Dockerfile ×Ô¶¯»¯¹¹½¨ÎÒÃÇµÄ Docker image¡£ÁíÍ⣬ÎÒÃÇʹÓà Ansible
À´ÅúÁ¿²¿Êð¹ÜÀí»·¾³¡£ÎÒÃǵÄCI¹¹½¨»·¾³×öµÃ·Ç³£²»´íµÄ£¬Õâ¸öµØ·½ÑØÓÃÁËÎÒÃǵÄÓÅÊÆ£¬»ùÓÚ Ansible
playbook µÄ»ù´¡ÉÏÀ´¹¹½¨ÎÒÃǵÄÈÝÆ÷¡£ÉÏÃæÊÇ Dockerfile µÄÒ»¸öʾÀý¡£
4.6 ¹¹½¨»·¾³ÒÀÀµ

Íⲿ¹¤¾ß
µ¥Ò»¿ÉÐÅÊý¾ÝÔ´,µ¥¶À·þÎñÆ÷¹ÜÀí, Ceph´æ´¢
ËùÓÐk8s Node ͨ¹ýNFS¹ÒÔØ
ÈÝÆ÷ͨ¹ý volume ʹÓÃ
´úÂë mirror
ËùÓÐ k8s Node ±¾µØÄ¿Â¼
ÈÝÆ÷ͨ¹ý volume ʹÓÃ
Jenkins job ×Ô¶¯»¯¸üв¿Êð
±àÒë cache
ËùÓÐ k8s Node ±¾µØÄ¿Â¼
ÈÝÆ÷ͨ¹ý volume ʹÓÃ
ÃüÖÐÂÊͳ¼ÆºÍ¶à»ùÏ߸´ÓÃ
4.7 Jenkins ¼¯³É k8s È«¾°

ÕâÀïÊÇÒ»¸öÈ«¾°Í¼¡£Jenkins ÀïÓÐk8sµÄ²å¼þ£¬ÖмäÕâ¿éÊÇk8s¼¯Èº£¬¶ą̀ÎïÀí»ú×ök8sµÄ½Úµã£¬ÎÒÃÇËùÓеıàÒë¹¹½¨Êµ¼ÊÉ϶¼ÊÇͨ¹ý²å¼þÔÚ
Node ÉϽ¨ÁËÒ»¸öÈÝÆ÷£¬Õâ¸öÈÝÆ÷¹ÒÔØÎª Jenkins µÄÒ»¸ö Slave¡£ÓұߺÍÉÏÃæÕâ¿éÊÇÍⲿµÄÒÀÀµ£¬±ÈÈç
cache¡¢Tools¡¢Mirror¡¢HARBOR¡¢GrafanaµÈµÈ¡£
4.8 ʵÏÖЧ¹û

Ç¨ÒÆµ½ÈÝÆ÷»¯ÒÔºó£¬ÎÒÃÇÕû¸ö×ÊÔ´ÀûÓÃÂÊÓÐ50%ÒÔÉϵÄÌáÉý£¬×ÊÔ´³É±¾Ò²Ï½µÁË35%£¬ÁíÍâÊÇÐÂÒµÎñл·¾³ÉÏÏߣ¬Õâ¸ö´øÀ´µÄºÃ´¦Ã»·¨Í³¼Æ£¬Ïà¶ÔÀ´ËµÊǺܴóµÄ¡£
4.9 Kubernetes²å¼þ

ÅäÖÃ Kubernetes API URL
Ìí¼Ó1¸ö»ò¶à¸ökubernetes pod template (image)
kubernetes pod template µÄÆô¶¯ÃüÁî¼ä½ÓʹÓÃJNLP
kubernetes pod template ¿ÉÒÔÅäÖÃ×ÊÔ´ÏÞÖÆ, Ö÷ÒªÊÇCPUºÍMemory×ÊÔ´
4.10 ÅäÖÃʾÀý

ÕâÊÇÒ»¸öÅäÖÃʾÀý£¬×¢Òâ»®Ïß²¿ÃÅ¡£
4.11 ×ÊÔ´ÏÞÖÆÅäÖÃʾÀý

ÕâÊÇÒ»¸ö×ÊÔ´ÏÞÖÆÅäÖÃʾÀý¡£¶ÔCPU¡¢memory×öһЩ×ÊÔ´ÏÞÖÆ¡£
4.12 ÈÝÆ÷Æô¶¯½Å±¾Ê¾Àý

ÈÝÆ÷Æô¶¯½Å±¾Ê¾Àý£¬ÕâÉÏÃæÁ½¸ö²ÎÊý SECERT¡¢SLAVE_NAME£¬ÕâÊÇk8s²å¼þĬÈÏ´«µÝ¹ýÀ´µÄÆô¶¯²ÎÊý¡£JENKINS_URLĬÈÏ
ÉèÖÃΪPODµÄ»·¾³±äÁ¿¡£
4.13 Kubernetes²å¼þ·´Ë¼

ÿһ¸ö·½°¸ÎÒÃÇ×îºó¶¼ÒªÈ¥×öÒ»¸ö·´Ë¼ºÍ×ܽᡣ
k8s²å¼þµÄÒæ´¦£º
ÈÝÆ÷»¯(»·¾³±ê×¼»¯,¸ôÀëÐÔ,°æ±¾,¿ÉÒÆÖ²ÐÔ µÈµÈ)
ÈÝÆ÷Slave °´Ð赯ÐÔÊÕËõ,×Ô¶¯´´½¨,ʹÓÃ,Ïú»Ù
×ÊÔ´¹²Ïí(ËùÓеÄÈÝÆ÷slave¿ÉÒÔ¹²Ïí Kubernetes cluster)
²¢·¢Á¿(²å¼þÉ趨Cloud/Template Capacity)
k8s²å¼þµÄ¾ÖÏÞÐÔ:
Kubernetes Cluster µÄ¸ß¿ÉÓÃÐÔ
µ¥master,Õâ¸öMasterÒª¹ÒÁËËùÓй¹½¨¼¯Èº¶¼¹ÒÁË
ÐèÒªÓû§ÊµÏÖHA·½°¸
4.14 ³ÖÐø¸Ä½ø

³ÖÐø¸Ä½ø·½Ã棺
Jenkins masterÈÝÆ÷»¯
Jenkins Job½Å±¾»¯
Á÷Ë®ÏßÇý¶¯³ÖÐø½»¸¶
4.15 ×ܽá
·½°¸ |
Ч¹û |
×¢Òâµã |
Lable |
1.Slave×ÊÔ´³Ø»¯,ÕûÌå×ÊÔ´ÀûÓÃÂÊÌá¸ß
2.¹¹½¨²¢·¢Á¿
3.SlaveµÄ±ä¶¯¶ÔJobÅäÖÃ͸Ã÷»¯ |
1.»·¾³Ò»ÖÂÐÔ,ÏàͬlabelÏÂslaveÒªÇóͬÖÊ
2.SlaveÉÏjobs¹¹½¨ÒÅÁôworkspaceÎÊÌâ
3.JenkinsĬÈϵ÷¶È²ßÂԵIJ»ÍêÃÀÐÔ |
Docker |
1.ÈÝÆ÷»¯´øÀ´µÄºÃ´¦(»·¾³±ê×¼»¯,¸ôÀë
ÐÔ,°æ±¾,¿ÉÒÆÖ²ÐÔ µÈµÈ)
2.ÈÝÆ÷Slave°´Ð赯ÐÔÊÕËõ,×Ô¶¯´´½¨, ʹÓÃ,Ïú»Ù
3.·þÎñÆ÷×ÊÔ´¹²Ïí
4.¹¹½¨²¢·¢Á¿ÉèÖà |
1.Docker hostÓëDocker
imageµÄÇ¿ñîºÏÐÔ,²å¼þÅäÖò»·½±ãÐÔ
2.ʹÓÃJenkinsĬÈϵ÷¶È²ßÂÔ
3.Docker registry¡¢image¹ÜÀíµÈÅäÌ×¹¤×÷ |
Kubernetes |
1.Docker²å¼þÏàͬµÄÓŵã
2.×ÊÔ´ÉêÇëÏÞÖÆµÈÅäÖÃ,Âú×㲻ͬ¹¹½¨ÐèÇó
3.ʹÓÃKubernetesµ÷¶È²ßÂÔ |
1.Kubernetes ClusterµÄ¸ß¿ÉÓÃÐÔÎÊÌâ
2.¼à¿ØµÄÖØÒªÐÔ
3.Kubernetes¡¢Docker registry¡¢image¹ÜÀíµÈÅäÌ×¹¤×÷ |
Õâ¸öÊÇÉÏÃæÈýÖÖ·½°¸µÄÒ»¸ö×ܽᡣÿһ¸ö·½°¸¶¼ÓкõÄЧ¹ûºÍ×¢Òâµã£¬²»Í¬µÄ·½°¸¶¼Óи÷×Ô²»Í¬µÄÓÅȱµã£¬ËÓÅËÁÓÈ¡¾öÓÚ¾ßÌåʵʩ³¡¾°¡£Ó¦¸ù¾ÝÒµÎñʵ¼ÊÇé¿öÀ´Ñ¡È¡Êʺϵķ½°¸¡£ |