±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜ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Óû§½çÃæ¡£ |