´ò¿ªÕâÆªÎÄÕµÄͬѧ£¬Ïë±Ø¶Ô
docker ¶¼²»»áİÉú¡£docker ÊÇÒ»ÖÖÐéÄâÈÝÆ÷¼¼Êõ£¬ËüÉÏÊֱȽϼòµ¥£¬Ö»ÐèÔÚËÞÖ÷»úÉÏÆðÒ»¸ö docker
engine£¬È»ºó¾ÍÄÜÓä¿ìµÄÍæË£ÁË£¬È磺À¾µÏñ¡¢ÆðÈÝÆ÷¡¢¹ÒÔØÊý¾Ý¡¢Ó³Éä¶Ë¿ÚµÈµÈ¡£Ïà¶ÔÓÚ Kubernetes£¨K8S£©µÄÉÏÊÖ£¬¿Éν¼òµ¥ºÜ¶à¡£
ÄÇô K8S ÊÇʲô£¬ÓÖΪʲôÉÏÊÖÄѶȴó£¿K8S ÊÇÒ»¸ö»ùÓÚÈÝÆ÷¼¼ÊõµÄ·Ö²¼Ê½¼¯Èº¹ÜÀíϵͳ£¬Êǹȸ輸ʮÄêÀ´´ó¹æÄ£Ó¦ÓÃÈÝÆ÷¼¼ÊõµÄ¾Ñé»ýÀÛºÍÉý»ªµÄÒ»¸öÖØÒª³É¹û¡£ËùÒÔΪÁËÄܹ»Ö§³Ö´ó¹æÄ£µÄ¼¯Èº¹ÜÀí£¬Ëü³ÐÔØÁ˺ܶàµÄ×é¼þ£¬¶øÇÒ·Ö²¼Ê½±¾ÉíµÄ¸´ÔӶȾͺܸߡ£ÓÖÒòΪ
K8S Êǹȸè³öÆ·µÄ£¬ÒÀÀµÁ˺ܶà¹È¸è×Ô¼ºµÄ¾µÏñ£¬ËùÒÔ¶ÔÓÚ¹úÄÚµÄͬѧ»·¾³´î½¨µÄÄѶÈÓÖÔö¼ÓÁËÒ»²ã¡£
ÏÂÃæ£¬ÎÒÃÇ´ø×ÅÎÊÌ⣬һ²½²½À´¿´ K8S Öе½µ×ÓÐÄÄЩ¶«Î÷£¿
Ê×ÏÈ£¬¼ÈÈ»ÊǸö·Ö²¼Ê½ÏµÍ³£¬ÄÇÊÆ±ØÓжà¸ö Node ½Úµã£¨ÎïÀíÖ÷»ú»òÐéÄâ»ú£©£¬ËüÃǹ²Í¬×é³ÉÒ»¸ö·Ö²¼Ê½¼¯Èº£¬²¢ÇÒÕâЩ½ÚµãÖлáÓÐÒ»¸ö
Master ½Úµã£¬ÓÉËüÀ´Í³Ò»¹ÜÀí Node ½Úµã¡£
ÈçͼËùʾ£º

