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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Kubernetes ״̬¹ÜÀíÓëÀ©Õ¹
 
  2320  次浏览      27
 2018-5-28
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚinfoq£¬±¾ÎÄÖ÷Ҫͨ¹ýÒ»¸ö¾ßÌåʵÀý½éÉÜKubernetes,ͬʱÏêϸ·ÖÎöÁËAPI ServerºÍKubernetesÌṩµÄ¹¤¾ßÁ´ºÍ¿Í»§¶Ë³éÏóµÈ֪ʶ ¡£

±¾ÎÄͨ¹ýÒ»¸ö¾ßÌåʵÀý½éÉÜKubernetes À©Õ¹¿ª·¢£¬·ÖÎöÁËAPI ServerµÄ¼æÈÝÐÔÉè¼Æ£»»ùÓÚ²¿·ÖÔ´Âë½éÉÜÁËKubernetes API¾ÛºÏ²ãÔ­ÀíºÍʵÏÖ£»×îºó»¹·ÖÎöÁËKubernetesÌṩµÄ¹¤¾ßÁ´ºÍ¿Í»§¶Ë³éÏó£¬Ï£ÍûΪKubernetesÀ©Õ¹¿ª·¢ÌṩһЩÆô·¢ ¡£

״̬¹ÜÀí²¢·ÇÐÂÏÊ»°Ì⣬ËüΪÖÐÐÄ»¯ÏµÍ³·Ö·¢Ò»ÖµÄ״̬£¬È·±£·Ö²¼Ê½ÏµÍ³×ÜÊdz¯Ô¤ÆÚµÄ״̬ÊÕÁ²£¬ÊÇÖÐÐÄ»¯ÏµÍ³µÄ»ùʯ֮һ ¡£

ÒÔPod£¨ÈçÏÂͼ£©ÎªÀý£¬Ëü³éÏóÁË¿ÉÒÔ¶ÀÁ¢²¿ÊðµÄ×îСÈÝÆ÷µ¥Î»£¬PodÃèÊöµÄ±ä»¯ÐèÒª·´Ó³µ½¶ÔÓ¦µÄÈÝÆ÷ÉÏ£¬±ÈÈçÐÞ¸ÄÁËPod µÄimage£¬Ëü¶ÔÓ¦µÄÈÝÆ÷¾Í»áʹÓÃÖ¸¶¨µÄimageÀ´Öؽ¨ ¡£

Kubernetes´Óv1.0¿ªÊ¼Öð½¥ÐγÉÁËÍêÉÆµÄAPI¿ò¼ÜºÍ¹¤¾ßÁ´£¬²¢ÒÔ´ËΪ»ù´¡ÊµÏÖÁËÈÝÆ÷¹ÜÀíÆ½Ì¨¡£Ê±ÖÁ½ñÈÕ£¨2018ÉϰëÄ꣩£¬ÕâÌ×API¿ò¼ÜºÍ¹¤¾ßÁ´ÒѾ­ÑݱäΪGoÉú̬ȦÖеÄͨÓÃ״̬¹ÜÀí½â¾ö·½°¸£¬´ó´ó½µµÍÁ˽¨Á¢·Ö²¼Ê½ÏµÍ³µÄÄѶȡ£

¿ÉϧµÄÊÇ£¬ÉçÇøÉÐδ³öÏÖ¶ÔKubernetes״̬¹ÜÀíºÍÀ©Õ¹µÄÏêϸ½éÉÜ£¬¹Ù·½ÎĵµÖеÄÖ»ÑÔÆ¬ÓïÄÑÒÔÖ§³Å¸´ÔÓµÄÀ©Õ¹¿ª·¢ÐèÇ󣬱¾ÎÄͨ¹ýÒ»¸ö¾ßÌåʵÀý½éÉÜKubernetes À©Õ¹¿ª·¢£¬·ÖÎöÁËAPI ServerµÄ¼æÈÝÐÔÉè¼Æ£»»ùÓÚ²¿·ÖÔ´Âë½éÉÜÁËKubernetes API¾ÛºÏ²ãÔ­ÀíºÍʵÏÖ£»×îºó»¹·ÖÎöÁËKubernetesÌṩµÄ¹¤¾ßÁ´ºÍ¿Í»§¶Ë³éÏó£¬Ï£ÍûΪKubernetesÀ©Õ¹¿ª·¢ÌṩһЩÆô·¢ ¡£

À©Õ¹¿ª·¢ÊµÀý

±¾½Ú½éÉÜÒ»¸ö¼òµ¥µÄÀ©Õ¹¿ª·¢ÏîÄ¿À´½éÉÜKubernetesÀ©Õ¹µÄ¿ª·¢Ä£Ê½£¨´úÂëÉú³É»ùÓÚhttps://github.com/kubernetes-incubator/apiserver-builder£©£¬ÕâÊǵäÐ͵ÄC/S¼Ü¹¹£¬·ÖΪAPIServerºÍ¿Í»§¶ËÁ½²¿·Ö£¬APIServerÌṩÁ˸߿ÉÓõÄ״̬´æ´¢£¬¶ø¿Í»§¶ËÌṩÁË×ÊÔ´µÄCRUDºÍ¿É¿¿µÄ״̬·Ö·¢½Ó¿Ú¡£

ÏÈÀ´³õʼ»¯Õû¸öÏîÄ¿¿ò¼Ü£¨Õâ¸ö¹¤¾ßµÄʵÏÖĿǰ»¹²»Îȶ¨£¬²»Í¬°æ±¾µÄapiserver-bootÉú³ÉµÄ´úÂë¿ÉÄÜ´æÔÚ²îÒ죩¡£

ºóÐøÕ½ڽ«½éÉÜÏêϸ½éÉÜÀ©Õ¹¿ª·¢µÄ¹ý³Ì¡£

API Server

ÏîÄ¿³õʼ»¯Íê³ÉÖ®ºó¾Í¿ÉÒÔ¶¨Òå״̬ÁË£¬ÎªÁËÈÃÀý×Ó¸ü¾ßÒ»°ãÐÔ£¬±¾ÎĽ«¶¨Òå¶à¸ö°æ±¾µÄ״̬²¢ÔÚºóÐøÕ½ڽéÉÜAPIServerµÄ¼æÈÝÐÔÉè¼Æ¡£

