±¾ÎĽ«Ì½ÌÖÈçºÎ¹¹½¨Ò»ÖÖÓÃÓÚ³ÖÐø¼¯³ÉµÄ¼Ü¹¹£¬ÎÒÃDzÉÓÃÁËÓɼòÖÁ·±µÄ·½·¨¡£ÔÚÿһ´Î½«¼Ü¹¹¸´ÔÓ»¯Ê±£¬ÎÒÃÇ»á¸ø³öÔÏȵļòµ¥·½·¨µÄ¾ÖÏÞÐÔ£¬²¢ÑéÖ¤Ìí¼Ó¼Ü¹¹µÄ¸´ÔÓÐÔºÍ/»òÖØ¹¹¼Ü¹¹ÊǺÏÀíµÄ¡£
±¾ÎÄËù¸ø³öµÄÖÕ¼«·½·¨£¬ÊÇ Weaveworks ̽Ë÷³öµÄ×îÊʺÏ×ÔÉíµÄ·½·¨¡£
³ÖÐø½»¸¶
³ÖÐø½»¸¶ÊÇÒÔÆµ·±ÇÒÉÙÁ¿µÄ·½Ê½¶ø·ÇÒ»´ÎÐÔ´óÅúÁ¿µÄ·¢²¼È¥Éú³ÉÈí¼þµÄ·½·¨¡£
Ϊʲô³ÖÐø½»¸¶ºÜÖØÒª£¿½«°æ±¾³ÖÐø²¿Êðµ½Ó¦ÓûáÏû³ý¡°·¢²¼ÈÕ¡±µÄ˼άģʽ¡£ÀíÂÛÉϽ²£¬°æ±¾µÄÍê³ÉÔ½ÊÇÆµ·±£¬ÄÇô°æ±¾µÄ·çÏÕÒ²¾ÍÔ½µÍ¡£¿ª·¢ÈËÔ±»¹¿ÉÔÚ´úÂë¾ÍÐ÷ʱ¸ü¸ÄÓ¦Óã¨ÎÞÂÛÊÇʵÏÖдúÂ룬»òÊǻعöµ½¾É°æ±¾£©¡£ÕâÒâζ×Å¿ÉÒÔ¸ü¿ìµØ¸ü¸ÄÒµÎñ£¬½ø¶øÊ¹ÆóÒµ¸ü¾ß¾ºÕùÁ¦¡£
ÓÉÓÚ΢·þÎñ¼äʹÓÃAPI»¥ÏàͨÐÅ£¬ÐèÒª±£Ö¤°æ±¾¼äÔÚÒ»¶¨³Ì¶ÈÉϵÄÏòºó¼æÈÝÐÔ£¬ÒÔÃâ±ØÐëÔÚÍŶӼä×ö°æ±¾Í¬²½¡£
¸ù¾ÝConway¶¨ÂÉ£¬Èí¼þ³ÊÏÖÁËÆäËùÊôÆóÒµµÄ½á¹¹¡£Òò´Ë£¬Î¢·þÎñºÍÈÝÆ÷²»½öÌåÏÖÁ˼¼ÊõÉϵĸĽø£¬Ò²Í¬µÈ³Ì¶ÈÉÏÌåÏÖÁËÆóÒµµÄ¸Ä½ø¡£ÔÚ½«Ò»¸öµ¥ÌåÓ¦Ó÷ֽâΪ΢·þÎñʱ£¬Ó¦Ê¹Ã¿¸ö΢·þÎñ¿É±»¶ÀÁ¢µÄÍŶӽ»¸¶¡£
ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«½éÉÜÈçºÎʹÓà Kubernetes ʵÏÖ³ÖÐø½»¸¶¡£
Kubernetes¸ÅÊö
KubernetesÊÇÒ»ÖÖ¹ÜÀíÈÝÆ÷»¯Ó¦ÓõÄÈÝÆ÷±àÅÅÆ÷¡£ÕýÈçÎÒÃÇÏÈǰËùÌá¼°µÄ£¬²¢²»´æÔÚʹÓÃkubernetesʵÏÖ³ÖÐø½»¸¶µÄËùνÕýÈ··½·¨¡£ËäȻʵÏÖ³ÖÐø½»¸¶¶Ô·¢²¼ºÍ×Ô¶¯»¯·Ç³£¹Ø¼ü£¬µ«ÊÇKubernetes²¢Î´¶Ô¸ÃÎÊÌâÌṩһÖÖ½â¾ö·½°¸¡£

