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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Kubernetes APIÏê½â
 
 À´Ô´£ºCSDN  ·¢²¼ÓÚ 2016-2-26
  2878  次浏览      32
 

ÕªÒª£ºKubernetesÊÇGoogle¿ªÔ´µÄÈÝÆ÷¼¯Èº¹ÜÀíϵͳ¡£Ëü¹¹½¨Ddocker¼¼ÊõÖ®ÉÏ£¬ÎªÈÝÆ÷»¯µÄÓ¦ÓÃÌṩ×ÊÔ´µ÷¶È¡¢²¿ÊðÔËÐС¢·þÎñ·¢ÏÖ¡¢À©ÈÝËõÈݵÈÕûÒ»Ì×¹¦ÄÜ£¬±¾ÎĽÚÑ¡×Ô¹¨ÕýµÄ¡¶kubernetesȨÍþÖ¸ÄÏ¡·Ò»ÊéµÄµÚÈýÕÂ3.2½Ú£¬»ñµÃ³ö°æÉçºÍ×÷ÕߵĶÀ¼ÒÊÚȨ·¢²¼¡£±¾½ÚÖØµã½²ÊöÁËkubernetesµÄAPI¸ÅÊö¡£

Kubernetes API¸ÅÊö

Kubernetes APIÊǼ¯ÈºÏµÍ³ÖеÄÖØÒª×é³É²¿·Ö£¬KubernetesÖи÷ÖÖ×ÊÔ´£¨¶ÔÏ󣩵ÄÊý¾Ýͨ¹ý¸ÃAPI½Ó¿Ú±»Ìá½»µ½ºó¶ËµÄ³Ö¾Ã»¯´æ´¢£¨etcd£©ÖУ¬Kubernetes¼¯ÈºÖеĸ÷²¿¼þÖ®¼äͨ¹ý¸ÃAPI½Ó¿ÚʵÏÖ½âñîºÏ£¬Í¬Ê±Kubernetes¼¯ÈºÖÐÒ»¸öÖØÒªÇÒ±ã½ÝµÄ¹ÜÀí¹¤¾ßkubectlÒ²ÊÇͨ¹ý·ÃÎʸÃAPI½Ó¿ÚʵÏÖÆäÇ¿´óµÄ¹ÜÀí¹¦Äܵġ£Kubernetes APIÖеÄ×ÊÔ´¶ÔÏó¶¼ÓµÓÐͨÓõÄÔªÊý¾Ý£¬×ÊÔ´¶ÔÏóÒ²¿ÉÄÜ´æÔÚǶÌ×ÏÖÏ󣬱ÈÈçÔÚÒ»¸öPodÀïÃæÇ¶Ì×¶à¸öContainer¡£´´½¨Ò»¸öAPI¶ÔÏóÊÇָͨ¹ýAPIµ÷Óô´½¨Ò»ÌõÓÐÒâÒåµÄ¼Ç¼£¬¸Ã¼Ç¼һµ©±»´´½¨£¬Kubernetes½«È·±£¶ÔÓ¦µÄ×ÊÔ´¶ÔÏó»á±»×Ô¶¯´´½¨²¢ÍйÜά»¤¡£

ÔÚKubernetesϵͳÖУ¬´ó¶àÊýÇé¿öÏ£¬API¶¨ÒåºÍʵÏÖ¶¼·ûºÏ±ê×¼µÄHTTP REST¸ñʽ£¬ ±ÈÈçͨ¹ý±ê×¼µÄHTTP¶¯´Ê£¨POST¡¢PUT¡¢GET¡¢DELETE£©À´Íê³É¶ÔÏà¹Ø×ÊÔ´¶ÔÏóµÄ²éѯ¡¢´´½¨¡¢Ð޸ġ¢É¾³ýµÈ²Ù×÷¡£µ«Í¬Ê±Kubernetes ҲΪijЩ·Ç±ê×¼µÄRESTÐÐΪʵÏÖÁ˸½¼ÓµÄAPI½Ó¿Ú£¬ÀýÈçWatchij¸ö×ÊÔ´µÄ±ä»¯¡¢½øÈëÈÝÆ÷Ö´ÐÐij¸ö²Ù×÷µÈ¡£ÁíÍ⣬ijЩAPI½Ó¿Ú¿ÉÄÜÎ¥±³ÑϸñµÄRESTģʽ£¬ÒòΪ½Ó¿Ú²»ÊÇ·µ»Øµ¥Ò»µÄJSON¶ÔÏ󣬶øÊÇ·µ»ØÆäËûÀàÐ͵ÄÊý¾Ý£¬±ÈÈçJSON¶ÔÏóÁ÷£¨Stream£©»ò·Ç½á¹¹»¯µÄÎı¾ÈÕÖ¾Êý¾ÝµÈ¡£

