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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
k8s-ÕûÌå¸ÅÊöºÍ¼Ü¹¹
 
×÷Õߣºwwchihiro
  4159  次浏览      27
 2019-12-18 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜKubernetesµÄ¸ÅÄÒÔ¼°KubernetesÖ÷´Ó·Ö²¼Ê½¼Ü¹¹£¬Ö÷ÒªÓÉMaster NodeºÍWorker Node×é³É£¬²¢´´½¨PodµÄÕû¸öÁ÷³Ì£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°,ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

1¡¢KubernetesÊÇʲô

KubernetesÊÇÒ»¸öÇá±ãµÄºÍ¿ÉÀ©Õ¹µÄ¿ªÔ´Æ½Ì¨£¬ÓÃÓÚ¹ÜÀíÈÝÆ÷»¯Ó¦ÓúͷþÎñ¡£Í¨¹ýKubernetesÄܹ»½øÐÐÓ¦ÓõÄ×Ô¶¯»¯²¿ÊðºÍÀ©ËõÈÝ¡£ÔÚKubernetesÖУ¬»á½«×é³ÉÓ¦ÓõÄÈÝÆ÷×éºÏ³ÉÒ»¸öÂß¼­µ¥ÔªÒÔ¸üÒ×¹ÜÀíºÍ·¢ÏÖ¡£Kubernetes»ýÀÛÁË×÷ΪGoogleÉú²ú»·¾³ÔËÐй¤×÷¸ºÔØ15ÄêµÄ¾­Ñ飬²¢ÎüÊÕÁËÀ´×ÔÓÚÉçÇøµÄ×î¼ÑÏë·¨ºÍʵ¼ù¡£Kubernetes¾­¹ýÕ⼸ÄêµÄ¿ìËÙ·¢Õ¹£¬ÐγÉÁËÒ»¸ö´óµÄÉú̬»·¾³£¬GoogleÔÚ2014Ä꽫Kubernetes×÷Ϊ¿ªÔ´ÏîÄ¿¡£KubernetesµÄ¹Ø¼üÌØÐÔ°üÀ¨£º

×Ô¶¯»¯×°Ï䣺ÔÚ²»ÎþÉü¿ÉÓÃÐÔµÄÌõ¼þÏ£¬»ùÓÚÈÝÆ÷¶Ô×ÊÔ´µÄÒªÇóºÍÔ¼Êø×Ô¶¯²¿ÊðÈÝÆ÷¡£Í¬Ê±£¬ÎªÁËÌá¸ßÀûÓÃÂʺͽÚÊ¡¸ü¶à×ÊÔ´£¬½«¹Ø¼üºÍ×î¼Ñ¹¤×÷Á¿½áºÏÔÚÒ»Æð¡£

×ÔÓúÄÜÁ¦£ºµ±ÈÝÆ÷ʧ°Üʱ£¬»á¶ÔÈÝÆ÷½øÐÐÖØÆô£»µ±Ëù²¿ÊðµÄNode½ÚµãÓÐÎÊÌâʱ£¬»á¶ÔÈÝÆ÷½øÐÐÖØÐ²¿ÊðºÍÖØÐµ÷¶È£»µ±ÈÝÆ÷δͨ¹ý¼à¿Ø¼ì²éʱ£¬»á¹Ø±Õ´ËÈÝÆ÷£»Ö±µ½ÈÝÆ÷Õý³£ÔËÐÐʱ£¬²Å»á¶ÔÍâÌṩ·þÎñ¡£

ˮƽÀ©ÈÝ£ºÍ¨¹ý¼òµ¥µÄÃüÁî¡¢Óû§½çÃæ»ò»ùÓÚCPUµÄʹÓÃÇé¿ö£¬Äܹ»¶ÔÓ¦ÓýøÐÐÀ©ÈݺÍËõÈÝ¡£