KubernetesÔÚÆ½Ì¨Öпɴ´½¨ºÍ¹ÜÀíµÄ×îСµ¥Ôª³ÆÎªPod¡£ÎÒÃÇ´ÓÉÏÃæµÄ½á¹¹Í¼ÖпÉÒÔ¿´µ½£¬Ò»¸öPodÖдæÔÚ×ÅÒ»¸öDockerÈÝÆ÷¡£DockerÈÝÆ÷¾µÏñ½«Ó¦ÓôúÂë°üÀ¨ÔÚÒ»¸ö¸ôÀëµÄ»·¾³ÖС£
PodÊÇһϵÁÐÔÚͬһ»úÆ÷ÉÏÒ»²¢µ÷¶ÈµÄÈÝÆ÷£¬ËüÃǹ²ÏíÍ¬Ò»ÍøÂçÃüÃû¿Õ¼ä¡£Ò»¸öÈÝÆ÷¿ÉÓë±¾»úͨÐÅ£¬²¢·¢ÏÖλÓÚͬһPodÖС¢°ó¶¨ÓÚÈκζ˿ÚÉÏµÄÆäËüÈÝÆ÷¡£
ÔÚGoogleµÄTim Hockin¿´À´£¬Pod²¢·ÇÓÀÉúµÄ¡£ËûËùÖ¸µÄÊÇ£¬Èç¹ûÓÉÓڵײãÓ²¼þ¹ÊÕϵÈÔÒòµ¼ÖÂÔÆ¶Ë»úÆ÷Ïûʧ£¬ÄÇôPodÒ²»áËæÖ®¶øÏûÍö¡£Õë¶ÔPodÒ²»áÏûÍöÕâÒ»ÊÂʵ£¬²»Ó¦½«ÖØÒª·þÎñÖÃÓÚPodÖÐÔËÐУ¬¼ÄÏ£ÍûÓÚ»úÆ÷²»»áÏûʧ¡£»úÆ÷ËæÊ±¶¼¿ÉÄÜ»áÏûʧ£¬ÓÈÆäÊÇÔÚÔÆ»·¾³ÖС£
Ó¦²ÉÓõÄÌæ´ú×ö·¨Êǽ«Pod°ü¹üÔÚ²¿ÊðÖУ¬Óɲ¿ÊðÖ¸¶¨PodµÄÊýÁ¿¡£ÀýÈ磬¿ÉÒÔ¶¨ÒåÒ»¸ö²¿ÊðΪ¾ßÓÐÒ»¸öPodµÄÈý¸öʵÀý£¬²¢ÇÒÕâЩʵÀýÓ¦±£³ÖÔËÐС£Èç¹ûµ±Ç°»úÆ÷å´»úÁË£¬²¿Êð»á½«ÕâÈý¸öPodʵÀýÖÃÓÚеĻúÆ÷ÉÏ£¬ÔÚÆäËüµØ·½Æô¶¯ËüÃÇ£¬²¢±£³ÖËüÃǵÄÔËÐС£
Kubernetes¼¯ÈºÊÇÓ¦ÓÃʵ¼ÊÔËÐÐÖ®´¦¡£
µÚÒ»°æ¼Ü¹¹
ÏÂÃæ½éÉܵÚÒ»ÖÖ²¿Êð£¬Ò²ÊÇ×î¼òµ¥µÄÒ»ÖÖ²¿Êð¡£ÆäÖУ¬Êܰ汾¿ØÖƵĴúÂ뽫³ÖÐø¼¯³ÉϵͳÓëDocker RegistryÁªÏµÆðÀ´£¬È»ºóͨ¹ý³ÖÐø¼¯³Éϵͳ½«×îеľµÏñÊÖ¹¤²¿Êðµ½Kubernetes¼¯ÈºÖС£ÊÖ¹¤²¿ÊðµÄÃüÁîΪ£º
kubectl apply -f service.yaml
ËäÈ»ÔÚÒ»¿ªÊ¼Ê±ÍêÈ«¿ÉÒÔʹÓÃÊÖ¶¯²¿Ê𣬵«ÊǴ˺óµÄ²¿Êð¸üÐÂӦʵÏÖ³ÖÐø¼¯³ÉϵͳµÄ×Ô¶¯»¯¡£³ÖÐø¼¯³Éϵͳͨ¹ý¾µÏñ±êÇ©¸üÐÂKubernetes£¬²¢½«¸üÐÂÍÆË͵½Kubernetes API¡£ÕâʹµÃKubernetes´ÓDocker RegistryÉÏÀÈ¡£¨Pull£©±êÇ©ËùÖ¸ÏòµÄDocker¾µÏñ£¬²¢¼ÓÒÔ²¿Êð¡£