Ö´ÐÐÈçÏÂÃüÁîÉú³ÉµÚÒ»¸ö°æ±¾µÄ״̬¶¨ÒåÄ£°å£ºv1alpha1.Bee¡£

$ apiserver-boot create resource --group alpha --version v1alpha1 --kind Bee

È»ºóΪÉú³ÉµÄv1alpha1.BeeÌí¼Ó×Ô¶¨ÒåµÄÐÅÏ¢£¨Èçͼ1.1.1£©¡£

ÔËÐÐÒÔÏÂÃüÁÐ޸ĺóµÄ״̬¶¨Òå±ä»¯Ó¦Óõ½Õû¸öÏîÄ¿ÖÐÈ¥¡£

$ apiserver-boot build generated

Éú³É´úÂëʱ»á°ÑËùÓеÄ×ÓÃüÁî´òÓ¡³öÀ´£¨Èçͼ1.1.2£©£¬Ëæºó¿ÉÒÔÀûÓþֲ¿´úÂëÉú³ÉÀ´¶ÔÉú³É´úÂë½øÐÐ΢µ÷¡£

È»ºó½«Õâ¸ö×Ô¶¨ÒåµÄAPI Server²¿Êðµ½Ò»¸öKubernetes¼¯ÈºÖУ¬×¢ÒâÕâÀﲿÊðµÄAPI ServerÊÇÒ»¸öʵÏÖÁËKubernetes API¹æ·¶µÄ¶ÀÁ¢µÄWeb·þÎñ£¬Ó뼯ȺMasterÊÇÍêÈ«¶ÀÁ¢µÄ£¬½ö½öÊǼ¯ÈºÖеÄÒ»¸öÆÕͨµÄPod¶øÒÑ£¬¿ÉÒÔÓÐÍêÈ«¶ÀÁ¢ÓÚMaster API ServerµÄETCD´æ´¢¡£

ÓÉÓÚ´Ë´¦µÄAPIServerʵÏÖÁËKubernetes API¹æ·¶£¬¿ÉÒÔͨ¹ýkubectlÀ´Ö±½ÓдÈëÒ»¸öv1alpha1.Bee£¬È»ºóÔÙÓÃkubectl¶ÁÈ¡¸Õ¸ÕдÈëµÄv1alpha1.Bee£¨Èçͼ1.1.3£©£¬Ò²¿ÉÒÔÓÃkubectlÀ´ÐÞ¸Äͼ1.1.3ÖÐдÈëµÄBeeµÄlocationÐÅÏ¢£¨Èçͼ1.1.4£©¡£

ÓÐÁË»ù±¾µÄ´æ´¢Ö®ºó¾ÍÐèÒª¿¼ÂÇ״̬ÐÞ¸ÄʱµÄУÑ飬¿ÉÒÔΪ״̬ÃèÊöʵÏÖÈÎÒâÐÎʽµÄÀ©Õ¹Âß¼­£¬Í¼1.1.5ÖÐΪv1alpha1.BeeÌí¼Ó×Ô¶¨ÒåУÑ飬ÏÞ¶¨location±ØÐëÒÔChina½áβ¡£

Ìí¼ÓÁËͼ1.1.5ÖеÄУÑéÖ®ºó£¬Í¼1.1.3Öиø³öµÄBeeÃèÊöÒѾ­²»ÔٺϷ¨£¬ÕâʱÈç¹û³¢ÊÔÔÙ´ÎдÈë¸ÃÊý¾Ý¾Í»á³öÏÖУÑéʧ°Ü£¨Èçͼ1.1.6£©¡£

ͼ1.1.7½«location¸üÕýΪChina½áβºó¾Í¿ÉÒÔÕý³£Ð´Èëv1alpha1.BeeÁË¡£

ÒÔÉÏÊǶ¨ÒåÒ»¸öv1alpha1.Bee״̬ÃèÊöµÄ»ù±¾¹ý³Ì¡£

ϸÐĵĶÁÕß¿ÉÄÜÒѾ­·¢ÏÖ£¬ÔÚдÈëÒ»¸öBeeÖ®ºó£¬Èç¹ûÐÞ¸ÄÁËBeeµÄУÑ鹿Ôò£¬ÄÇÃ´Ç°ÃæÒѾ­Ð´ÈëµÄBee¿ÉÄÜÒѾ­²»ºÏ·¨ÁË£¬¾Í»á³öÏÖÔàÊý¾Ý£¬Õâ¸öÎÊÌâÔõô½â¾öÄØ£¿¹¤³ÌÉÏÎÒÃÇÓ¦¸Ã¹æ±ÜÕâÖÖÇé¿ö£¬RESTful APIÖÐÒ»¸ö»ù±¾Éè¼ÆÔ­Ôò¾ÍÊÇ¡°²»¿É±ä×ÊÔ´¡±£¬ÕâÀïËùνµÄ¡°²»¿É±ä¡±Ö¸µÄÊÇ×ÊÔ´Éæ¼°µÄ¸÷ÖÖÉÏÏÂÎÄ£¬°üÀ¨Schema¡¢Ð£Ñé¡¢°²È«¡¢SLAµÈµÈ£¬Èç¹û³öÏÖÉÏÏÂÎĸı䣬Ӧ¸ÃΪ×ÊÔ´Ìṩеİ汾¡£

ΪÁ˽éÉÜ״̬¶¨ÒåµÄ¼æÈÝÐÔÉè¼Æ£¬Í¼1.1.8ΪBeeÕâ¸ö״̬Ôö¼ÓÒ»¸öа汾v1alpha2.Bee£¬Spec»¹ÐèÒªÔö¼ÓÒ»¸ö¶îÍâµÄ×Ö¶ÎGender£¨×÷Õß°´£ºËäÈ»ÃÛ·ä·ÖÄÐÅ®Óе㳶£¬ÕâÀï½ö½öÊÇΪÁ˱í´ïÔÚÒ»¸öа汾µÄBeeÖÐÌí¼Ó×ֶΣ¬ºóÎIJ»ÔÙ½âÊÍ£©¡£

ͼ1.1.9ÖÐʹÓÃkubectlͬʱдÈëv1alpha1.BeeºÍv1alpha2.Bee¡£

¿Í»§¶Ë