·þÎñ·¢Ïֺ͸ºÔؾùºâ£º¿ª·¢Õß²»ÐèҪʹÓöîÍâµÄ·þÎñ·¢ÏÖ»úÖÆ£¬¾ÍÄܹ»»ùÓÚKubernetes½øÐзþÎñ·¢Ïֺ͸ºÔؾùºâ¡£

×Ô¶¯·¢²¼ºÍ»Ø¹ö£ºKubernetesÄܹ»³ÌÐò»¯µÄ·¢²¼Ó¦ÓúÍÏà¹ØµÄÅäÖá£Èç¹û·¢²¼ÓÐÎÊÌ⣬Kubernetes½«Äܹ»»Ø¹é·¢ÉúµÄ±ä¸ü¡£

±£ÃܺÍÅäÖùÜÀí£ºÔÚ²»ÐèÒªÖØÐ¹¹½¨¾µÏñµÄÇé¿öÏ£¬¿ÉÒÔ²¿ÊðºÍ¸üб£ÃܺÍÓ¦ÓÃÅäÖá£

´æ´¢±àÅÅ£º×Ô¶¯¹Ò½Ó´æ´¢ÏµÍ³£¬ÕâЩ´æ´¢ÏµÍ³¿ÉÒÔÀ´×ÔÓÚ±¾µØ¡¢¹«¹²ÔÆÌṩÉÌ£¨ÀýÈ磺GCPºÍAWS£©¡¢ÍøÂç´æ´¢(ÀýÈ磺NFS¡¢iSCSI¡¢Gluster¡¢Ceph¡¢CinderºÍFlokerµÈ)¡£

2¡¢KubernetesµÄÕûÌå¼Ü¹¹

KubernetesÊôÓÚÖ÷´Ó·Ö²¼Ê½¼Ü¹¹£¬Ö÷ÒªÓÉMaster NodeºÍWorker Node×é³É£¬ÒÔ¼°°üÀ¨¿Í»§¶ËÃüÁîÐй¤¾ßkubectlºÍÆäËü¸½¼ÓÏî¡£

Master Node£º×÷Ϊ¿ØÖƽڵ㣬¶Ô¼¯Èº½øÐе÷¶È¹ÜÀí£»Master NodeÓÉAPI Server¡¢Scheduler¡¢Cluster State StoreºÍController-Manger ServerËù×é³É£»

Worker Node£º×÷ÎªÕæÕýµÄ¹¤×÷½Úµã£¬ÔËÐÐÒµÎñÓ¦ÓõÄÈÝÆ÷£»Worker Node°üº¬kubelet¡¢kube proxyºÍContainer Runtime£»

kubectl£ºÓÃÓÚͨ¹ýÃüÁîÐÐÓëAPI Server½øÐн»»¥£¬¶ø¶ÔKubernetes½øÐвÙ×÷£¬ÊµÏÖÔÚ¼¯ÈºÖнøÐи÷ÖÖ×ÊÔ´µÄÔöɾ¸Ä²éµÈ²Ù×÷£»

Add-on£ºÊǶÔKubernetesºËÐŦÄܵÄÀ©Õ¹£¬ÀýÈçÔö¼ÓÍøÂçºÍÍøÂç²ßÂÔµÈÄÜÁ¦¡£

repliceation ÓÃÓÚÉìËõ¸±±¾ÊýÁ¿

endpoint ÓÃÓÚ¹ÜÀíÍøÂçÇëÇó

scheduler µ÷¶ÈÆ÷

1¡¢×¼±¸ºÃÒ»¸ö°üº¬Ó¦ÓóÌÐòµÄDeploymentµÄymlÎļþ£¬È»ºóͨ¹ýkubectl¿Í»§¶Ë¹¤¾ß·¢Ë͸øApiServer¡£

2¡¢ApiServer½ÓÊÕµ½¿Í»§¶ËµÄÇëÇó²¢½«×ÊÔ´ÄÚÈÝ´æ´¢µ½Êý¾Ý¿â(etcd)ÖС£