Kubernetes¿ª·¢ÈËÔ±ÈÏΪ£¬Èκγɹ¦µÄϵͳ¶¼»á¾­ÀúÒ»¸ö²»¶Ï³É³¤ºÍ²»¶ÏÊÊÓ¦¸÷ÖÖ±ä¸üµÄ¹ý³Ì¡£Òò´Ë£¬ËûÃÇÆÚÍûKubernetes APIÊDz»¶Ï±ä¸üºÍÔö³¤µÄ¡£Í¬Ê±£¬ËûÃÇÔÚÉè¼ÆºÍ¿ª·¢Ê±£¬ÓÐÒâʶµØ¼æÈÝÁËÒÑ´æÔڵĿͻ§ÐèÇó¡£Í¨³££¬ÐµÄAPI×ÊÔ´£¨Resource£©ºÍеÄ×ÊÔ´Óò²»Ï£Íû±»Æµ·±µØ¼ÓÈëϵͳ¡£×ÊÔ´»òÓòµÄɾ³ýÐèÒªÒ»¸öÑϸñµÄÉóºËÁ÷³Ì¡£

ΪÁË·½±ã²éÔÄAPI½Ó¿ÚµÄÏêϸ¶¨Ò壬KubernetesʹÓÃÁËswagger-uiÌṩAPIÔÚÏß²éѯ¹¦ÄÜ£¬Æä¹ÙÍøÎªhttp://kubernetes.io/third_party/swagger-ui/£¬Kubernetes¿ª·¢ÍŶӻᶨÆÚ¸üС¢Éú³ÉUI¼°Îĵµ¡£Swagger UIÊÇÒ»¿îREST APIÎĵµÔÚÏß×Ô¶¯Éú³ÉºÍ¹¦ÄܲâÊÔÈí¼þ£¬¹ØÓÚSwaggerµÄÄÚÈÝÇë·ÃÎʹÙÍøhttp://swagger.io¡£

ÔËÐÐÔÚMaster½ÚµãÉϵÄAPI Server½ø³ÌͬʱÌṩÁËswagger-uiµÄ·ÃÎʵØÖ·£ºhttp://: /swagger-ui/¡£¼ÙÉèÎÒÃǵÄAPI Server°²×°ÔÚ192.168.1.128·þÎñÆ÷ÉÏ£¬°ó¶¨ÁË8080¶Ë¿Ú£¬Ôò¿ÉÒÔͨ¹ý·ÃÎÊ

http://192.168.1.128:8080/swagger-ui/À´²é¿´APIÐÅÏ¢£¬Èçͼ3.1Ëùʾ¡£

ͼ3.1 swagger-ui

µ¥»÷api/v1¿ÉÒԲ鿴ËùÓÐAPIµÄÁÐ±í£¬Èçͼ3.2Ëùʾ¡£

ͼ3.2 ²é¿´APIÁбí

ÒÔcreate a PodΪÀý£¬ÕÒµ½Rest APIµÄ·ÃÎÊ·¾¶

Ϊ£º/api/v1/namespaces/{namespace}/pods£¬Èçͼ3.3Ëùʾ¡£

ͼ3.3 Create a Pod API

µ¥»÷Á´½ÓÕ¹¿ª£¬¼´¿É²é¿´ÏêϸµÄAPI½Ó¿Ú˵Ã÷£¬Èçͼ3.4Ëùʾ¡£

ͼ3.4 Create a Pod APIÏêϸ˵Ã÷

µ¥»÷ModelÁ´½Ó£¬Ôò¿ÉÒԲ鿴Îı¾¸ñʽÏÔʾµÄAPI½Ó¿ÚÃèÊö£¬Èçͼ3.5Ëùʾ¡£

ͼ3.5 Create a Pod APIÎı¾¸ñʽÏêϸ˵Ã÷

ÎÒÃÇ¿´µ½£¬ÔÚKubernetes APIÖУ¬Ò»¸öAPIµÄ¶¥²ã£¨Top Level£©ÔªËØÓÉkind¡¢apiVersion¡¢metadata¡¢specºÍstatusµÈ¼¸¸ö²¿·Ö×é³É£¬½ÓÏÂÀ´£¬ÎÒÃÇ·Ö±ð¶ÔÕ⼸¸ö²¿·Ö½øÐÐ˵Ã÷¡£

kind±íÃ÷¶ÔÏóÓÐÒÔÏÂÈý´óÀà±ð¡£

£¨1£©¶ÔÏó£¨objects£©£º´ú±íÔÚϵͳÖеÄÒ»¸öÓÀ¾Ã×ÊÔ´£¨ÊµÌ壩£¬ÀýÈçPod¡¢RC¡¢Service¡¢Namespace¼°NodeµÈ¡£Í¨¹ý²Ù×÷ÕâЩ×ÊÔ´µÄÊôÐÔ£¬¿Í»§¶Ë¿ÉÒԶԸöÔÏó×ö´´½¨¡¢Ð޸ġ¢É¾³ýºÍ»ñÈ¡²Ù×÷¡£