À©Õ¹¿Í»§¶ËÁ¬½Óµ½Ç°ÎÄʵÏÖµÄAPI ServerÀ´¼àÌýBeeµÄ±ä»¯£¬½ø¶øÔÚ¿Í»§¶ËʵÏÖ×Ô¶¨ÒåÀ©Õ¹Âß¼­£¬Í¼1.2.1ÖÐΪBeeʵÏֵĿͻ§¶ËÀ©Õ¹µÄ»ù±¾¹¤×÷Á÷¡£

ǰÎÄ×Ô¶¯Éú³ÉµÄ´úÂëÖÐΪBeeÉú³ÉÁËĬÈϵÄBeeController£¬Èçͼ1.2.2Ëùʾ¡£

µ±¼àÌýµ½´´½¨»ò¸üÐÂBee״̬µÄʱºò£¬¿ÉÒÔͨ¹ýʵÏÖReconcileÖеÄÂß¼­À´´¦Àí¶ÔBeeµÄ¶îÍâÀ©Õ¹£¬ÏÖÔÚÀ´°ÑController²¿Êðµ½¼¯ÈºÖÐÈ¥¡£

½«Ç°ÃæÐ´ÈëµÄBeeÈ«²¿É¾³ýºóÖØÐÂдÈ룬¿ÉÒÔ¿´µ½Controller´òÓ¡ÁËÁ½ÌõÈÕÖ¾·Ö±ðΪдÈëµÄBee.Name£¬Èçͼ1.2.3Ëùʾ¡£

´Ë´¦Ìáµ½µÄReconcile½Ó¿ÚÖ»ÄÜÏìÓ¦´æÔÚ״̬Ð޸ĵij¡¾°£¬ÊÇÒ»ÖÖÎÞ״̬µÄÀ©Õ¹Ä£Ê½£¬Èç¹ûÐèÒªÏìӦɾ³ý£¬¿ÉÒÔÀûÓúóÎĽéÉܵÄInformer½Ó¿ÚÀ´ÊµÏÖ£¬´Ë´¦²»×¸Êö£¬Ö»¸øÒ»¸ö¼òµ¥Àý×Ó£¨Èçͼ1.2.4£©¡£ÓÐȤµÄÊÇ£¬BeeController²¿Êðµ½¼¯ÈºÀïÃæ£¬Ã»ÓнøÐжîÍâÅäÖþͿÉÒÔÁ¬½Óµ½¶ÔÓ¦µÄAPIServerÕý³£ÔËתÁË£¬ËüÊÇÈçºÎ×Ô¶¯ÓëǰÎIJ¿ÊðµÄAPI Server½¨Á¢Á¬½ÓÄØ£¿ÕâÔÚºóÎÄ¡°API¾ÛºÏ²ã¡±Öлá¾ßÌå½éÉÜ£¬´Ë´¦Ò಻׸Êö¡£

×¢Òâɾ³ýÁËÇ°ÃæÐ´ÈëµÄv1alpha1.BeeºÍv1alpha2.BeeÁ½¸ö°æ±¾µÄBee£¬µ«Êµ¼ÊÉÏBeeControllerÊÇÀûÓÃv1alpha1¿Í»§¶Ë¼àÌýBeeµÄɾ³ýʼþ£¬ÏÔÈ»v1alpha1µÄInformerÒ²¿ÉÒÔ¸ÐÖªµ½ËùÓа汾BeeµÄ±ä»¯£¬ÕâÆäʵ¾ÍÊǼæÈÝÐÔÉè¼ÆµÄÃÀÃîÖ®´¦ÁË£¬²»×¸Êö¡£

С½á

¸´ÔÓϵͳÖУ¬¿Í»§¶ËµÄά»¤ÖÜÆÚÊÇËæ»úµÄ£¬ÉèÏëÒ»¸öûÓмæÈÝÐÔµÄϵͳ£¬ÔÚÔËÓªÒ»¶Îʱ¼äºó£¬¿Í»§¶ËÀ©Õ¹ÓÉÓÚÉý¼¶Î¬»¤ÖÜÆÚµÄ²îÒìʹÓÃÁ˲»Í¬°æ±¾µÄ¿Í»§¶ËʵÏÖ£¬ÕâÑùµÄϵͳÈκÎÒ»¸öµãµÄ±ä»¯¶ÔϵͳÖÐÆäËûÄ£¿é¿ÉÄܶ¼´æÔÚÇ¿ÒÀÀµ£¬ÕâÖÖñîºÏ¿ÉÄܵ¼ÖÂϵͳ²»µÃ²»²¿·ÖÖØÆô£¬×îÖÕÕâ¸öϵͳ½«ÏÝÈë¾Ù²½Î¬¼èµÄÄà̶¡£¿ÉÒÔ˵¼æÈÝÐÔÉè¼ÆÊÇKubernetes¸ß¶È¿ÉÀ©Õ¹ÐԵĻù´¡Ö®Ò»£¬Í¼1.3.1Ϊ¶à°æ±¾BeeµÄ¼æÈÝÐÔÉè¼ÆÄ£ÐÍ¡£

ͼ1.3.1ÖÐдÈëºÍ´æ´¢BeeµÄʱºòÖ§³ÖÈ«²¿°æ±¾£¬¶øAPI ServerΪÿ¸ö°æ±¾µÄBeeµÄ¶ÁÈ¡½Ó¿ÚʵÏÖÁ˼æÈÝÐÔÊÊÅä¡£µ±Ð´Èëԭʼ״̬Ϊv1alpha1.Bee£¬ËùÓпͻ§¶Ë¶¼¿ÉÒÔ¸ÐÖªµ½Õâ¸ö״̬£¬Í¬ÀíдÈë״̬v1alpha2.Beeʱ£¬ËùÓпͻ§¶ËÒ²¶¼¿ÉÒÔ¸ÐÖªµ½Õâ¸ö״̬±ä»¯¡£

ÏÈÍùAPI ServerдÈëv1alpha1.BeeºÍ v1alpha2.BeeÁ½¸öBee״̬ÃèÊö£¬Èçͼ1.3.2Ëùʾ ¡£

½øÈëetcdÖп´Êµ¼ÊдÈëµÄv1alpha1.BeeºÍv1alpha2.BeeÊý¾Ý£¨Èçͼ1.3.3£©£¬¿É¼û״̬´æ´¢ºÍдÈëʱµÄÊäÈëÊÇÒ»Öµġ£