3¡¢Controller×é¼þ(°üÀ¨scheduler¡¢replication¡¢endpoint)¼à¿Ø×ÊÔ´±ä»¯²¢×÷³ö·´Ó¦¡£

4¡¢ReplicaSet¼ì²éÊý¾Ý¿â±ä»¯£¬´´½¨ÆÚÍûÊýÁ¿µÄpodʵÀý¡£

5¡¢SchedulerÔٴμì²éÊý¾Ý¿â±ä»¯£¬·¢ÏÖÉÐδ±»·ÖÅäµ½¾ßÌåÖ´Ðнڵã(node)µÄPod£¬È»ºó¸ù¾ÝÒ»×éÏà¹Ø¹æÔò½«pod·ÖÅäµ½¿ÉÒÔÔËÐÐËüÃǵĽڵãÉÏ£¬²¢¸üÐÂÊý¾Ý¿â£¬¼Ç¼pod·ÖÅäÇé¿ö¡£

6¡¢Kubelete¼à¿ØÊý¾Ý¿â±ä»¯£¬¹ÜÀíºóÐøpodµÄÉúÃüÖÜÆÚ£¬·¢ÏÖ±»·ÖÅäµ½ËüËùÔڵĽڵãÉÏÔËÐеÄÄÇЩpod¡£Èç¹ûÕÒµ½ÐÂpod£¬Ôò»áÔڸýڵãÉÏÔËÐÐÕâ¸öÐÂpod¡£

7¡¢kuberproxyÔËÐÐÔÚ¼¯Èº¸÷¸öÖ÷»úÉÏ£¬¹ÜÀíÍøÂçͨÐÅ£¬Èç·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâ¡£ÀýÈçµ±ÓÐÊý¾Ý·¢Ë͵½Ö÷»úʱ£¬½«Æä·Óɵ½ÕýÈ·µÄpod»òÈÝÆ÷¡£¶ÔÓÚ´ÓÖ÷»úÉÏ·¢³öµÄÊý¾Ý£¬Ëü¿ÉÒÔ»ùÓÚÇëÇóµØÖ··¢ÏÖÔ¶³Ì·þÎñÆ÷£¬²¢½«Êý¾ÝÕýȷ·ÓÉ£¬ÔÚijЩÇé¿öÏ»áʹÓÃÂÖѵµ÷¶ÈËã·¨(Round-robin)½«ÇëÇó·¢Ë͵½¼¯ÈºÖеĶà¸öʵÀý¡£

Kubernetes¼°ÈÝÆ÷Éú̬ϵͳ

µäÐ͵ÄÁ÷³Ì

´´½¨PodµÄÕû¸öÁ÷³Ì£¬Ê±ÐòͼÈçÏ£º

1. Óû§Ìá½»´´½¨PodµÄÇëÇ󣬿ÉÒÔͨ¹ýAPI ServerµÄREST API £¬Ò²¿ÉÓÃKubectlÃüÁîÐй¤¾ß£¬Ö§³ÖJsonºÍYamlÁ½ÖÖ¸ñʽ£»

2. API Server ´¦ÀíÓû§ÇëÇ󣬴洢PodÊý¾Ýµ½Etcd£»

3. Scheduleͨ¹ýºÍ API ServerµÄwatch»úÖÆ£¬²é¿´µ½ÐµÄpod£¬³¢ÊÔΪPod°ó¶¨Node£»

4. ¹ýÂËÖ÷»ú£ºµ÷¶ÈÆ÷ÓÃÒ»×鹿Ôò¹ýÂ˵ô²»·ûºÏÒªÇóµÄÖ÷»ú£¬±ÈÈçPodÖ¸¶¨ÁËËùÐèÒªµÄ×ÊÔ´£¬ÄÇô¾ÍÒª¹ýÂ˵ô×ÊÔ´²»¹»µÄÖ÷»ú£»