¸ü¸ÄµÄÌá½»
ÔÚÕâÑùµÄ¼Ü¹¹ÖУ¬Èç¹û¿ª·¢ÈËԱʹÓÃgit pushÔÚÊܰ汾¿ØÖƵĴúÂëÖÐ×öÁËÒ»´Î¸ü¸Ä£¬³ÖÐø¼¯³Éϵͳ½«×Ô¶¯Íê³ÉÒ»´ÎDocker build¡£³ÖÐø¼¯³Éϵͳ»á¶Ô¸ÃDocker¾µÏñ×ö±êÇ©£¬±êÇ©ËùʹÓõÄSHA-1¹þÏ£¶ÔÓ¦ÓÚÍÆËÍ´úÂëµÄSHA-1¹þÏ££¬²¢¸³ÓèÁËΨһµÄÃû×Ö¡£´Ëºó£¬³ÖÐø¼¯³Éϵͳ»á½«¾µÏñÍÆË͵½Docker Registry¡£
Kubectl set image
³ÖÐø¼¯³Éϵͳ½«ÔËÐС°kubectl set image¡±³ÌÐòÌá½»ÉÏÊö¸ü¸Ä¡£kubectl set image»á»ñȡһ¸öÔËÐÐÖеÄAPI¶ÔÏ󣬲¢¸æÖªKubernetesʹÓÃÌØ¶¨µÄбêÇ©¸üгÖÐø¼¯³Éϵͳ¡£ÀýÈ磬Óû§¿ÉʹÓÃkubectl set image¸ü¸Äij¸öǰ¶Ë·þÎñµÄµ±Ç°¾µÏñ¡£
È»ºó£¬Kubernetes»á×Ô¶¯ÀÈ¡»ØÐµÄDocker¾µÏñ£¬²¢Ìæ»»µ±Ç°¾µÏñ¡£´ËÍ⣬Óû§Ò²¿ÉÒԻعö¸üУ¬ÕâÊÇKubernetesÄÚ½¨µÄÒ»¸öÌØÐÔ¡£
ʵÏֻعö
ֻҪеĸü¸Ä±»ÍÆË͵½Master·ÖÖ§£¬¾Í»á½ø¶ø±»ÍÆË͵½Éú²ú»·¾³¡£
Òª»Ø¹ö¸Ã¸ü¸Ä£¬ÐèÒªÔÙ×öÒ»´Î´úÂë¸ü¸Ä¡£¿ª·¢ÈËÔ±ÐèÒª´ÓMaster·ÖÖ§»Ö¸´×î½üÒ»´ÎÌá½»¡£µ±´æÔںϲ¢£¨Merge£©Ìύʱ£¬ÊÂÇé»áÂÔΪ¸´ÔÓ¡£ÔÚÀíÏëÇé¿öÏ£¬Óû§ÐèÖØÖûØ×î½üÒ»´ÎºÏ²¢Ç°µÄ°æ±¾£¬È»ºóÇ¿ÖÆÍÆËÍеĸü¸Ä¡£
ÔÚÍÆËͻعöºó£¬ÐèÖØ¹¹¾É°æ±¾¡£³ÖÐø¼¯³Éϵͳ½«»áÔËתÆðÀ´£¬Öع¹¸ÃоµÏñ£¬²¢ÍÆËÍоµÏñµ½Docker Registry¡£¸ÃоµÏñÊǾɾµÏñµÄÒ»¸öп½±´¡£
²»×ãÖ®´¦
ÕâÖּܹ¹·½·¨´æÔÚһЩ²»×ãÖ®´¦¡£Ê×ÏÈ£¬ÈÝÆ÷µÄ¹¹½¨ºÍÍÆËÍ¿ÉÄÜ»áºÜÂý¡£ÎÞÂÛÈÝÆ÷ÊÇ·ñ×î´ó³Ì¶ÈÉÏʹÓÃÁË´ÅÅÌI/OºÍÍøÂç´úÂ룬¹¹½¨ºÍÍÆËÍËùÓÃʱ¼äÖ÷Ҫȡ¾öÓÚÈÝÆ÷ÖеÄÄÚÈÝ¡£Õâ¶ÔÓÚ×ö»Ø¹öÊÇÒ»¸öÎÊÌ⣬ÒòΪ×îÖÕÓû§Îª¾¡¿ì½â¾öÎÊÌ⣬ÐèÒª»Ø¹ö¿ìËÙÍê³É¡£
Æä´Î£¬ÕâÖּܹ¹ñîºÏ½ôÃÜ£¬²»ÔÊÐí²»Í¬µÄ»·¾³£¨ÀýÈ翪·¢¡¢ÊÔ»úºÍÉú²ú£©´¦ÓÚ²»Í¬µÄ°æ±¾ÉÏ¡£¶ÔÓÚ´ó¶àÊýÓû§¶øÑÔ£¬ÕâÎÞÒÉÊÇÒ»¸öÎÊÌâ¡£
ÏÂÃæ£¬ÎÒÃǽ«³¢ÊÔ¶ÔµÚÒ»°æ¼Ü¹¹½øÐиĽø£¡
µÚ¶þ°æ¼Ü¹¹