ÌØ±ðÌáһϣ¬ÔÚKubernetes APIÉè¼Æ¹æ·¶ÖУ¬{Group, Namespace, metadata.name} Õâ¸öÈýÔª×éÊÇÈ«¾ÖΨһµÄ£¬¾¡¹Ü´Ë´¦Ð´ÈëµÄÁ½¸öBee·Ö±ðΪ²»Í¬µÄ°æ±¾£¬»¹ÊÇ¿ÉÒÔ´ÓËùÓа汾µÄ¶ÁÈ¡½Ó¿ÚÄõ½ÕâЩ״̬£¨Èçͼ1.3.4£¬1.3.5£©£¬Õâ¾ÍÊÇΪʲôͼ1.2.4ÖÐÖ»ÐèʹÓÃv1alpha1¿Í»§¶Ë¾Í¿ÉÒÔ½ÓÊܵ½É¾³ý v1alpha1.BeeºÍv1alpha2.BeeµÄʼþ¡£

ͼ1.3.4ºÍ1.3.5Ö±½ÓʹÓÃcurlÃüÁî·Ö±ð´Óv1alpha1ºÍv1alpha2µÄAPIÀ´»ñÈ¡BeeÁÐ±í£¬Õâ½øÒ»²½×ôÖ¤Á˼æÈÝÐÔÉè¼ÆÊÇÔÚAPI ServerʵÏֵġ£

ÔÚ²»Í¬°æ±¾µÄBeeÖ®¼ä»¥Ïàת»»Èç¹ûÉÙÁË×ֶΣ¬±ÈÈçͼ1.3.5ÖÐͨ¹ýv1alpha2¿Í»§¶Ë¶ÁÈ¡v1alpha1.Bee£¬gender×Ö¶ÎΪ¿Õ£¬Õâ¿ÉÄÜÊÇÓÐÎÊÌâµÄ£¬v1alpha2¿Í»§¶ËÄõ½ÕâÑùµÄÊý¾Ý¿ÉÄÜ»á³öÏÖ²»Ô¤ÆÚµÄÐÐΪ£¬Ó¦¸Ã±£Ö¤¿Í»§¶ËÈ¡µ½µÄÊý¾ÝÂú×ãÏàÓ¦°æ±¾µÄÔ¼Êø¡£

Õâ¾ÍÐèÒªAPIServerÌṩĬÈÏÖµµÄÖ§³ÖÁË£¬ÏÂÃæÀ´Îªv1alpha2Ìí¼ÓĬÈÏÖµÖ§³Ö£¬½«genderĬÈÏÉèÖÃΪUnknown £¬Èçͼ1.3.6Ëùʾ¡£

¼æÈÝÐÔÉè¼ÆÊÇÀ§ÈźܶิÔÓϵͳÉè¼ÆÕßµÄÎÊÌ⣬KubernetesÖеļæÈÝÐÔÉè¼ÆÄ£Ê½²»½öÊÇRESTfulÉè¼ÆÄ£Ê½µÄ³É¹¦Ó¦Óã¬Ò²Îª¸´ÔÓϵͳÉè¼ÆÌṩÁËÒ»ÖÖͨÓýâ¾ö·½°¸¡£

API¾ÛºÏ²ã

Ç°ÃæµÄʵÀýÖУ¬Controller²¿Êðµ½¼¯ÈºÖоÍÄÜÖ±½Ó·ÃÎÊBee×ÊÔ´£¬Êµ¼ÊÉÏÔÚ²¿ÊðAPI Serverʱ»¹ÎªÆäÅäÖÃÁËAPI¾ÛºÏ²ã£¬½«Õâ¸ö¶ÀÁ¢µÄAPI ServerÕûºÏµ½¼¯ÈºµÄAPI ServerÖÐÈ¥ÁË£¬¾ÍºÃÏñÊÇKubernetes APIÌṩÁËBeeÕâ¸öResourceÒ»Ñù¡£

API¾ÛºÏ²ãÊÇKubernetes APIÀ©Õ¹ÐԵĻù´¡£¬½«×Ô¶¨Òå×ÊÔ´ÕûºÏµ½Kubernetes APIÖУ¬ÎªÈÝÆ÷¹ÜÀíÆ½Ì¨»òÏà¹Ø²å¼þÌṩ״̬´æ´¢£¨Ô´Âë·ÖÎö»ùÓÚ£ºf7aafaeb404563cda07b182ad9679f54afd227fe£©¡£

API Service

KubernetesÔÚÔçÆÚ°æ±¾ÖоÍÌṩÁËAPI ServiceÖ§³Ö£¬×î³õÊÇΪÁËÖ§³Ö½«ÅÓ´óµÄAPI Server·ÖÉ¢ÔÚ¶à¸ö¶ÀÁ¢µÄAPI ServerÖÐÈ¥¡£Ëü¶¨ÒåÁËÒ»×éÁé»îµÄ·´Ïò´úÀí½Ó¿Ú£¬Ö»Òª½ÓÈëµÄAPI ServerµÄÉè¼ÆÂú×ãKubernetesµÄAPIÉè¼Æ£¬¾Í¿ÉÒÔÕûºÏµ½KubernetesµÄAPIÖÐÈ¥£¬¼¯ÈºÒÑÓеÄ×é¼þ¿ÉÒÔÖ±½ÓÓëмÓÈëµÄAPI ServerÀ´×ö¼¯³É£¬Í¼2.1.1ΪAPI Service(v1)µÄ¶¨Òå¡£

ͼ2.1.2Öн«×Ô¶¨ÒåµÄAPI Server(evangelist-apiserver)ÕûºÏµ½Kubernetes APIÖÐÈ¥¡£

ÕâÑù¾Í¿ÉÒÔÖ±½Óͨ¹ýkubectlÀ´¹ÜÀí¸ÃAPIÀ©Õ¹µÄ״̬ÁË£¬Í¼2.1.3ÖÐʹÓÃkubectlÀ´¹ÜÀíBees¡£

API Service¶¨ÒåÖÐÈç¹ûÖ¸¶¨ÁË Service£¬API Aggregator»áΪ¸ÃServiceÌí¼ÓÒ»¸ö·´Ïò´úÀíÅäÖã¬Í¼2.1.4ÊÇAPI Service×ÊÔ´¸Ä¶¯ºóÉú³É·´Ïò´úÀíµÄʵÏÖ¡£

ÿ¸öAPI Service¶Ô¶¼¶ÔÓ¦Á˶ÀÁ¢µÄproxyHandler£¬ÊÇÕë¶ÔÌØ¶¨URLµÄ·´Ïò´úÀí¡£