5. Ö÷»ú´ò·Ö£º¶ÔµÚÒ»²½É¸Ñ¡³öµÄ·ûºÏÒªÇóµÄÖ÷»ú½øÐдò·Ö£¬ÔÚÖ÷»ú´ò·Ö½×¶Î£¬µ÷¶ÈÆ÷»á¿¼ÂÇһЩÕûÌåÓÅ»¯²ßÂÔ£¬±ÈÈç°ÑÒ»¸öReplication ControllerµÄ¸±±¾·Ö²¼µ½²»Í¬µÄÖ÷»úÉÏ£¬Ê¹ÓÃ×îµÍ¸ºÔصÄÖ÷»úµÈ£»

6. Ñ¡ÔñÖ÷»ú£ºÑ¡Ôñ´ò·Ö×î¸ßµÄÖ÷»ú£¬½øÐÐbinding²Ù×÷£¬½á¹û´æ´¢µ½EtcdÖУ»

7. kubelet¸ù¾Ýµ÷¶È½á¹ûÖ´ÐÐPod´´½¨²Ù×÷£º °ó¶¨³É¹¦ºó£¬»áÆô¶¯container, docker run, scheduler»áµ÷ÓÃAPI ServerµÄAPIÔÚetcdÖд´½¨Ò»¸öbound pod¶ÔÏó£¬ÃèÊöÔÚÒ»¸ö¹¤×÷½ÚµãÉϰó¶¨ÔËÐеÄËùÓÐpodÐÅÏ¢¡£ÔËÐÐÔÚÿ¸ö¹¤×÷½ÚµãÉϵÄkubeletÒ²»á¶¨ÆÚÓëetcdͬ²½bound podÐÅÏ¢£¬Ò»µ©·¢ÏÖÓ¦¸ÃÔڸù¤×÷½ÚµãÉÏÔËÐеÄbound pod¶ÔÏóûÓиüУ¬Ôòµ÷ÓÃDocker API´´½¨²¢Æô¶¯podÄÚµÄÈÝÆ÷¡£

2 Master Node£¨Ö÷½Úµã£©

2.1 API Server£¨API·þÎñÆ÷£©

API ServerÖ÷ÒªÓÃÀ´´¦ÀíRESTµÄ²Ù×÷£¬È·±£ËüÃÇÉúЧ£¬²¢Ö´ÐÐÏà¹ØÒµÎñÂß¼­£¬ÒÔ¼°¸üÐÂetcd£¨»òÕ߯äËû´æ´¢£©ÖеÄÏà¹Ø¶ÔÏó¡£API ServerÊÇËùÓÐRESTÃüÁîµÄÈë¿Ú£¬ËüµÄÏà¹Ø½á¹û״̬½«±»±£´æÔÚetcd£¨»òÆäËû´æ´¢£©ÖС£API ServerµÄ»ù±¾¹¦ÄܰüÀ¨£º

RESTÓïÒ壬¼à¿Ø£¬³Ö¾Ã»¯ºÍÒ»ÖÂÐÔ±£Ö¤£¬API °æ±¾¿ØÖÆ£¬·ÅÆúºÍÉúЧ

ÄÚÖÃ×¼Èë¿ØÖÆÓïÒ壬ͬ²½×¼Èë¿ØÖÆ¹³×Ó£¬ÒÔ¼°Òì²½×ÊÔ´³õʼ»¯

API×¢²áºÍ·¢ÏÖ

ÁíÍ⣬API ServerÒ²×÷Ϊ¼¯ÈºµÄÍø¹Ø¡£Ä¬ÈÏÇé¿ö£¬¿Í»§¶Ëͨ¹ýAPI Server¶Ô¼¯Èº½øÐзÃÎÊ£¬¿Í»§¶ËÐèҪͨ¹ýÈÏÖ¤£¬²¢Ê¹ÓÃAPI Server×÷Ϊ·ÃÎÊNodeºÍPod£¨ÒÔ¼°service£©µÄ±¤ÀݺʹúÀí/ͨµÀ¡£

2.2 Cluster state store£¨¼¯Èº×´Ì¬´æ´¢£©