µÚ¶þ°æ¼Ü¹¹ÊÇ»ùÓÚµÚÒ»°æµÄ³õʼ¼Ü¹¹¶ø¹¹½¨µÄ£¬ËüÒýÈëÁËÒ»¸öÀíÄ¼´Èð汾¿ØÖÆÅäÖöÀÁ¢ÓÚÆäÓàµÄÓ¦ÓôúÂë°æ±¾¿â£¨Repo£©¡£Õâ¿ÉʹÓû§½«°æ±¾¿ØÖÆÅäÖÃ×÷ΪÕû¸öÓ¦Óõĵ¥Ò»Êý¾ÝÔ´£¨SSOT£¬Single Source Of Truth£©£¬Õâ±íʾӦÓÃÊÇÓÉËùÓеÄ΢·þÎñ×é³ÉµÄ¡£
Ò»ÖÖ×ö·¨ÊÇÈÃÓû§·þÎñºÍ¾ßÓÐÕâЩ·þÎñ´úÂëµÄ¶©¹º·þÎñÅþÁÚÓÚËüÃǵÄKubernetes YAML¡£Ïà¶ÔÓÚÕâÖÖ×ö·¨£¬¸üºÃµÄ×ö·¨ÊÇÀÈ¡ËùÓÐÕâЩKubernetes YAMLµ½Ò»¸ö³ÆÎª¡°ÅäÖð汾¿â¡±µÄ¼¯ÖдúÂë°æ±¾¿âÖС£
ÕâÒ»µãºÜÖØÒª£¬ÒòΪÕâʹµÃ¼¯Èº±»ÆÆ»µºó£¬Óû§¿É´Ó°æ±¾¿ØÖÆÖع¹Õû¸ö¼¯Èº¡£ÏÖÔÚ£¬Èç¹ûÓÐÈËÒâÍâµØÉ¾³ýÁËÉú²ú¼¯Èº£¬¸Ã°æ±¾¿ØÖÆÅäÖõİ汾¿âÊǻָ´Ó¦ÓÃËùΨһ±ØÐëµÄ¡£
µÚ¶þ°æ¼Ü¹¹ÐÂÒýÈëÁËÕâÑùµÄÅäÖð汾¿â£¬Òò´Ë³ÖÐø¼¯³ÉϵͳÐèÒª¶à×öһЩ¹¤×÷¡£´ËÍ⣬µÚ¶þ°æ¼Ü¹¹ÓëµÚÒ»°æÊÇÏàͬµÄ¡£
¸ü¸ÄµÄÌá½»
ÄÇôÔÚÌá½»ÁË´úÂë¸ü¸Äºó£¬Ôڼܹ¹ÉÏ·¢ÉúÁËʲô£¿
³ÖÐø¼¯³Éϵͳ»á¹¹½¨Ò»¸öеÄÈÝÆ÷¾µÏñ£¬È»ºó³ÖÐø¼¯³Éϵͳ£¨¸ù¾Ý´úÂë°æ±¾¿âµÄÏìÓ¦Ö´ÐвÙ×÷£©»á½«¸ü¸ÄÍÆË͵½Docker Register¡£³ÖÐø¼¯³Éϵͳ¿Ë¡£¨Clone£©ÅäÖð汾¿âµÄ×î½ü°æ±¾£¬¶ÔKubernetes YAMLÓ¦Óøü¸Ä¡£Ö®ºó£¬³ÖÐø¼¯³Éϵͳ½«¸ü¸Ä²¿Êðµ½Kubernetes¼¯Èº¡£×îºó£¬Kubernetes¼¯Èº½«¾µÏñ´ÓDocker RegistryÀÈ¡ÏÂÀ´¡£
²»×ãÖ®´¦
ÕýÈçÎÒÃÇÔÚÇ°ÃæËùÌá¼°µÄ£¬ÏÖÔÚ´óÁ¿µÄ¹¤×÷ÓɳÖÐø¼¯³ÉËù³Ðµ£¡£×îºÃÊÇÈüܹ¹µÄÿһ²¿·Öֻȥ×öºÃÒ»¼þÊÂÇ飬¶ø²»ÊÇÈüܹ¹ÖеÄijһ²¿·Ö³Ðµ£Á˴󲿷ֵĸºµ£¡£
Æä´Î£¬¶Ô´úÂëµÄÍÆËÍÒÀÈ»ÊÇ´¥·¢³ÖÐø¼¯³ÉϵͳµÄΨһ¿ÉÄÜ;¾¶¡£×îºÃÊÇÎÞÐèÍÆËÍ´úÂë¾Í¿ÉʵÏֻعö¡£ÔÚÕâ¸öʵÀýÖÐÖ±½ÓʹÓÃkubectl×ö´øÍ⣨Out of Band£©»Ø¹ö£¬ÕâÒâζ×Å¿ª·¢ÈËÔ±±ØÐëÊÖ¹¤¸üÐÂÖÐÑëÅäÖð汾¿â¡£ÕâʹµÃ¸Ã°æ±¾¿â²»ÔÙÊÇSSOT¡£
µÚÈý°æ¼Ü¹¹