Custom Resource Definition

Custom Resource Definition(CRD)µÄǰÉíÊÇThird Party Resource(TPR)£¬ÊÇAPI ServiceµÄÒ»ÖÖÀ©Õ¹½Ó¿Ú£¬ÆäÖÐTPRÒѾ­ÔÚv1.7Ö®ºó±»·ÏÆú£¬v1.8Ö®ºó³¹µ×´Ó´úÂëÖÐÒÆ³ý£¬Òò´ËÕâÀïÖ»½éÉÜCRDµÄ»ù±¾ÊµÏÖÔ­Àí¡£CRDΪ״̬¹ÜÀíÀ©Õ¹¶¨ÒåÁËÒÔÏÂÈýÖÖÄÜÁ¦£º

¶¨ÒåÈÎÒâÀàÐ͵Ä×ÊÔ´

¶¨Òå»ùÓÚOpen API SchemaµÄУÑé

¶¨Òå×ÊÔ´£¨Resource£©ÉúÃüÖÜÆÚÖй³×Ó£¨Hook£©

Ïò¼¯ÈºÖÐдÈë¸ÃCRD£¬¾ÍÔÚ¸ÃAPIServerÖÐ×¢²áÁËÒ»¸öÃûΪBeeµÄ×ÊÔ´£¬²¢ÇÒ¶Ô×ÊÔ´¼ÓÈëºÍУÑéÖ§³Ö£¬½ÓÏÂÀ´¾Í¿ÉÒÔÓÃkubectlÖ±½Ó¹ÜÀíͼ2.2.1Öж¨ÒåµÄBee×ÊÔ´ÁË£¨Èçͼ2.2.2£©¡£

CRDÊÇ»ùÓÚAPI ServiceʵÏֵģ¬KubernetesΪCRD×Ô¶¯±£³ÖÒ»¸öÕë¶ÔKube APIµÄAPI ServiceÅäÖã¨Èçͼ2.2.3£©¡£

ÖµµÃÒ»ÌáµÄÊÇ£¬CRDµÄÁ½¸öÌØµã£º

ÓÉKube APIÌṩ·þÎñ

´úÂëÀïÃæÐ´ËÀÁËÓÅÏȼ¶£¨Èçͼ2.2.4£©£¬¼´versionPriority(100)ºÍgroupPriorityMinimum(1000)

С½á

Kubernetes APIServerµÄ»ù±¾¹¦ÄÜÖ®Ò»ÊÇ·´Ïò´úÀí£¬APIServiceÌṩÁ˶¯Ì¬ÅäÖýӿڣ¬¿ÉÒÔΪÏàͬµÄת·¢Ìõ¼þ¶¨Òå¶à¸öÓÅÏȼ¶²»Í¬µÄAPIService£¬ÕâÑùµÄÉè¼ÆºÜÖØÒª£¬±£Ö¤ÁËKubernetes APIServerÔÚÇл»×ª·¢ÅäÖöԿͻ§¶ËÍêȫ͸Ã÷£¨Zero Downtime£©¡£

ÔÚǰÎÄ¡°À©Õ¹¿ª·¢ÊµÀý¡±ÖÐûÓвÉÓÃCRDÀ´ÊµÏÖAPIServerÀ©Õ¹£¬ÕâÊÇÒòΪCRD´æÔÚÁ½·½ÃæµÄ¾ÖÏÞÐÔ£º

ûÓÐsub-resourceÖ§³Ö£ºÒò´ËstatusºÍspecÒ»Ñù¶¼ÊÇ¿ÉÒÔ±»kubectlÐ޸ĵģ¬ÕâÆäʵ´òÆÆÁËKubernetes APIÉè¼ÆµÄ»ù±¾¼ÙÉè

ȱÉÙ¼æÈÝÐÔÖ§³Ö£º¶à°æ±¾SchemaÖ®¼ä»¥Ïàת»¯Í¨³£ÐèÒª×Ô¶¨Òå´úÂëÂß¼­À´ÊµÏÖ£¬ÕâÔÚδÀ´CRDÖÐÒ²ÊDz»¿ÉÄÜÖ§³ÖµÄ

CRDÌṩÁËÒ»ÖÖÓÐÏ޵ġ¢ÇáÁ¿¼¶µÄAPIServerÀ©Õ¹£¬ÔÚ¼¼ÊõÑ¡ÐÍÖÐÐèÒª¿¼²ìÊÇ·ñ´æÔÚÏÂÃæµÄÐèÇóÀ´¾ö¶¨ÊÇ·ñÑ¡ÔñCRD£º

±ÜÃâstatus±»kubectl´Û¸Ä£ºÔÚ¶à¸ö¿Í»§¶Ë¹²Ïí״̬£¬Èç¹ûstatus±»kubectlÈËΪ´Û¸Ä¿ÉÄܵ¼ÖÂϵͳ³öÏÖ²»Ô¤ÆÚµÄÐÐΪ

Áãå´»ú£¨Zero Downtime£©Éý¼¶£º¿Í»§¶ËºÍAPIServerÐèÒªÔÚÉý¼¶Î¬»¤µÄÈÎÒâʱ¼äµã±£Ö¤¼æÈÝÐÔºÍÕýÈ·¿ÉÔ¤ÆÚµÄÐÐΪ

CRD»á×Ô¶¯±£³ÖÏàÓ¦µÄAPIServiceÉèÖ㬼´Ê¹¸ÃAPIService±»´Û¸Ä£¬CRD ControllerÒ²Äܹ»×Ô¶¯»Ö¸´ÕýÈ·µÄAPI ServiceÅäÖã¬ÕâÒ²Òâζ×ÅÈç¹ûÒªÓÃ×Ô¶¨ÒåAPIServerÀ´Ìæ»»ÒÑÓеÄCRD·þÎñ£¬ÐèÒªÏȽ«CRDɾ³ýÔÙдÈëеÄAPIServiceÅäÖ㬷ñÔò¸ÃÅäÖûᱻCRD×Ô¶¯¸²¸Ç¡£

´úÂëÉú³É

KubernetesÌṩÁ˷ḻµÄ´úÂëÉú³É¹¤¾ßÓÃÀ´¹ÜÀíRESTful״̬µÄ¶¨ÒåºÍ¿Í»§¶Ë´úÂ룬ά»¤×´Ì¬¶¨ÒåµÄ¹ý³Ì¾ÍÊÇΪ¸÷Ä£¿éÖ®¼ä״̬Á÷ת¶¨ÒåService Contract¡£