KubernetesĬÈÏʹÓÃetcd×÷Ϊ¼¯ÈºÕûÌå´æ´¢£¬µ±È»Ò²¿ÉÒÔʹÓÃÆäËüµÄ¼¼Êõ¡£etcdÊÇÒ»¸ö¼òµ¥µÄ¡¢·Ö²¼Ê½µÄ¡¢Ò»ÖµÄkey-value´æ´¢£¬Ö÷Òª±»ÓÃÀ´¹²ÏíÅäÖúͷþÎñ·¢ÏÖ¡£etcdÌṩÁËÒ»¸öCRUD²Ù×÷µÄREST API£¬ÒÔ¼°ÌṩÁË×÷Ϊע²áµÄ½Ó¿Ú£¬ÒÔ¼à¿ØÖ¸¶¨µÄNode¡£¼¯ÈºµÄËùÓÐ״̬¶¼´æ´¢ÔÚetcdʵÀýÖУ¬²¢¾ßÓÐ¼à¿ØµÄÄÜÁ¦£¬Òò´Ëµ±etcdÖеÄÐÅÏ¢·¢Éú±ä»¯Ê±£¬¾ÍÄܹ»¿ìËÙµÄ֪ͨ¼¯ÈºÖÐÏà¹ØµÄ×é¼þ¡£

2.3 Controller-Manager Server£¨¿ØÖƹÜÀí·þÎñÆ÷£©

Controller-Manager ServeÓÃÓÚÖ´Ðд󲿷ֵļ¯Èº²ã´ÎµÄ¹¦ÄÜ£¬Ëü¼ÈÖ´ÐÐÉúÃüÖÜÆÚ¹¦ÄÜ(ÀýÈ磺ÃüÃû¿Õ¼ä´´½¨ºÍÉúÃüÖÜÆÚ¡¢Ê¼þÀ¬»øÊÕ¼¯¡¢ÒÑÖÕÖ¹À¬»øÊÕ¼¯¡¢¼¶ÁªÉ¾³ýÀ¬»øÊÕ¼¯¡¢nodeÀ¬»øÊÕ¼¯)£¬Ò²Ö´ÐÐAPIÒµÎñÂß¼­£¨ÀýÈ磺podµÄµ¯ÐÔÀ©ÈÝ£©¡£¿ØÖƹÜÀíÌṩ×ÔÓúÄÜÁ¦¡¢À©ÈÝ¡¢Ó¦ÓÃÉúÃüÖÜÆÚ¹ÜÀí¡¢·þÎñ·¢ÏÖ¡¢Â·ÓÉ¡¢·þÎñ°ó¶¨ºÍÌṩ¡£KubernetesĬÈÏÌṩReplication Controller¡¢Node Controller¡¢Namespace Controller¡¢Service Controller¡¢Endpoints Controller¡¢Persistent Controller¡¢DaemonSet ControllerµÈ¿ØÖÆÆ÷¡£

2.4 Scheduler£¨µ÷¶ÈÆ÷£©

scheduler×é¼þΪÈÝÆ÷×Ô¶¯Ñ¡ÔñÔËÐеÄÖ÷»ú¡£ÒÀ¾ÝÇëÇó×ÊÔ´µÄ¿ÉÓÃÐÔ£¬·þÎñÇëÇóµÄÖÊÁ¿µÈÔ¼ÊøÌõ¼þ£¬scheduler¼à¿ØÎ´°ó¶¨µÄpod£¬²¢½«Æä°ó¶¨ÖÁÌØ¶¨µÄnode½Úµã¡£KubernetesÒ²Ö§³ÖÓû§×Ô¼ºÌṩµÄµ÷¶ÈÆ÷£¬Scheduler¸ºÔð¸ù¾Ýµ÷¶È²ßÂÔ×Ô¶¯½«Pod²¿Ê𵽺ÏÊÊNodeÖУ¬µ÷¶È²ßÂÔ·ÖΪԤѡ²ßÂÔºÍÓÅÑ¡²ßÂÔ£¬PodµÄÕû¸öµ÷¶È¹ý³Ì·ÖΪÁ½²½£º