£¨2£©ÁÐ±í£¨list£©£ºÒ»¸ö»ò¶à¸ö×ÊÔ´Àà±ðµÄ¼¯ºÏ¡£ÁбíÓÐÒ»¸öͨÓÃÔªÊý¾ÝµÄÓÐÏÞ¼¯ºÏ¡£ËùÓÐÁÐ±í£¨lists£©Í¨¹ý¡°items¡±Óò»ñµÃ¶ÔÏóÊý×é¡£ÀýÈçPodLists¡¢ServiceLists¡¢NodeLists¡£´ó²¿·Ö¶¨ÒåÔÚϵͳÖеĶÔÏó¶¼ÓÐÒ»¸ö·µ»ØËùÓÐ×ÊÔ´£¨resource£©¼¯ºÏµÄ¶Ëµã£¬ÒÔ¼°Áãµ½¶à¸ö·µ»ØËùÓÐ×ÊÔ´¼¯ºÏµÄ×Ó¼¯µÄ¶Ëµã¡£Ä³Ð©¶ÔÏóÓпÉÄÜÊǵ¥Àý¶ÔÏó£¨singletons£©£¬ÀýÈ統ǰÓû§¡¢ÏµÍ³Ä¬ÈÏÓû§µÈ£¬ÕâЩ¶ÔÏóûÓÐÁÐ±í¡£

£¨3£©¼òµ¥Àà±ð£¨simple£©£º¸ÃÀà±ð°üº¬×÷ÓÃÔÚ¶ÔÏóÉϵÄÌØÊâÐÐΪºÍ·Ç³Ö¾ÃʵÌå¡£¸ÃÀà±ðÏÞÖÆÁËʹÓ÷¶Î§£¬ËüÓÐÒ»¸öͨÓÃÔªÊý¾ÝµÄÓÐÏÞ¼¯ºÏ£¬ÀýÈçBinding¡¢ Status¡£

apiVersion±íÃ÷APIµÄ°æ±¾ºÅ£¬µ±Ç°°æ±¾Ä¬ÈÏÖ»Ö§³Öv1¡£

MetadataÊÇ×ÊÔ´¶ÔÏóµÄÔªÊý¾Ý¶¨Ò壬ÊǼ¯ºÏÀàµÄÔªËØÀàÐÍ£¬°üº¬Ò»×éÓɲ»Í¬Ãû³Æ¶¨ÒåµÄÊôÐÔ¡£ÔÚKubernetesÖÐÿ¸ö×ÊÔ´¶ÔÏó¶¼±ØÐë°üº¬ÒÔÏÂ3ÖÖMetadata¡£

£¨1£©namespace£º¶ÔÏóËùÊôµÄÃüÃû¿Õ¼ä£¬Èç¹û²»Ö¸¶¨£¬ÏµÍ³Ôò»á½«¶ÔÏóÖÃÓÚÃûΪ¡°default¡±µÄϵͳÃüÃû¿Õ¼äÖС£

£¨2£©name£º¶ÔÏóµÄÃû×Ö£¬ÔÚÒ»¸öÃüÃû¿Õ¼äÖÐÃû×ÖÓ¦¾ß±¸Î¨Ò»ÐÔ¡£

£¨3£©uid£ºÏµÍ³ÎªÃ¿¸ö¶ÔÏóÉú³ÉµÄΨһID£¬·ûºÏRFC 4122¹æ·¶µÄ¶¨Òå¡£