¿Í»§¶ËÉú³É

±¾½Ú½éÉܿͻ§¶Ë´úÂëÉú³É¹¤¾ß£¬ÎÄÖÐÌáµ½ÁËTagµÄ¡°×÷ÓÃÓò¡±£¬ÔÚGoÓïÑÔÖÐûÓоßÌåµÄ¶¨Ò壬ÕâÀï¸ø³öÒ»ÖÖ·º·ºµÄÃèÊö£º

Local Tag£ºStruct/Field/Function¶¨Òå֮ǰ£¬ÓÃÀ´Ô¼Êø¾Ö²¿´úÂëÉú³É¹æÔò

Global Tag£ºPackageÏÂdoc.goµÄpackage¹Ø¼ü×Öǰ£¬×÷ΪÕû¸öPackageϵÄĬÈÏÉú³É¹æÔò£¬¿ÉÒÔ±»Local Tag¸²¸Ç

ÏÈ¿´deepcopy-gen£¬ËüÌṩÁË¡°Éî¸´ÖÆ¡±½Ó¿ÚÉú³ÉÄÜÁ¦£¬ÔÚÖ´ÐÐһЩ¿ÉÄÜ»áÐ޸ĶÔÏóÄÚÈݵIJÙ×÷ʱ£¬¡°Éî¸´ÖÆ¡±¿ÉÒÔ±£»¤Ô­Ê¼¶ÔÏóÄÚÈÝ£¬ÈÃϵͳÖжÔÏóµÄ±ß½ç¸üÇåÎú¡£

Èçͼ3.1.1ÖмÆËãÈÝÆ÷µÄResource Limitʱ£¬ÐèҪͬʱ¿¼Âǽڵã¿É·ÖÅäµÄ×ÊÔ´£¬×îÖÕ½á¹û»áÊǶþÕߺϲ¢µÄ½á¹û£¬ËùÒÔÕâÀïÔÚ¼ÆËãǰÏȽ«containerÉî¸´ÖÆÒ»¸öÁÙʱ¶ÔÏó£¬È»ºóºÏ²¢Ö±½ÓÔÚÕâ¸öÁÙʱ¶ÔÏóÉϽøÐС£

k8s:deepcopy-gen£ºÉùÃ÷ÊÇ·ñÉú³ÉDeepCopy½Ó¿Ú£¬Ìí¼ÓµÄλÖþö¶¨Á˸ÃTagµÄ×÷ÓÃÓò£¬¿ÉÒÔÌí¼Óµ½Package£¨ÈÎÒâÎļþpackage¹Ø¼ü×Öǰ£©»òStructǰ£¬È¡ÖµÏà¹Øº¬ÒåÈçÏÂ:

true/false: ÊÇ·ñÉú³ÉDeepCopy½Ó¿Ú£¬³£ÓÃÓÚÉùÃ÷ijЩStruct²»ÐèÒªÉú³ÉDeepCopy

package: Ö»ÓÃÓÚPackageÓò£¬Îª¸ÃPackageÏÂËùÓÐδÏÔʽ½ûÓÃDeepCopyµÄÀàÐÍÈ«²¿Éú³ÉDeepCopy½Ó¿Ú

k8s:deepcopy-gen:nonpointer-interfaces: ÉùÃ÷ÊÇ·ñΪijÀàÐÍÉú³ÉÖµÀàÐ͵ÄDeepCopy½Ó¿Ú£¬Ö»ÄÜ×÷ÓÃÓÚStructÓò

true/false£ºÉú³ÉÖµÀàÐÍDeepCopy½Ó¿Ú£¬·ñÔòΪָÕëÀàÐÍ

k8s:deepcopy-gen:interfaces£ºÖ¸¶¨ÎªStructÉú³É·µ»ØÈÎÒâ½Ó¿ÚÀàÐ͵ÄDeepCopy½Ó¿Ú£¬È¡ÖµÎª¶ººÅ·Ö¸ôµÄÀàÐÍÈ«Ãû¡£

½ÓÏÂÀ´½éÉÜconversion-genºÍdefaulter-gen£¬ÕâÁ½¸ö¹¤¾ßµÄ×÷ÓÃʱÏศÏà³ÉµÄ£¬ËüÃÇΪ¶à°æ±¾ResourceÌṩÁË·þÎñ¶Ë×Ô¶¯×ª»»µÄÄÜÁ¦£¬±ÈÈçÇ°ÃæÀý×ÓÖÐÌáµ½µÄv1alpha1.BeeºÍv1alpha2.BeeÖ®¼äµÄ×Ô¶¯×ª»»¡£

ͼ3.1.6µÄÀý×ÓÖÐv1alpha1.BeeÏòv1alpha2.Beeת»»Ê±£¬È±ÉÙÁËgender×ֶΣ¬ÔÚv1alpha2.BeeÖи³ÖµÎªÈ±Ê¡ÖµUnknown£»¶øv1alpha2.BeeÏòv1alpha1.Beeת»»Ê±£¬Ö»ÐèÒª½«ËüµÄlocation×ֶθ³Öµ¸øv1alpha1.Bee¼´¿É¡£

ÔÙ¿´conversion-gen£¬ËüʵÏÖÁ˲»Í¬°æ±¾µÄResourceÔÚ·þÎñ¶Ë×Ô¶¯×ª»»µÄÄÜÁ¦£¬ÕâÔÚAPI¼æÈÝÐÔÉè¼ÆÖÐÆðµ½ÁËÖÁ¹ØÖØÒªµÄ×÷Óã¬ÊDZÊÕß¿´À´ÕâÒ²ÊÇ×î³£ÓõĴúÂëÉú³É¹¤¾ß¡£

k8s:conversion-gen Ϊ¡°Ô´Package¡±ºÍ¡°Ä¿±êPackage¡±Ö®¼äµÄͬÃûStructÉú³É×Ô¶¯×ª»»´úÂë:

true/false: ÉùÃ÷ÊÇ·ñ×¢²áConversionÂß¼­£¬×÷ÓÃÓò¿ÉÒÔΪStructºÍField¡£

PackageÃû£ºÉùÃ÷Ϊµ±Ç°PackageºÍ´«ÈëµÄPackageÖÐͬÃûStructÉú³ÉConversionÂß¼­