1£©Ô¤Ñ¡Node£º±éÀú¼¯ÈºÖÐËùÓеÄNode£¬°´ÕÕ¾ßÌåµÄԤѡ²ßÂÔɸѡ³ö·ûºÏÒªÇóµÄNodeÁÐ±í¡£ÈçûÓÐNode·ûºÏԤѡ²ßÂÔ¹æÔò£¬¸ÃPod¾Í»á±»¹ÒÆð£¬Ö±µ½¼¯ÈºÖгöÏÖ·ûºÏÒªÇóµÄNode¡£

2£©ÓÅÑ¡Node£ºÔ¤Ñ¡NodeÁбíµÄ»ù´¡ÉÏ£¬°´ÕÕÓÅÑ¡²ßÂÔΪ´ýÑ¡µÄNode½øÐдò·ÖºÍÅÅÐò£¬´ÓÖлñÈ¡×îÓÅNode¡£

3¡¢Worker Node£¨´Ó½Úµã£©

3.1 Kubelet

KubeletÊÇKubernetesÖÐ×îÖ÷ÒªµÄ¿ØÖÆÆ÷£¬ËüÊÇPodºÍNode APIµÄÖ÷ҪʵÏÖÕߣ¬Kubelet¸ºÔðÇý¶¯ÈÝÆ÷Ö´Ðв㡣ÔÚKubernetesÖУ¬Ó¦ÓÃÈÝÆ÷±Ë´ËÊǸôÀëµÄ£¬²¢ÇÒÓëÔËÐÐÆäµÄÖ÷»úÒ²ÊǸôÀëµÄ£¬ÕâÊǶÔÓ¦ÓýøÐжÀÁ¢½âñî¹ÜÀíµÄ¹Ø¼üµã¡£

ÔÚKubernetsÖУ¬Pod×÷Ϊ»ù±¾µÄÖ´Ðе¥Ôª£¬Ëü¿ÉÒÔÓµÓжà¸öÈÝÆ÷ºÍ´æ´¢Êý¾Ý¾í£¬Äܹ»·½±ãÔÚÿ¸öÈÝÆ÷Öдò°üÒ»¸öµ¥Ò»µÄÓ¦Ó㬴Ӷø½âñîÁËÓ¦Óù¹½¨Ê±ºÍ²¿ÊðʱµÄËù¹ØÐĵÄÊÂÏÒѾ­Äܹ»·½±ãÔÚÎïÀí»ú/ÐéÄâ»úÖ®¼ä½øÐÐÇ¨ÒÆ¡£API×¼Èë¿ØÖÆ¿ÉÒԾܾø»òÕßPod£¬»òÕßΪPodÌí¼Ó¶îÍâµÄµ÷¶ÈÔ¼Êø£¬µ«ÊÇKubelet²ÅÊÇPodÊÇ·ñÄܹ»ÔËÐÐÔÚÌØ¶¨NodeÉϵÄ×îÖղþöÕߣ¬¶ø²»ÊÇscheduler»òÕßDaemonSet¡£kubeletĬÈÏÇé¿öʹÓÃcAdvisor½øÐÐ×ÊÔ´¼à¿Ø¡£¸ºÔð¹ÜÀíPod¡¢ÈÝÆ÷¡¢¾µÏñ¡¢Êý¾Ý¾íµÈ£¬ÊµÏÖ¼¯Èº¶Ô½ÚµãµÄ¹ÜÀí£¬²¢½«ÈÝÆ÷µÄÔËÐÐ״̬»ã±¨¸øKubernetes API Server¡£

3.2 Container Runtime£¨ÈÝÆ÷ÔËÐÐʱ£©