´ËÍ⣬ÿÖÖ¶ÔÏó»¹Ó¦¸Ã°üº¬ÒÔϼ¸¸öÖØÒªÔªÊý¾Ý¡£

  1. labels£ºÓû§¿É¶¨ÒåµÄ¡°±êÇ©¡±£¬¼üºÍÖµ¶¼Îª×Ö·û´®µÄmap£¬ÊǶÔÏó½øÐÐ×éÖ¯ºÍ·ÖÀàµÄÒ»ÖÖÊֶΣ¬Í¨³£ÓÃÓÚ±êǩѡÔñÆ÷£¨Label Selector£©£¬ÓÃÀ´Æ¥ÅäÄ¿±ê¶ÔÏó¡£
  2. annotations£ºÓû§¿É¶¨ÒåµÄ¡°×¢½â¡±£¬¼üºÍÖµ¶¼Îª×Ö·û´®µÄmap£¬±»KubernetesÄÚ²¿½ø³Ì»òÕßijЩÍⲿ¹¤¾ßʹÓã¬ÓÃÓÚ´æ´¢ºÍ»ñÈ¡¹ØÓڸöÔÏóµÄÌØ¶¨ÔªÊý¾Ý¡£
  3. resourceVersion£ºÓÃÓÚʶ±ð¸Ã×ÊÔ´ÄÚ²¿°æ±¾ºÅµÄ×Ö·û´®£¬ÔÚÓÃÓÚWatch²Ù×÷ʱ£¬¿ÉÒÔ±ÜÃâÔÚGET²Ù×÷ºÍÏÂÒ»´ÎWatch²Ù×÷Ö®¼äÔì³ÉµÄÐÅÏ¢²»Ò»Ö£¬¿Í»§¶Ë¿ÉÒÔÓÃËüÀ´ÅжÏ×ÊÔ´ÊÇ·ñ¸Ä±ä¡£¸ÃÖµÓ¦¸Ã±»¿Í»§¶Ë¿´×÷²»Í¸Ã÷£¬ÇÒ²»×öÈκÎÐ޸ľͷµ»Ø¸ø·þÎñ¶Ë¡£¿Í»§¶Ë²»Ó¦¸Ã¼Ù¶¨°æ±¾ÐÅÏ¢¾ßÓпçÃüÃû¿Õ¼ä¡¢¿ç²»Í¬×ÊÔ´Àà±ð¡¢¿ç²»Í¬·þÎñÆ÷µÄº¬Òå¡£
  4. creationTimestamp£ºÏµÍ³¼Ç¼´´½¨¶ÔÏóʱµÄʱ¼ä´Á£¬·ûºÏRFC 3339¹æ·¶¡£
  5. deletionTimestamp£ºÏµÍ³¼Ç¼ɾ³ý¶ÔÏóʱµÄʱ¼ä´Á£¬·ûºÏRFC 3339¹æ·¶¡£
  6. selfLink£ºÍ¨¹ýAPI·ÃÎÊ×ÊÔ´×ÔÉíµÄURL£¬ÀýÈçÒ»¸öPodµÄlink¿ÉÄÜÊÇ/api/v1/namespaces/ default/pods/frontend-o8bg4¡£

specÊǼ¯ºÏÀàµÄÔªËØÀàÐÍ£¬Óû§¶ÔÐèÒª¹ÜÀíµÄ¶ÔÏó½øÐÐÏêϸÃèÊöµÄÖ÷Ì岿·Ö¶¼ÔÚspecÀï¸ø³ö£¬Ëü»á±»Kubernetes³Ö¾Ã»¯µ½etcdÖб£´æ£¬ÏµÍ³Í¨¹ýspecµÄÃèÊöÀ´´´½¨»ò¸üжÔÏó£¬ÒÔ´ïµ½Óû§ÆÚÍûµÄ¶ÔÏóÔËÐÐ״̬¡£specµÄÄÚÈݼȰüÀ¨Óû§ÌṩµÄÅäÖÃÉèÖá¢Ä¬ÈÏÖµ¡¢ÊôÐԵijõʼ»¯Öµ£¬Ò²°üÀ¨ÔÚ¶ÔÏó´´½¨¹ý³ÌÖÐÓÉÆäËûÏà¹Ø×é¼þ£¨ÀýÈçschedulers¡¢auto-scalers£©´´½¨»òÐ޸ĵĶÔÏóÊôÐÔ£¬±ÈÈçPodµÄService IPµØÖ·¡£Èç¹ûspec±»É¾³ý£¬ÄÇô¸Ã¶ÔÏ󽫻á´ÓϵͳÖб»É¾³ý¡£

StatusÓÃÓڼǼ¶ÔÏóÔÚϵͳÖеĵ±Ç°×´Ì¬ÐÅÏ¢£¬ËüÒ²ÊǼ¯ºÏÀàÔªËØÀàÐÍ£¬statusÔÚÒ»¸ö×Ô¶¯´¦ÀíµÄ½ø³ÌÖб»³Ö¾Ã»¯£¬¿ÉÒÔÔÚÁ÷תµÄ¹ý³ÌÖÐÉú³É¡£Èç¹û¹Û²ìµ½Ò»¸ö×ÊÔ´¶ªÊ§ÁËËüµÄ״̬£¨Status£©£¬Ôò¸Ã¶ªÊ§µÄ״̬¿ÉÄܱ»ÖØÐ¹¹Ôì¡£ÒÔPodΪÀý£¬PodµÄstatusÐÅÏ¢Ö÷Òª°üÀ¨conditions¡¢containerStatuses¡¢hostIP¡¢phase¡¢podIP¡¢startTimeµÈ¡£ÆäÖбȽÏÖØÒªµÄÁ½¸ö״̬ÊôÐÔÈçÏ¡£

£¨1£©phase£ºÃèÊö¶ÔÏóËù´¦µÄÉúÃüÖÜÆÚ½×¶Î£¬phaseµÄµäÐÍÖµÊÇ¡°Pending¡±£¨´´½¨ÖУ©¡°Running¡±¡°Active¡±£¨ÕýÔÚÔËÐÐÖУ©»ò¡°Terminated¡±£¨ÒÑÖսᣩ£¬Õ⼸ÖÖ״̬¶ÔÓÚ²»Í¬µÄ¶ÔÏó¿ÉÄÜÓÐÇá΢µÄ²î±ð£¬´ËÍ⣬¹ØÓÚµ±Ç°phase¸½¼ÓµÄÏêϸ˵Ã÷¿ÉÄܰüº¬ÔÚÆäËûÓòÖС£