k8s:conversion-gen-external-types: Ö¸¶¨Éú³ÉConversionµÄ¡°µ±Ç°Package¡±Î»Öã¬ÕâÊÇÒòΪÓÐʱºòµ±Ç°PackageÖÐResource¶¨ÒåÊǶÀÁ¢Î¬»¤µÄ¡£

ÐèҪעÒâµÄÊÇ£¬Í¼3.1.8ÖС°Ô´ÀàÐÍ¡±PackageÐèÒª±£Ö¤ºÍ¡°Ä¿±ê¡±Package·ÖÊô²»Í¬µÄ°æ±¾£¬·ñÔòÉú³ÉµÄMethod»á³öÏÖÖØÃûµÄÇé¿ö£¬ÎÞ·¨±àÒë¡£

ÀàÐÍת»»ÊÇGo¿ª·¢ÖÐÒ»¸ö±È½ÏÂé·³µÄµØ·½£¬¼ÓÖ®ÓïÑÔ²ãÃæ·´ÉäµÄÐÔÄܺͱê×¼¿âÖ§³Ö¶¼ÏÞÖÆÁË¿ª·¢µÄÁé»îÐÔ£¬×Ô¶¯×ª»»½Ó¿ÚΪAPIÔÚ½øÐмæÈÝÐÔµÄת»»Ê±×öµ½ÓÎÈÐÓÐÓà¡£

×îºó¿´defaulter-gen£¬ÔÚ¶¨ÒåÁËSetDefaultsº¯Êý£¨Í¼3.1.9£©Ö®ºó£¬ÎªÖ®×Ô¶¯Éú³ÉObject/ListµÈʹÓó¡¾°µÄDefaulterº¯ÊýºÍ×¢²áÂß¼­¡£

Éú³ÉDefaulter×¢²áº¯Êýºó£¬»¹ÐèҪע²áRegisterDefaults£¨Í¼3.1.10£©º¯Êý½«¸ÃĬÈÏÖµ¹æÔòÓ¦ÓÃÓÚÈÎÒâSchemeµÄ³õʼ»¯½×¶Î£¬ÔÚ¸ÃSchemeµÄ×÷Ó÷¶Î§ÄھͻáʹÓÃÊäÈëµÄĬÈÏÖµ¹æÔò¡£

defaulter-genÔÚά»¤×´Ì¬ÍêÕûÖÐÆðµ½ÖÁ¹ØÖØÒªµÄ×÷Óã¬Èç¹û²»Í¬°æ±¾µÄResource»¥Ïàת»»Ê±£¬È±Ê§µÄ×Ö¶ÎĬÈÏΪÁãÖµ£¬¶øÓÐÁ˳õʼ»¯Ä¬ÈÏÖµµÄÄÜÁ¦ºó£¬¾ÍÄܱ£Ö¤×ª»»µÄ½á¹ûʼÖÕÂú×ã¶ÔÓ¦ResourceµÄÓïÒåÔ¼Êø£¬ÈçÇ°ÃæÀý×ÓÖÐv1alpha2ÖÐÔö¼ÓÁËGender(ÐÔ±ð)ºó£¬¶ÁÈ¡v1alpha1Êý¾Ýʱ£¬Gender×Ö¶ÎĬÈϸø³öµÄÊÇ¿Õ×Ö·û´®£¬ÕâÏÔÈ»ÔÚÓïÒåÉÏÊÇ˵²»Í¨µÄ¡£

k8s:defaulter-gen:

true/false: Èç¹û×÷ÓÃÓòΪType£¬ÔòÉùÃ÷ÊÇ·ñΪTypeÉú³ÉDefaulter£»Èç¹û×÷ÓÃÓÚ

Function³£ÓÃÀ´Éú³ÉÃ÷Ã÷Âú×ãSetDefault_$Name¸ñʽµÄFunction

FIELDNAME: ÉùÃ÷ΪËùÓк¬Óд«ÈëµÄFieldµÄTypeÉú³ÉDefaulter£¬×÷ÓÃÓòΪPackage

k8s:defaulter-gen-input£ºÓÃÀ´Ö¸¶¨Éú³ÉDefaulterµÄÊäÈëPackage¡£

ͼ3.1.11 Ö¸¶¨ ¡°../../../../vendor/k8s.io/api/apps/v1¡± ×÷Ϊʵ¼ÊStructµÄÊäÈ룬ÔÚµ±Ç°Ä¿Â¼Éú³ÉDefaulter×¢²áÂß¼­¡£

´ËÍâKubernetesÖÐΪ¹¹½¨Áé»îµÄÀ©Õ¹ÌṩÁ˷ḻµÄ¸ß²ã´úÂëÉú³É¹¤¾ß£¬³¬³ö±¾ÎÄÒªÂÛÊöµÄ·¶³ë£¬²»×¸Êö¡£

¿Í»§¶Ë³éÏó

´úÂëÉú³É¹¤¾ß»¹¿ÉÒÔΪÀ©Õ¹³ÌÐòÉú³ÉÈýÖÖ³£ÓõĿͻ§¶Ë³éÏó£ºClientset, Lister, Informer¡£

Ïà±È״̬¶¨ÒåµÄ´úÂëÉú³É¹¤¾ßµÄ¸´ÔÓÅäÖ㬿ͻ§¶Ë´úÂëÉú³Éͨ³£Ê¹ÓÃĬÈÏÅäÖü´¿É¡£

ÆäÖÐClientset·â×°Á˶ÔResourceÒÔ¼°¶ÔÓ¦¼¯ºÏÀàÐ͵Ļù´¡CRUDÒÔ¼°³£Óø´ÔÓ¶Áд½Ó¿Ú£»Lister·â×°Á˶ÔResource°´ÕÕLabel¹ýÂ˵Ľӿڣ»InformerÌṩÁË״̬Ö÷¶¯·Ö·¢ÄÜÁ¦£¬Èÿͻ§¶ËÄܼàÌý·þÎñ¶Ë״̬µÄ±ä»¯²¢Ö´ÐÐÏàÓ¦µÄ»Øµ÷Âß¼­¡£ListerºÍInformerºÍAPI ServerͨÐŶ¼»ùÓÚClientsetʵÏÖ¡£