ÿһ¸öNode¶¼»áÔËÐÐÒ»¸öContainer Runtime£¬Æä¸ºÔðÏÂÔØ¾µÏñºÍÔËÐÐÈÝÆ÷¡£Kubernetes±¾Éí²¢²»Í£ÈÝÆ÷ÔËÐÐʱ»·¾³£¬µ«ÌṩÁ˽ӿڣ¬¿ÉÒÔ²åÈëËùÑ¡ÔñµÄÈÝÆ÷ÔËÐÐʱ»·¾³¡£kubeletʹÓÃUnix socketÖ®ÉϵÄgRPC¿ò¼ÜÓëÈÝÆ÷ÔËÐÐʱ½øÐÐͨÐÅ£¬kubelet×÷Ϊ¿Í»§¶Ë£¬¶øCRI shim×÷Ϊ·þÎñÆ÷¡£

protocol buffers APIÌṩÁ½¸ögRPC·þÎñ£¬ImageServiceºÍRuntimeService¡£ImageServiceÌṩÀ­È¡¡¢²é¿´¡¢ºÍÒÆ³ý¾µÏñµÄRPC¡£RuntimeSerivceÔòÌṩ¹ÜÀíPodsºÍÈÝÆ÷ÉúÃüÖÜÆÚ¹ÜÀíµÄRPC£¬ÒÔ¼°ÓëÈÝÆ÷½øÐн»»¥(exec/attach/port-forward)¡£ÈÝÆ÷ÔËÐÐʱÄܹ»Í¬Ê±¹ÜÀí¾µÏñºÍÈÝÆ÷£¨ÀýÈ磺DockerºÍRkt£©£¬²¢ÇÒ¿ÉÒÔͨ¹ýͬһ¸öÌ×½Ó×ÖÌṩÕâÁ½ÖÖ·þÎñ¡£ÔÚKubeletÖУ¬Õâ¸öÌ×½Ó×Öͨ¹ý¨Ccontainer-runtime-endpointºÍ¨Cimage-service-endpoint×ֶνøÐÐÉèÖá£Kubernetes CRIÖ§³ÖµÄÈÝÆ÷ÔËÐÐʱ°üÀ¨docker¡¢rkt¡¢cri-o¡¢frankti¡¢kata-containersºÍclear-containersµÈ¡£

3.3 kube proxy

»ùÓÚÒ»ÖÖ¹«¹²·ÃÎʲßÂÔ£¨ÀýÈ磺¸ºÔؾùºâ£©£¬·þÎñÌṩÁËÒ»ÖÖ·ÃÎÊһȺpodµÄ;¾¶¡£´Ë·½Ê½Í¨¹ý´´½¨Ò»¸öÐéÄâµÄIPÀ´ÊµÏÖ£¬¿Í»§¶ËÄܹ»·ÃÎÊ´ËIP£¬²¢Äܹ»½«·þÎñ͸Ã÷µÄ´úÀíÖÁPod¡£Ã¿Ò»¸öNode¶¼»áÔËÐÐÒ»¸ökube-proxy£¬kube proxyͨ¹ýiptables¹æÔòÒýµ¼·ÃÎÊÖÁ·þÎñIP£¬²¢½«Öض¨ÏòÖÁÕýÈ·µÄºó¶ËÓ¦Óã¬Í¨¹ýÕâÖÖ·½Ê½kube-proxyÌṩÁËÒ»¸ö¸ß¿ÉÓõĸºÔؾùºâ½â¾ö·½°¸¡£·þÎñ·¢ÏÖÖ÷Ҫͨ¹ýDNSʵÏÖ¡£

ÔÚKubernetesÖУ¬kube proxy¸ºÔðΪPod´´½¨´úÀí·þÎñ£»Òýµ½·ÃÎÊÖÁ·þÎñ£»²¢ÊµÏÖ·þÎñµ½PodµÄ·ÓɺÍת·¢£¬ÒÔ¼°Í¨¹ýÓ¦ÓõĸºÔؾùºâ¡£

3¡¢kubectl

kubectlÊÇKubernetes¼¯ÈºµÄÃüÁîÐнӿڡ£ÔËÐÐkubectlÃüÁîµÄÓï·¨ÈçÏÂËùʾ£º