£¨2£©condition£º±íʾÌõ¼þ£¬ÓÉÌõ¼þÀàÐͺÍ״ֵ̬×é³É£¬Ä¿Ç°½öÓÐÒ»ÖÖÌõ¼þÀàÐÍReady£¬¶ÔÓ¦µÄ״ֵ̬¿ÉÒÔΪTrue¡¢False»òUnknown¡£Ò»¸ö¶ÔÏó¿ÉÒԾ߱¸¶àÖÖcondition£¬¶øconditionµÄ״ֵ̬Ҳ¿ÉÄܲ»¶Ï·¢Éú±ä»¯£¬condition¿ÉÄܸ½´øÒ»Ð©ÐÅÏ¢£¬ÀýÈç×îºóµÄ̽²âʱ¼ä»ò×îºóµÄת±äʱ¼ä¡£

3.2.2 API°æ±¾

ΪÁËÔÚ¼æÈݾɰ汾µÄͬʱ²»¶ÏÉý¼¶ÐµÄAPI£¬Kubernetes ÌṩÁË¶à°æ±¾APIµÄÖ§³ÖÄÜÁ¦£¬Ã¿¸ö°æ±¾µÄAPIͨ¹ýÒ»¸ö°æ±¾ºÅ·¾¶Ç°×º½øÐÐÇø·Ö£¬ÀýÈç/api/v1beta3¡£Í¨³£Çé¿öÏ£¬Ð¾ɼ¸¸ö²»Í¬µÄAPI°æ±¾¶¼Äܺ­¸ÇËùÓеÄKubernetes×ÊÔ´¶ÔÏó£¬ÔÚ²»Í¬µÄ°æ±¾Ö®¼äÕâЩAPI½Ó¿Ú´æÔÚһЩϸ΢²î±ð¡£Kubernetes¿ª·¢ÍŶӻùÓÚAPI¼¶±ðÑ¡Ôñ°æ±¾¶ø²»ÊÇ»ùÓÚ×ÊÔ´ºÍÓò¼¶±ð£¬ÊÇΪÁËÈ·±£APIÄܹ»ÃèÊöÒ»¸öÇåÎúµÄÁ¬ÐøµÄϵͳ×ÊÔ´ºÍÐÐΪµÄÊÓͼ£¬Äܹ»¿ØÖÆ·ÃÎʵÄÕû¸ö¹ý³ÌºÍ¿ØÖÆÊµÑéÐÔAPIµÄ·ÃÎÊ¡£

API¼°°æ±¾·¢²¼½¨ÒéÃèÊöÁ˰汾Éý¼¶µÄµ±Ç°Ë¼Â·¡£°æ±¾v1beta1¡¢v1beta2ºÍ v1beta3 Ϊ²»½¨ÒéʹÓã¨Deprecated£©µÄ°æ±¾£¬Ç뾡¿ìתµ½v1°æ±¾¡£ÔÚ2015Äê6ÔÂ4ÈÕ£¬Kubernetes v1°æ±¾APIÕýʽ·¢²¼¡£°æ±¾v1beta1ºÍv1beta2 APIÔÚ2015Äê6ÔÂ1ÈÕ±»É¾³ý£¬°æ±¾v1beta3 APIÔÚ2015Äê7ÔÂ6ÈÕ±»É¾³ý¡£

APIÏêϸ˵Ã÷