ÎÊÌâÒ»£ºÖ÷½ÚµãºÍ¹¤×÷½ÚµãÊÇÈçºÎͨÐŵÄÄØ£¿
Ê×ÏÈ£¬Master ½ÚµãÆô¶¯Ê±£¬»áÔËÐÐÒ»¸ö kube-apiserver ½ø³Ì£¬ËüÌṩÁ˼¯Èº¹ÜÀíµÄ
API ½Ó¿Ú£¬ÊǼ¯ÈºÄÚ¸÷¸ö¹¦ÄÜÄ£¿éÖ®¼äÊý¾Ý½»»¥ºÍͨÐŵÄÖÐÐÄÊàŦ£¬²¢ÇÒËüÒ³ÌṩÁËÍ걸µÄ¼¯Èº°²È«»úÖÆ£¨ºóÃæ»¹»á½²µ½£©¡£
ÔÚ Node ½ÚµãÉÏ£¬Ê¹Óà K8S ÖÐµÄ kubelet ×é¼þ£¬ÔÚÿ¸ö Node ½ÚµãÉ϶¼»áÔËÐÐÒ»¸ö
kubelet ½ø³Ì£¬Ëü¸ºÔðÏò Master »ã±¨×ÔÉí½ÚµãµÄÔËÐÐÇé¿ö£¬Èç Node ½ÚµãµÄ×¢²á¡¢ÖÕÖ¹¡¢¶¨Ê±Éϱ¨½¡¿µ×´¿öµÈ£¬ÒÔ¼°½ÓÊÕ
Master ·¢³öµÄÃüÁ´´½¨ÏàÓ¦ Pod¡£
ÔÚ K8S ÖУ¬Pod ÊÇ×î»ù±¾µÄ²Ù×÷µ¥Ôª£¬ËüÓë docker µÄÈÝÆ÷ÓÐÂÔ΢µÄ²»Í¬£¬ÒòΪ Pod
¿ÉÄܰüº¬Ò»¸ö»ò¶à¸öÈÝÆ÷£¨¿ÉÒÔÊÇ docker ÈÝÆ÷£©£¬ÕâЩÄÚ²¿µÄÈÝÆ÷Êǹ²ÏíÍøÂç×ÊÔ´µÄ£¬¼´¿ÉÒÔͨ¹ý localhost
½øÐÐÏ໥·ÃÎÊ¡£
¹ØÓÚ Pod ÄÚÊÇÈçºÎ×öµ½ÍøÂç¹²ÏíµÄ£¬Ã¿¸ö Pod Æô¶¯£¬ÄÚ²¿¶¼»áÆô¶¯Ò»¸ö pause ÈÝÆ÷£¨googleµÄÒ»¸ö¾µÏñ£©£¬ËüʹÓÃĬÈϵÄÍøÂçģʽ£¬¶øÆäËûÈÝÆ÷µÄÍøÂç¶¼ÉèÖøøËü£¬ÒÔ´ËÀ´Íê³ÉÍøÂçµÄ¹²ÏíÎÊÌâ¡£
ÈçͼËùʾ£º

ÎÊÌâ¶þ£ºMaster ÊÇÈçºÎ½« Pod µ÷¶Èµ½Ö¸¶¨µÄ Node Éϵģ¿
¸Ã¹¤×÷ÓÉ kube-scheduler À´Íê³É£¬Õû¸öµ÷¶È¹ý³Ìͨ¹ýÖ´ÐÐһЩÁи´ÔÓµÄËã·¨×îÖÕΪÿ¸ö Pod
¼ÆËã³öÒ»¸ö×î¼ÑµÄÄ¿±ê Node£¬¸Ã¹ý³ÌÓÉ kube-scheduler ½ø³Ì×Ô¶¯Íê³É¡£³£¼ûµÄÓÐÂÖѯµ÷¶È£¨RR£©¡£µ±È»Ò²ÓпÉÄÜ£¬ÎÒÃÇÐèÒª½«
Pod µ÷¶Èµ½Ò»¸öÖ¸¶¨µÄ Node ÉÏ£¬ÎÒÃÇ¿ÉÒÔͨ¹ý½ÚµãµÄ±êÇ©£¨Label£©ºÍ Pod µÄ nodeSelector
ÊôÐÔµÄÏ໥ƥÅ䣬À´´ïµ½Ö¸¶¨µÄЧ¹û¡£
ÈçͼËùʾ£º

¹ØÓÚ±êÇ©£¨Label£©ÓëÑ¡ÔñÆ÷£¨Selector£©µÄ¸ÅÄºóÃæ»á½øÒ»²½½éÉÜ
ÎÊÌâÈý£º¸÷½Úµã¡¢Pod µÄÐÅÏ¢¶¼ÊÇͳһά»¤ÔÚÄÄÀïµÄ£¬ÓÉËÀ´Î¬»¤£¿
´ÓÉÏÃæµÄ Pod µ÷¶ÈµÄ½Ç¶È¿´£¬ÎÒÃǵÃÓÐÒ»¸ö´æ´¢ÖÐÐÄ£¬ÓÃÀ´´æ´¢¸÷½Úµã×ÊԴʹÓÃÇé¿ö¡¢½¡¿µ×´Ì¬¡¢ÒÔ¼°¸÷
Pod µÄ»ù±¾ÐÅÏ¢µÈ£¬ÕâÑù Pod µÄµ÷¶ÈÀ´ÄÜÕý³£½øÐС£
ÔÚ K8S ÖУ¬²ÉÓà etcd ×é¼þ ×÷Ϊһ¸ö¸ß¿ÉÓÃǿһÖÂÐԵĴ洢²Ö¿â£¬¸Ã×é¼þ¿ÉÒÔÄÚÖÃÔÚ K8S
ÖУ¬Ò²¿ÉÒÔÍⲿ´î½¨¹© K8S ʹÓá£
¼¯ÈºÉϵÄËùÓÐÅäÖÃÐÅÏ¢¶¼´æ´¢ÔÚÁË etcd£¬ÎªÁË¿¼ÂǸ÷¸ö×é¼þµÄÏà¶Ô¶ÀÁ¢£¬ÒÔ¼°ÕûÌåµÄά»¤ÐÔ£¬¶ÔÓÚÕâЩ´æ´¢Êý¾ÝµÄÔö¡¢É¾¡¢¸Ä¡¢²é£¬Í³Ò»ÓÉ
kube-apiserver À´½øÐе÷Óã¬apiserver Ò²ÌṩÁË REST µÄÖ§³Ö£¬²»½ö¶Ô¸÷¸öÄÚ²¿×é¼þÌṩ·þÎñÍ⣬»¹¶Ô¼¯ÈºÍⲿÓû§±©Â¶·þÎñ¡£
ÍⲿÓû§¿ÉÒÔͨ¹ý REST ½Ó¿Ú£¬»òÕß kubectl ÃüÁîÐй¤¾ß½øÐм¯Èº¹ÜÀí£¬ÆäÄÚÔÚ¶¼ÊÇÓë apiserver
½øÐÐͨÐÅ¡£
ÈçͼËùʾ£º