$ kubectl [command] [TYPE] [NAME] [flags]

ÕâÀïµÄcommand£¬TYPE¡¢NAMEºÍflagsΪ£º

comand£ºÖ¸¶¨Òª¶Ô×ÊÔ´Ö´ÐеIJÙ×÷£¬ÀýÈçcreate¡¢get¡¢describeºÍdelete

TYPE£ºÖ¸¶¨×ÊÔ´ÀàÐÍ£¬×ÊÔ´ÀàÐÍÊÇ´óСѧÃô¸ÐµÄ£¬¿ª·¢ÕßÄܹ»ÒÔµ¥Êý¡¢¸´ÊýºÍËõÂÔµÄÐÎʽ¡£ÀýÈ磺

$ kubectl get pod pod1
$ kubectl get pods pod1
$ kubectl get po pod1

NAME£ºÖ¸¶¨×ÊÔ´µÄÃû³Æ£¬Ãû³ÆÒ²´óСдÃô¸ÐµÄ¡£Èç¹ûÊ¡ÂÔÃû³Æ£¬Ôò»áÏÔʾËùÓеÄ×ÊÔ´£¬ÀýÈç:

$kubectl get pods

flags£ºÖ¸¶¨¿ÉÑ¡µÄ²ÎÊý¡£ÀýÈ磬¿ÉÒÔʹÓÃ-s»òÕߨCserver²ÎÊýÖ¸¶¨Kubernetes API serverµÄµØÖ·ºÍ¶Ë¿Ú¡£

ÁíÍ⣬¿ÉÒÔͨ¹ýÔËÐÐkubectl helpÃüÁî»ñÈ¡¸ü¶àµÄÐÅÏ¢¡£

4 ¸½¼ÓÏîºÍÆäËûÒÀÀµ

ÔÚKunbernetesÖпÉÒÔÒÔ¸½¼ÓÏîµÄ·½Ê½À©Õ¹KubernetesµÄ¹¦ÄÜ£¬Ä¿Ç°Ö÷ÒªÓÐÍøÂç¡¢·þÎñ·¢ÏֺͿÉÊÓ»¯ÕâÈý´óÀàµÄ¸½¼ÓÏÏÂÃæÊÇ¿ÉÓõÄһЩ¸½¼ÓÏ

4.4.1 ÍøÂçºÍÍøÂç²ßÂÔ

ACI ͨ¹ýÓëCisco ACI¼¯³ÉµÄÈÝÆ÷ÍøÂçºÍÍøÂ簲ȫ¡£

Calico ÊÇÒ»¸ö°²È«µÄ3²ãÍøÂçºÍÍøÂç²ßÂÔÌṩÕß¡£

Canal ÁªºÏFannelºÍCalico£¬Í¨¹ýÍøÂçºÍÍøÂç²à¡£

Cilium ÊÇÒ»¸ö3²ãÍøÂçºÍÍøÂç²à²å¼þ£¬ËüÄܹ»Í¸Ã÷µÄ¼ÓÇ¿HTTP/API/L7 ²ßÂÔ¡£Æä¼´Ö§³Ö·ÓÉ£¬Ò²Ö§³Öoverlay/encapsultionģʽ¡£

Flannel ÊÇÒ»¸öoverlayµÄÍøÂçÌṩÕß¡£

4.4.2 ·þÎñ·¢ÏÖ

CoreDNS ÊÇÒ»¸öÁé»îµÄ£¬¿ÉÀ©Õ¹µÄDNS·þÎñÆ÷£¬ËüÄܹ»×÷ΪPod¼¯ÈºÄÚµÄDNS½øÐа²×°¡£

Ingress Ìṩ»ùÓÚHttpЭÒéµÄ·ÓÉת·¢»úÖÆ¡£

4.4.3 ¿ÉÊÓ»¯&¿ØÖÆ

Dashboard ÊÇKubernetesµÄwebÓû§½çÃæ¡£

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

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

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

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