API ×ÊԴʹÓÃRESTģʽ£¬¾ßÌå˵Ã÷ÈçÏ¡£

  • GET /<×ÊÔ´ÃûµÄ¸´Êý¸ñʽ>£º»ñµÃijһÀàÐ͵Ä×ÊÔ´ÁÐ±í£¬ÀýÈçGET /pods ·µ»ØÒ»¸öPod×ÊÔ´ÁÐ±í¡£
  • POST /<×ÊÔ´ÃûµÄ¸´Êý¸ñʽ>£º´´½¨Ò»¸ö×ÊÔ´£¬¸Ã×ÊÔ´À´×ÔÓû§ÌṩµÄJSON¶ÔÏó¡£
  • GET /<×ÊÔ´Ãû¸´Êý¸ñʽ>/<Ãû×Ö>£ºÍ¨¹ý¸ø³öµÄÃû³Æ£¨Name£©»ñµÃµ¥¸ö×ÊÔ´£¬ÀýÈçGET /pods/first ·µ»ØÒ»¸öÃû³ÆÎª¡°first¡±µÄPod¡£
  • DELETE /<×ÊÔ´Ãû¸´Êý¸ñʽ>/<Ãû×Ö>£ºÍ¨¹ý¸ø³öµÄÃû×Öɾ³ýµ¥¸ö×ÊÔ´£¬É¾³ýÑ¡ÏDeleteOptions£©ÖпÉÒÔÖ¸¶¨µÄÓÅÑÅɾ³ý£¨Grace Deletion£©µÄʱ¼ä£¨GracePeriodSeconds£©£¬¸Ã¿ÉÑ¡Ïî±íÃ÷ÁË´Ó·þÎñ¶Ë½ÓÊÕµ½É¾³ýÇëÇóµ½×ÊÔ´±»É¾³ýµÄʱ¼ä¼ä¸ô£¨µ¥Î»ÎªÃ룩¡£²»Í¬µÄÀà±ð£¨Kind£©¿ÉÄÜΪÓÅÑÅɾ³ýʱ¼ä£¨Grace Period£©ÉêÃ÷ĬÈÏÖµ¡£Óû§Ìá½»µÄÓÅÑÅɾ³ýʱ¼ä½«¸²¸Ç¸ÃĬÈÏÖµ£¬°üÀ¨ÖµÎª0µÄÓÅÑÅɾ³ýʱ¼ä¡£
  • PUT /<×ÊÔ´Ãû¸´Êý¸ñʽ>/<Ãû×Ö>£ºÍ¨¹ý¸ø³öµÄ×ÊÔ´ÃûºÍ¿Í»§¶ËÌṩµÄJSON¶ÔÏóÀ´¸üлò´´½¨×ÊÔ´¡£
  • PATCH /<×ÊÔ´Ãû¸´Êý¸ñʽ>/<Ãû×Ö>£ºÑ¡ÔñÐÞ¸Ä×ÊÔ´Ïêϸָ¶¨µÄÓò¡£ ¶ÔÓÚPATCH²Ù×÷£¬Ä¿Ç°Kubernetes APIͨ¹ýÏàÓ¦µÄHTTPÊײ¿¡°Content-Type¡±¶ÔÆä½øÐÐʶ±ð¡£

Ŀǰ֧³ÖÒÔÏÂÈýÖÖÀàÐ͵ÄPATCH²Ù×÷¡£

  1. JSON Patch, Content-Type: application/json-patch+json¡£ÔÚRFC6902µÄ¶¨ÒåÖУ¬JSON PatchÊÇÖ´ÐÐÔÚ×ÊÔ´¶ÔÏóÉϵÄһϵÁвÙ×÷£¬ÀýÈç {£¢op£¢: £¢add£¢, £¢path£¢: £¢/a/b/c£¢, £¢value£¢: [ £¢foo£¢, £¢bar£¢ ]}¡£ÏêÇéÇë²é¿´RFC6902˵Ã÷£¬ÍøÖ·ÎªHTTPs://tools.ietf.org/html/rfc6902¡£
  2. Merge Patch, Content-Type: application/merge-json-patch+json¡£ÔÚRFC7386µÄ¶¨ÒåÖУ¬Merge Patch±ØÐë°üº¬¶ÔÒ»¸ö×ÊÔ´¶ÔÏóµÄ²¿·ÖÃèÊö£¬Õâ¸ö×ÊÔ´¶ÔÏóµÄ²¿·ÖÃèÊö¾ÍÊÇÒ»¸öJSON¶ÔÏ󡣸ÃJSON¶ÔÏó±»Ìá½»µ½·þÎñ¶Ë£¬²¢ºÍ·þÎñ¶ËµÄµ±Ç°¶ÔÏóºÏ²¢£¬´Ó¶ø´´½¨Ò»¸öеĶÔÏó¡£ÏêÇéÇë²é¿´RFC73862˵Ã÷£¬ÍøÖ·ÎªHTTPs://tools.ietf.org/html/rfc7386¡£
  3. Strategic Merge Patch, Content-Type: application/strategic-merge-patch+json¡£
    Strategic Merge PatchÊÇÒ»¸ö¶¨ÖÆ»¯µÄMerge PatchʵÏÖ¡£½ÓÏÂÀ´½«Ïêϸ½²½âStrategic Merge Patch¡£

ÔÚ±ê×¼µÄJSON Merge PatchÖУ¬JSON¶ÔÏó×ÜÊDZ»ºÏ²¢£¨merge£©µÄ£¬µ«ÊÇ×ÊÔ´¶ÔÏóÖеÄÁбíÓò×ÜÊDZ»Ìæ»»µÄ¡£Í¨³£Õâ²»ÊÇÓû§ËùÏ£ÍûµÄ¡£ÀýÈ磬ÎÒÃÇͨ¹ýÏÂÁж¨Òå´´½¨Ò»¸öPod×ÊÔ´¶ÔÏó£º

spec:
containers:
- name: nginx
image: nginx-1.0

½Ó×ÅÎÒÃÇÏ£ÍûÌí¼ÓÒ»¸öÈÝÆ÷µ½Õâ¸öPodÖУ¬´úÂëºÍÉÏ´«µÄJSON¶ÔÏóÈçÏÂËùʾ£º