client.AlphaV1alpha2().Bees("default")·µ»ØµÄBeeInterface·â×°Á˾ßÌå°æ±¾µÄRESTful½Ó¿Ú£¬´Ë´¦¾ÍÊÇv1alpha2µÄRESTful½Ó¿Ú£¬ÕýÈçǰÎļæÈÝÐÔÉè¼Æ½éÉܵģ¬v1alpha2¿Í»§¶ËÊÇ¿ÉÒÔ¶ÁÈ¡v1alpha1.BeeµÄ ¡£

´Ë´¦AddEventHandler¿ÉÒÔ´«ÈëResourceEventHandler½Ó¿Ú£¬ÔÊÐíʵÏÖÈý¸ö»Øµ÷º¯Êý£¬Èçͼ3.2.3Ëùʾ¡£

OnAdd£º´´½¨Resourceʱ

OnUpdate£ºÐÞ¸ÄResourceʱ£¬»ò¶¨Ê±»ñÈ¡×îеÄResource״̬ʱ

OnDelete£ºÉ¾³ýResourceʱ

ÆäÖÐÖµµÃÒ»ÌáµÄÊÇOnUpdate±»µ÷ÓÃʱ£¬Resource²»Ò»¶¨ÕæµÄ±»Ð޸ģ¬Ò²¿ÉÄÜÖ»ÊǶ¨Ê±»ñÈ¡Resource×îеÄ״̬£¬Õâ¸ö»Øµ÷º¯Êý³£ÓÃÔÚÆô¶¯ºóÀ´×Ô¶¯»Ö¸´¿Í»§¶ËµÄ״̬¡£

С½á

´úÂëÉú³É³ýÁËÐèÒª½áºÏ¸÷ÖÖÐèÇóÁé»îʹÓÃTagÖ®Í⣬´ó²¿·ÖµÄ¹¤¾ßÉú³ÉµÄ´úÂë¶¼ÊÇ¿ÉÒÔ¾Ö²¿×Ô¶¨ÒåµÄ£¬±ÈÈçÏÖÔÚÓÐalpha/v1alpha2.BeeºÍbeta/v1beta1.BeeÁ½¸ö°æ±¾µÄBee£¬²¢ÎªËüÃÇÉú³ÉÁËconversionÂß¼­£¬ÓÐʱ»áÏ£Íû×Ô¶¨ÒåÉú³ÉµÄÂß¼­£¬Ö»ÐèÒªÔÚconversion´úÂëËùÔÚPackageÏÂÈÎÒâ´úÂëÎļþÌí¼Ó¾ßÓÐÏàͬǩÃûµÄº¯Êý£¬´úÂëÉú³É¹¤¾ß¾Í»áºöÂԸú¯Êý£¬³ä·ÖÀûÓôúÂëÉú³É¹¤¾ßµÄǰÌáÏÂÓÖ²»Ê§ÆäÁé»îÐÔ£¨Èçͼ3.3.1£©¡£

×ܽá

×Ôv1.0¿ªÊ¼£¬Kubernetes APIÐγÉÒ»Ì×ÍêÕûµÄ״̬¹ÜÀí½â¾ö·½°¸£¬ Æä¸ß¶ÈÁé»îµÄAPI ServerºÍ¿Í»§¶ËʵÏÖ¿ÉÒÔΪÈÎÒ⸴ÔÓϵͳÌṩ״̬¹ÜÀíÖ§³Ö ¡£

ÈÃÈËÑÛǰһÁÁµÄÊÇËüµÄ¼æÈÝÐÔÉè¼Æ£¬ËüΪµÚÈý·½À©Õ¹ÌṩÁËÎȶ¨µÄ½Ó¿Ú£»µÚÈý·½À©Õ¹¼¯³Éµ½Æ½Ì¨Öкó£¬Î¬»¤ÖÜÆÚ¿ÉÒÔºÍÆ½Ì¨±£³ÖÏà¶Ô¶ÀÁ¢¡£¼æÈÝÐÔÉè¼Æ¶Ô΢·þÎñÄ£¿éµÄÉè¼ÆºÍʵÏÖÒ²¾ßÓм«Ç¿µÄÖ¸µ¼ÒâÒ壬΢·þÎñÖÐÒ»¸öÖØÒªµÄÖ¸µ¼Ô­ÔòÖ®Ò»¾ÍÊÇ¡°×ÔÖΡ±£¬Ä£¿éÖ®¼äµÄService Contract²»µ«ÐèÒª×öµ½Îȶ¨¿É¿¿£¬»¹ÐèÒª×öµ½ÏòϼæÈÝ£¬·ñÔò¾Í»á³öÏÖÄ£¿éÖ®¼ä»¥ÏàÓ°Ï죬¾ÍÓë¡°×ÔÖΡ±Õâ¸ö»ù±¾¼ÙÉèì¶ÜÁË¡£

API¾ÛºÏ²ã²»½öΪKubernetes APIServerÌṩÁËÎÞÏÞºáÏòÀ©Õ¹ÄÜÁ¦£¬¶ÀÁ¢µÄAPIServer¿ÉÒÔÓµÓжÀÁ¢µÄ´æ´¢£¨²»Ò»¶¨ÊÇETCD£©£¬ÕâÒâζ×ÅÊý¾ÝÁ¿²»ÔÙÊÇAPIServerµÄÆ¿¾±£¬Ò²Èÿͻ§¶Ë²å¼þÎ޷켯³É³ÉΪ¿ÉÄÜ¡£

»¹ÓÐKubernetesÌṩµÄ´úÂëÉú³É¹¤¾ßÁ´Ò²ºÜÖµµÃ½è¼ø£¬ ÕâЩ¹¤¾ß²»µ«¼«´óµÄ½µµÍÁËÀ©Õ¹¿ª·¢µÄ³É±¾£¬»¹Îª×Ô¶¯Éú³ÉµÄ´úÂëÌṩÁ˶¨ÖÆÄÜÁ¦¡£

Ëûɽ֮ʯ¿ÉÒÔ¹¥Óñ£¬Kubernetes×÷ΪGoogleµÄÖØÒª¿ªÔ´ÏîĿ֮һ£¬¼¯ÖÐÌåÏÖÁËGoogleÓÅÐãµÄ·Ö²¼Ê½ÏµÍ³Êµ¼ù£¬Ò²ÎªGoÉçÇøÌṩÁËÖî¶àÁ¼ºÃµÄµä·¶¡£

 

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

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