ÎÒÃÇÒѾÔÚµÚ¶þ°æ¼Ü¹¹ÖÐʵÏÖÁËÈçÉϵĸ´ÔÓÐÔ£¬×îºÃÊÇÔÙ½øÒ»²½Ìí¼Ó°æ±¾¹ÜÀíÆ÷¡£WeaveworksÍŶÓËùʹÓõİ汾¹ÜÀíÆ÷³ÆÎª Weave Flux £¬ËüÊÇÒ»¸öÍêÈ«¿ªÔ´µÄ°æ±¾¹ÜÀíÈí¼þ£¬Ò²ÊÇ Weave Cloud µÄÒ»¸ö×é³É²¿·Ö¡£ËäÈ»»¹ÓÐ Spinnaker µÈÆäËüÀàËÆµÄ²úÆ·£¬µ«ÊÇÏà±ÈÓÚSpinnaker£¬Weave FluxÔÚÉè¼ÆÉÏÒª¸üΪ¼ò½à£¬²¢ÇÒÊÇרÃÅÕë¶ÔÈÝÆ÷Éè¼ÆµÄ¡£
¼ÓÈë°æ±¾¹ÜÀíÆ÷»á½øÒ»²½µØ¼ò»¯¼Ü¹¹£¬ËüʹµÃÿ¸ö¼Ü¹¹ÔªËØÖ»¾ßÓе¥Ò»µÄÖ°Ôð¡£Èí¼þ¹ÜÀíÆ÷µÄ×÷ÓÃÊǹ۲ìÐÂÈÝÆ÷ºÎʱ³öÏÖÔÚRegistryÖУ¬½ø¶ø¿Ë¡±»°æ±¾¿ØÖƵÄÅäÖã¬Ð޸ĸÃÅäÖ㬲¢½«ÅäÖÃÍÆËͻذ汾¿âÒԼǼÏÂËù²úÉúµÄ°æ±¾¡£Í¬Ê±£¬Ëü»¹»áÍÆËÍÐÂÅäÖõ½Kubernetes¼¯Èº¡£
¸ü¸ÄµÄÌá½»
ÏÖÔÚ£¬³ÖÐø¼¯³ÉϵͳÒѾ¿ÉÒÔ½«±»°æ±¾¿ØÖƵĴúÂë×Ô¶¯¹¹½¨µ½ÈÝÆ÷¾µÏñÖУ¬²¢ÍÆËÍÈÝÆ÷¾µÏñµ½Docker Registry¡£
°æ±¾¿ØÖÆÆ÷´ÓÅäÖð汾¿âÖÐÀÈ¡Kubernetes YAML²¢ÐÞ¸ÄËüÃÇ£¬²¢½«Ð޸ĺóµÄ°æ±¾ÍÆË͵½¼¯ÈºÖС£Ö®ºó£¬KubernetesÀÈ¡»ØDocker RegistryµÄ×î½ü°æ±¾¡£
ÔÚÉÏͼÖУ¬ÔÚ°æ±¾¹ÜÀíÆ÷ÉÏÓÐÒ»¸ö¡°Ö½¾íÐΡ±µÄͼ±ê£¬±íʾÁËÓÃÓÚ²»Í¬»·¾³µÄ¸÷ÖÖ²ßÂÔ¡£ÆäÖУ¬ÓÃÓÚÊÔ»úµÄ²ßÂÔ£¬¿ÉÔÚÈκÎʱºò·¢²¼£»ÓÃÓÚÉú²úµÄ²ßÂÔ£¬¿ÉʹÓð汾¹ÜÀíÆ÷GUIÉϵİ´Å¥ÊÖ¹¤Ìá½»°æ±¾¡£ÕâÑù£¬µ¥¸ö΢·þÎñ°æ±¾¿âºÍËùÒª·¢²¼µÄ²ßÂԼ䲻ÔÙÊǽôñîºÏµÄ¡£
»Ø¹ö
ÔÚµÚÈý°æ¼Ü¹¹ÖÐʵÏֻعö·Ç³£¼òµ¥¡£Óû§Ö»Ðè¸æÖª°æ±¾¹ÜÀíÆ÷Òª»Ø¹öµ½×î½üµÄ°æ±¾£¬ÆäÖв»ÐèÒª³ÖÐø¼¯³ÉϵͳµÄÈκβÎÓë¡£ÏÖÔÚÓɰ汾¹ÜÀíÆ÷ʵÏÖ¶ÔÅäÖõĸü¸Ä¡£
×ܽá
ʹÓÃKubernetesʵÏÖ³ÖÐø½»¸¶¿ÉÒԺܼòµ¥£¬Ò²¿ÉÒԺܸ´ÔÓ¡£Î¢·þÎñÓ¦ÓÃÔ½ÊǸ´ÔÓ£¬¾ÍÔ½¿ÉÄÜÐèÒª¸´Ôӵļܹ¹¡£ËäȻʵÏÖ³ÖÐø¼¯³É²¢²»´æÔÚËùνµÄ´íÎó·Ïߣ¬µ«ÖØÒªµÄÊÇʵÏÖ×Ô¶¯»¯£¬½¨Á¢SSOT£¬²¢ÇÒÓÐЧµØÊµÏÖÎÞÐèÍÆËÍдúÂë¸ü¸ÄµÄ»Ø¹ö¡£
|