ÎÊÌâËÄ£ºÍⲿÓû§ÈçºÎ·ÃÎʼ¯ÈºÄÚÔËÐÐµÄ Pod £¿
Ç°Ãæ½²ÁËÍⲿÓû§ÈçºÎ¹ÜÀí K8S£¬¶øÎÒÃǸü¹ØÐĵÄÊÇÄÚ²¿ÔËÐÐµÄ Pod ÈçºÎ¶ÔÍâ·ÃÎÊ¡£Ê¹Óùý docker
µÄͬѧӦ¸ÃÖªµÀ£¬Èç¹ûʹÓà bridge ģʽ£¬ÔÚÈÝÆ÷´´½¨Ê±£¬¶¼»á·ÖÅäÒ»¸öÐéÄâ IP£¬¸Ã IP ÍⲿÊÇû·¨·ÃÎʵ½µÄ£¬ÎÒÃÇÐèÒª×öÒ»²ã¶Ë¿ÚÓ³É䣬½«ÈÝÆ÷ÄÚ¶Ë¿ÚÓëËÞÖ÷»ú¶Ë¿Ú½øÐÐÓ³Éä°ó¶¨£¬ÕâÑùÍⲿͨ¹ý·ÃÎÊËÞÖ÷»úµÄÖ¸¶¨¶Ë¿Ú£¬¾Í¿ÉÒÔ·ÃÎʵ½ÄÚ²¿ÈÝÆ÷¶Ë¿ÚÁË¡£
ÄÇô£¬K8S µÄÍⲿ·ÃÎÊÊÇ·ñÒ²ÊÇÕâÑùʵÏֵģ¿´ð°¸ÊÇ·ñ¶¨µÄ£¬K8S ÖÐÇé¿öÒª¸´ÔÓһЩ¡£ÒòΪÉÏÃæ½²µÄ
docker Êǵ¥»úģʽÏµģ¬¶øÇÒÒ»¸öÈÝÆ÷¶ÔÍâ¾Í±©Â¶Ò»¸ö·þÎñ¡£ÔÚ·Ö²¼Ê½¼¯ÈºÏ£¬Ò»¸ö·þÎñÍùÍùÓɶà¸ö Application
Ìṩ£¬ÓÃÀ´·Öµ£·ÃÎÊѹÁ¦£¬¶øÇÒÕâЩ Application ¿ÉÄÜ»á·Ö²¼ÔÚ¶à¸ö½ÚµãÉÏ£¬ÕâÑùÓÖÉæ¼°µ½ÁË¿çÖ÷»úµÄͨÐÅ¡£
ÕâÀK8S ÒýÈëÁË service µÄ¸ÅÄ½«¶à¸öÏàͬµÄ Pod °ü×°³ÉÒ»¸öÍêÕûµÄ service
¶ÔÍâÌṩ·þÎñ£¬ÖÁÓÚ»ñÈ¡µ½ÕâЩÏàͬµÄ Pod£¬Ã¿¸ö Pod Æô¶¯Ê±¶¼»áÉèÖà labels ÊôÐÔ£¬ÔÚ service
ÖÐÎÒÃÇͨ¹ýÑ¡ÔñÆ÷ selector£¬Ñ¡Ôñ¾ßÓÐÏàͬ name ±êÇ©ÊôÐ﵀ Pod£¬×÷ΪÕûÌå·þÎñ£¬²¢½«·þÎñÐÅϢͨ¹ý
apiserver ´æÈë etcd ÖУ¬¸Ã¹¤×÷ÓÉ Service Controller À´Íê³É¡£Í¬Ê±£¬Ã¿¸ö½ÚµãÉÏ»áÆô¶¯Ò»¸ö
kube-proxy ½ø³Ì£¬ÓÉËüÀ´¸ºÔð·þÎñµØÖ·µ½ Pod µØÖ·µÄ´úÀíÒÔ¼°¸ºÔؾùºâµÈ¹¤×÷¡£
ÈçͼËùʾ£º