PATCH /api/v1/namespaces/default/pods/pod-name
spec:
containers:
- name: log-tailer
image: log-tailer-1.0

Èç¹ûÎÒÃÇʹÓñê×¼µÄMerge Patch£¬ÔòÆäÖеÄÕû¸öÈÝÆ÷ÁÐ±í½«±»µ¥¸öµÄ¡°log-tailer¡±ÈÝÆ÷ËùÌæ»»¡£È»¶øÎÒÃǵÄÄ¿µÄÊÇÁ½¸öÈÝÆ÷ÁбíÄܹ»ºÏ²¢¡£

ΪÁ˽â¾öÕâ¸öÎÊÌ⣬Strategic Merge Patchͨ¹ýÌí¼ÓÔªÊý¾Ýµ½API¶ÔÏóÖУ¬²¢Í¨¹ýÕâЩÐÂÔªÊý¾ÝÀ´¾ö¶¨ÄĸöÁÐ±í±»ºÏ²¢£¬ÄĸöÁÐ±í²»±»ºÏ²¢¡£µ±Ç°ÕâЩԪÊý¾Ý×÷Ϊ½á¹¹±êÇ©£¬¶ÔÓÚAPI¶ÔÏó×ÔÉíÀ´ËµÊǺϷ¨µÄ¡£¶ÔÓÚ¿Í»§¶ËÀ´Ëµ£¬ÕâЩԪÊý¾Ý×÷ΪSwagger annotationsÒ²ÊǺϷ¨µÄ¡£ÔÚÉÏÊöÀý×ÓÖУ¬Ïò¡°containers¡±ÖÐÌí¼Ó¡°patchStrategy¡±Óò£¬ÇÒËüµÄֵΪ¡°merge¡±£¬Í¨¹ýÌí¼Ó¡°patchMergeKey¡±£¬ËüµÄֵΪ¡°name¡±¡£Ò²¾ÍÊÇ˵£¬¡°containers¡±ÖеÄÁÐ±í½«»á±»ºÏ²¢¶ø²»ÊÇÌæ»»£¬ºÏ²¢µÄÒÀ¾ÝΪ¡°name¡±ÓòµÄÖµ¡£

´ËÍ⣬Kubernetes APIÌí¼ÓÁË×ÊÔ´±ä¶¯µÄ¡°¹Û²ìÕß¡±Ä£Ê½µÄAPI½Ó¿Ú¡£

  • GET /watch/<×ÊÔ´Ãû¸´Êý¸ñʽ>£ºËæÊ±¼ä±ä»¯£¬²»¶Ï½ÓÊÕÒ»Á¬´®µÄJSON¶ÔÏó£¬ÕâЩJSON¶ÔÏó¼Ç¼Á˸ø¶¨×ÊÔ´Àà±ðÄÚËùÓÐ×ÊÔ´¶ÔÏóµÄ±ä»¯Çé¿ö¡£
  • GET /watch/<×ÊÔ´Ãû¸´Êý¸ñʽ>/£ºËæÊ±¼ä±ä»¯£¬²»¶Ï½ÓÊÕÒ»Á¬´®µÄJSON¶ÔÏó£¬ÕâЩJSON¶ÔÏó¼Ç¼ÁËij¸ö¸ø¶¨×ÊÔ´¶ÔÏóµÄ±ä»¯Çé¿ö¡£
    ÉÏÊö½Ó¿Ú¸Ä±äÁË·µ»ØÊý¾ÝµÄ»ù±¾Àà±ð£¬watch¶¯´Ê·µ»ØµÄÊÇÒ»Á¬´®µÄJSON¶ÔÏ󣬶ø²»Êǵ¥¸öµÄJSON¶ÔÏó¡£²¢²»ÊÇËùÓеĶÔÏóÀà±ð¶¼Ö§³Ö¡°¹Û²ìÕß¡±Ä£Ê½µÄAPI½Ó¿Ú£¬ÔÚºóÐøµÄÕ½ÚÖн«»á˵Ã÷ÄÄЩ×ÊÔ´¶ÔÏóÖ§³ÖÕâÖÖ½Ó¿Ú¡£
    ÁíÍ⣬Kubernetes»¹Ôö¼ÓÁËHTTP RedirectÓëHTTP ProxyÕâÁ½ÖÖÌØÊâµÄAPI½Ó¿Ú£¬Ç°ÕßʵÏÖ×ÊÔ´ÖØ¶¨Ïò·ÃÎÊ£¬ºóÕßÔòʵÏÖHTTPÇëÇóµÄ´úÀí¡£

APIÏìӦ˵Ã÷

API ServerÏìÓ¦Óû§ÇëÇóʱ¸½´øÒ»¸ö״̬Â룬¸Ã״̬Âë·ûºÏHTTP¹æ·¶¡£±í3.1ÁгöÁËAPI Server¿ÉÄÜ·µ»ØµÄ״̬Âë¡£

±í3.1 API Server¿ÉÄÜ·µ»ØµÄ״̬Âë

ÔÚµ÷ÓÃAPI½Ó¿Ú·¢Éú´íÎóʱ£¬Kubernetes ½«»á·µ»ØÒ»¸ö״̬Àà±ð£¨Status Kind£©¡£ÏÂÃæÊÇÁ½ÖÖ³£¼ûµÄ´íÎ󳡾°£º

£¨1£©µ±Ò»¸ö²Ù×÷²»³É¹¦Ê±£¨ÀýÈ磬µ±·þÎñ¶Ë·µ»ØÒ»¸ö·Ç2xx HTTP ״̬Âëʱ£©£»

£¨2£©µ±Ò»¸öHTTP DELETE·½·¨µ÷ÓÃʧ°Üʱ¡£

״̬¶ÔÏó±»±àÂë³ÉJSON¸ñʽ£¬Í¬Ê±¸ÃJSON¶ÔÏó±»×÷ΪÇëÇóµÄÏìÓ¦Ìå¡£¸Ã״̬¶ÔÏó°üº¬È˺ͻúÆ÷ʹÓõÄÓò£¬ÕâЩÓòÖаüº¬À´×ÔAPIµÄ¹ØÓÚʧ°ÜÔ­ÒòµÄÏêϸÐÅÏ¢¡£×´Ì¬¶ÔÏóÖеÄÐÅÏ¢²¹³äÁ˶ÔHTTP״̬ÂëµÄ˵Ã÷¡£ ÀýÈ磺

$ curl -v -k -H £¢Authorization: Bearer WhCDvq4VPpYhrcfmF6ei7V9qlbqTubUc£¢ 
HTTPs://10.240.122.184:443/api/v1/namespaces/default/pods/grafana
> GET /api/v1/namespaces/default/pods/grafana HTTP/1.1
> User-Agent: curl/7.26.0
> Host: 10.240.122.184
> Accept: */*
> Authorization: Bearer WhCDvq4VPpYhrcfmF6ei7V9qlbqTubUc
>
< HTTP/1.1 404 Not Found
< Content-Type: application/json
< Date: Wed, 20 May 2015 18:10:42 GMT
< Content-Length: 232
<
{
£¢kind£¢: £¢Status£¢,
£¢apiVersion£¢: £¢v1£¢,
£¢metadata£¢: {},
£¢status£¢: £¢Failure£¢,
£¢message£¢: £¢pods \£¢grafana\£¢ not found£¢,
£¢reason£¢: £¢NotFound£¢,
£¢details£¢: {
£¢name£¢: £¢grafana£¢,
£¢kind£¢: £¢pods£¢
},
£¢code£¢: 404
}

¡°status¡±Óò°üº¬Á½¸ö¿ÉÄܵÄÖµ£ºSuccessºÍFailure¡£

¡°message¡±Óò°üº¬¶Ô´íÎóµÄ¿É¶ÁÃèÊö¡£

¡°reason¡±Óò°üº¬ËµÃ÷¸Ã²Ù×÷ʧ°ÜÔ­ÒòµÄ¿É¶ÁÃèÊö¡£Èç¹û¸ÃÓòµÄֵΪ¿Õ£¬Ôò±íʾ¸ÃÓòÄÚûÓÐÈκÎ˵Ã÷ÐÅÏ¢¡£¡°reason¡±Óò³ÎÇåHTTP״̬Â룬µ«Ã»Óи²¸Ç¸Ã״̬Âë¡£

¡°details¡±¿ÉÄܰüº¬ºÍ¡°reason¡±ÓòÏà¹ØµÄÀ©Õ¹Êý¾Ý¡£Ã¿¸ö¡°reason¡±Óò¿ÉÒÔ¶¨ÒåËüµÄÀ©Õ¹µÄ¡°details¡±Óò¡£¸ÃÓòÊÇ¿ÉÑ¡µÄ£¬·µ»ØÊý¾ÝµÄ¸ñʽÊDz»È·¶¨µÄ£¬²»Í¬µÄreasonÀàÐÍ·µ»ØµÄ¡°details¡±ÓòµÄÄÚÈݲ»Ò»Ñù¡£

 

 

   
2878 ´Îä¯ÀÀ       32
 
Ïà¹ØÎÄÕÂ

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ 12-11[±±¾©]
LLM´óÄ£ÐÍÓëÖÇÄÜÌ忪·¢ÊµÕ½ 12-18[±±¾©]
ǶÈëʽÈí¼þ²âÊÔ 12-25[±±¾©]
AIÔ­ÉúÓ¦ÓõÄ΢·þÎñ¼Ü¹¹ 1-9[±±¾©]
AI´óÄ£Ðͱàд¸ßÖÊÁ¿´úÂë 1-14[±±¾©]
ÐèÇó·ÖÎöÓë¹ÜÀí 1-22[±±¾©]

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

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

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