ÎÊÌâÎ壺Pod ÈçºÎ¶¯Ì¬À©ÈݺÍËõ·Å£¿
¼ÈȻ֪µÀÁË·þÎñÊÇÓÉ Pod ×é³ÉµÄ£¬ÄÇô·þÎñµÄÀ©ÈÝÒ²¾ÍÒâζ×Å Pod µÄÀ©ÈÝ¡£Í¨Ë׵㽲£¬¾ÍÊÇÔÚÐèҪʱ½«
Pod ¸´Öƶà·Ý£¬ÔÚ²»ÐèÒªºó£¬½« Pod Ëõ¼õÖÁÖ¸¶¨·ÝÊý¡£K8S ÖÐͨ¹ý Replication Controller
À´½øÐйÜÀí£¬ÎªÃ¿¸ö Pod ÉèÖÃÒ»¸öÆÚÍûµÄ¸±±¾Êý£¬µ±Êµ¼Ê¸±±¾ÊýÓëÆÚÍû²»·ûʱ£¬¾Í¶¯Ì¬µÄ½øÐÐÊýÁ¿µ÷Õû£¬ÒÔ´ïµ½ÆÚÍûÖµ¡£ÆÚÍûÊýÖµ¿ÉÒÔÓÉÎÒÃÇÊÖ¶¯¸üУ¬»ò×Ô¶¯À©ÈÝ´úÀíÀ´Íê³É¡£
ÈçͼËùʾ£º

ÎÊÌâÁù£º¸÷¸ö×é¼þÖ®¼äÊÇÈçºÎÏ໥Ð×÷µÄ£¿
×îºó£¬½²Ò»Ï kube-controller-manager Õâ¸ö½ø³ÌµÄ×÷Óá£ÎÒÃÇÖªµÀÁË ectd
ÊÇ×÷Ϊ¼¯ÈºÊý¾ÝµÄ´æ´¢ÖÐÐÄ£¬ apiserver ÊǹÜÀíÊý¾ÝÖÐÐÄ£¬×÷ΪÆäËû½ø³ÌÓëÊý¾ÝÖÐÐÄͨÐŵÄÇÅÁº¡£¶ø
Service Controller¡¢Replication Controller ÕâЩͳһ½»ÓÉ kube-controller-manager
À´¹ÜÀí£¬kube-controller-manager ×÷Ϊһ¸öÊØ»¤½ø³Ì£¬Ã¿¸ö Controller
¶¼ÊÇÒ»¸ö¿ØÖÆÑ»·£¬Í¨¹ý apiserver ¼àÊÓ¼¯ÈºµÄ¹²Ïí״̬£¬²¢³¢ÊÔ½«Êµ¼Ê״̬ÓëÆÚÍû²»·ûµÄ½øÐиı䡣¹ØÓÚ
Controller£¬manager Öл¹°üº¬ÁË Node ½Úµã¿ØÖÆÆ÷£¨Node Controller£©¡¢×ÊÔ´Åä¶î¹Ü¿ØÖÆÆ÷£¨ResourceQuota
Controller£©¡¢ÃüÃû¿Õ¼ä¿ØÖÆÆ÷£¨Namespace Controller£©µÈ¡£
ÈçͼËùʾ£º

×ܽá
±¾ÎÄͨ¹ýÎÊ´ðµÄ·½Ê½£¬Ã»ÓÐÉæ¼°ÈκÎÉîÈëµÄʵÏÖϸ½Ú£¬´ÓÕûÌåµÄ½Ç¶È£¬¸ÅÄîÐԵĽéÉÜÁË K8S ÖÐÉæ¼°µÄ»ù±¾¸ÅÄÆäÖÐʹÓÃÏà¹ØµÄ°üÀ¨ÓУº
1.Node
2.Pod
3.Label
4.Selector
5.Replication Controller
6.Service Controller
7.ResourceQuota Controller
8.Namespace Controller
9.Node Controller
ÒÔ¼°ÔËÐнø³ÌÏà¹ØµÄÓУº
1.kube-apiserver
2.kube-controller-manager
3.kube-scheduler
4.kubelet
5.kube-proxy
6.pause
|