±à¼ÍƼö: |
±¾±¾½éÉÜÁËk8s
ÔÚÆóÒµÖеÄÓ¦Óó¡¾°¡¢·þÎñ²¿Êðģʽ±äǨ & ·þÎñ²¿Êð±ä»¯ÎÊÌâµÄ˼¿¼¡¢ÔƼܹ¹
& ÔÆÔÉú¡¢ kubernetes ¼Ü¹¹ÔÀí¡£
±¾ÎÄÀ´×ÔÓÚCSDN £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
kubernetes£¬¼ò³Æ K8s£¬ÊÇÓà 8 ´úÌæÖмä 8 ¸ö×Ö·û
¡°ubernete¡± ¶ø³ÉµÄËõд£¬ÊÇÒ»¸ö¿ªÔ´µÄ£¬ÓÃÓÚ¹ÜÀíÔÆÆ½Ì¨Öжà¸öÖ÷»úÉϵÄÈÝÆ÷»¯µÄÓ¦Óã¬Kubernetes
µÄÄ¿±êÊÇÈò¿ÊðÈÝÆ÷»¯µÄÓ¦Óüòµ¥²¢ÇÒ¸ßЧ(powerful)£¬Kubernetes ÌṩÁËÓ¦Óò¿Ê𣬹滮£¬¸üУ¬Î¬»¤µÄÒ»ÖÖ»úÖÆ¡£
ÒÔÏÂΪ±¾ÈËѧϰ k8s µÄ±Ê¼Ç£¬ÕâÆª²©¿ÍÊDZʼǵĵÚÒ»²¿·Ö¡£
1. k8s ÔÚÆóÒµÖеÄÓ¦Óó¡¾°
Ê×ÏÈÎÒÃÇÁ˽âһϠk8s µÄÈý¸ö»ù±¾Ìص㣺
¿ÉÒÆÖ²: Ö§³Ö¹«ÓÐÔÆ£¬Ë½ÓÐÔÆ£¬»ìºÏÔÆ£¬¶àÖØÔÆ£¨multi-cloud£©
¿ÉÀ©Õ¹: Ä£¿é»¯£¬²å¼þ»¯£¬¿É¹ÒÔØ£¬¿É×éºÏ
×Ô¶¯»¯: ×Ô¶¯²¿Êð£¬×Ô¶¯ÖØÆô£¬×Ô¶¯¸´ÖÆ£¬×Ô¶¯ÉìËõ/À©Õ¹
1.1 ×Ô¶¯»¯ÔËάƽ̨
¶ÔÓÚÖÐСÐÍÆóÒµ£¬ÎªÁ˽µ±¾ÔöЧ£¬Ê¹Óà k8s À´¹¹½¨Ò»Ì××Ô¶¯»¯ÔËάƽ̨£¬ÌṩÁËÓ¦Óò¿Ê𣬹滮£¬¸üУ¬Î¬»¤µÄÒ»ÖÖ»úÖÆ¡£
¶ÔÓÚ´óÐÍ»¥ÁªÍø¹«Ë¾¸üҪʹÓÃÈÝÆ÷»¯²¿Êð¡£ÏÖÔÚ·þÎñÆ÷Ô½À´Ô½¶à£¬²»¿ÉÄܶ¼È˹¤²¿Êð£¬ÐèҪʹÓÃ×Ô¶¯»¯µÄÔËάƽ̨À´¼à¿Ø·þÎñ£¬À´ÊµÏÖ×Ô¶¯·þÎñ»¯µÄ²¿Êð¡¢ÔËά¡£
1.2 ³ä·ÖÀûÓ÷þÎñÆ÷×ÊÔ´
¾ÙÀý˵Ã÷
¼ÙÉèÏÖÔÚÓÐÒ»¸ö¿ª·¢Á¿Îª 200 ¸öµÄÇëÇ󣬷þÎñÆ÷ÅäÖÃΪ 2cpus 4G
¾²Ì¬ÇëÇó£º150£¨·ÃÎÊ CDN£¬Nginx£¬cache µÈ£©
¶¯Ì¬ÇëÇó£º50£¨·ÃÎÊÊý¾Ý¿â£¬ÐèÒª°ÑÊý¾Ý¶ÁÈëÄڴ棩
¹ÀËã·þÎñÆ÷×ÊÔ´£¨Ö»¿¼ÂÇÄڴ棬²»¿¼ÂdzÌÐòÏìӦʱ¼äRT£¬²»¿¼ÂÇCPUÇл»Ê±¼ä£©
¼ÙÉèÒ»¸ö¾²Ì¬ÇëÇó½ø³ÌÕ¼ÓÃ2M£¬Ò»¸ö¶¯Ì¬ÇëÇó½ø³ÌÕ¼ÓÃ10M£¬ÔòÕâ200¸öÇëÇó²¢·¢Õ¼Óãº150¡Á2M +
50¡Á10M = 800M ÄÚ´æ
¿ÉÒÔÖ§³ÖµÄ QPS (Åú·¢Á¿£¬Ã¿Ãë²éѯÂÊ) Ϊ£º200¡Á4=800£¨ÒòΪ 800 M¡Á 4 <
4G£©
Òò´ËÈç¹ûÒª³ä·ÖÀûÓ÷þÎñÆ÷×ÊÔ´£¬ÐèÒª´ïµ½ QPS=800£¬´ËʱռÓÃÄÚ´æ 3.2G£¨Ê£Ï 0.8G ¸ø
OS µÈ£©
ʵ¼ÊÉÏ£º800QPS ÎÞ·¨´ïµ½£¬»¹Òª¿¼ÂÇ RT¡¢CPU Çл»¡¢ÄÚ´æµÈÒòËØ£¬ÄǾͱ£ÊØ°Ñ QPS=300£¬µ«ÕâʱûÄܳä·ÖÀûÓ÷þÎñÆ÷µÄ×ÊÔ´¡£¸üºÎ¿öµ±Ï·þÎñÆ÷ÅäÖÿɲ»Ö¹
2cpus 4G
ÈÝÆ÷»¯½â¾ö·½°¸£¬ÔÚ·þÎñÆ÷²¿Êð¶à¸öÈÝÆ÷£¬ÈÝÆ÷µ±ÖÐÔËÐÐ×ÅÎÒÃDz¿ÊðµÄ¸÷ÖÖ·þÎñ

1.3 ·þÎñÎÞ·ìÇ¨ÒÆ
ÔÚ¿ª·¢»·¾³¿ª·¢£¬È»ºóÄõ½²âÊÔ»·¾³È¥²âÊÔ£¬µ«ÍùÍùÒ»ÉÏÏ߾ͻáÓÐ bug£¬ÒòΪӦÓõÄÔËÐС¢ÅäÖᢹÜÀí¡¢ËùÓÐÉú´æÖÜÆÚ½«Ó뵱ǰ²Ù×÷ϵͳ°ó¶¨£¬ËùÒÔÉú²ú»·¾³µÄ²»Ò»Ö¾ͿÉÄܵ¼Ö´íÎó¡£
ʹÓÃÈÝÆ÷»¯½â¾ö·½°¸£¬Ã¿¸öÓ¦ÓÿÉÒÔ±»´ò°ü³ÉÒ»¸öÈÝÆ÷¾µÏñ£¨ºìɫȦÆðÀ´±íʾ°Ñ·þÎñ²¿ÊðÔÚÈÝÆ÷ÖУ©£¬Ê¹ÓÃÈÝÆ÷¿ÉÒÔÔÚ
¿ª·¢ »ò ²âÊÔ µÄ½×¶Î£¬ÎªÓ¦Óô´½¨ÈÝÆ÷¾µÏñ£¬ÕâЩ¾µÏñÄܹ»ÍêÈ«ÍÑÀë»·¾³£¬Ã¿¸öÓ¦Óò»ÐèÒªÓëÆäÓàµÄÓ¦ÓöÑÕ»×éºÏ£¬Ò²²»ÒÀÀµÓÚÉú²ú»·¾³»ù´¡½á¹¹£¬ÕâʹµÃ´ÓÑз¢µ½²âÊÔ¡¢Éú²úÄÜÌṩһÖ»·¾³¡£Ê¹ÓÃ
kubernetes À´¹ÜÀíÕâЩÈÝÆ÷£¬±ãÄܹ»ÊµÏÖ·þÎñµÄÎÞ·ìÇ¨ÒÆ¡£

2. ·þÎñ²¿Êðģʽ±äǨ & ·þÎñ²¿Êð±ä»¯ÎÊÌâµÄ˼¿¼
2.1 ·þÎñ²¿ÊðģʽÊÇÈçºÎ±äǨµÄ
ÎïÀí»ú£º´«Í³µÄÓ¦Óò¿Êð·½Ê½ÊÇͨ¹ý²å¼þ»ò½Å±¾À´°²×°Ó¦Óá£ÕâÑù×öµÄȱµãÊÇÓ¦ÓõÄÔËÐС¢ÅäÖᢹÜÀí¡¢ËùÓÐÉú´æÖÜÆÚ½«Ó뵱ǰ²Ù×÷ϵͳ°ó¶¨£¬ÕâÑù×ö²¢²»ÀûÓÚÓ¦ÓõÄÉý¼¶¸üÐÂ/»Ø¹öµÈ²Ù×÷¡£
ÐéÄ⻯ (ÐéÄâ»ú)£ºµ±È»ÉÏÃæµÄÎÊÌâ¿ÉÒÔͨ¹ý´´½¨ÐéÄâ»úµÄ·½Ê½À´ÊµÏÖijЩ¹¦ÄÜ£¬µ«ÊÇÐéÄâ»ú±¾Éí¾ÍºÜÕ¼ÓÃ×ÊÔ´£¬²¢²»ÀûÓÚ¿ÉÒÆÖ²ÐÔ¡££¨¾ÍÊǰѷþÎñ²¿ÊðÔÚÐéÄâ»úÖУ¬´ïµ½·Ö¸ôÎïÀí×ÊÔ´µÄ×÷Ó᪡ª³ä·ÖÀûÓ÷þÎñÆ÷×ÊÔ´£©
ÈÝÆ÷²¿Êð£ºÃ¿¸öÈÝÆ÷Ö®¼ä»¥Ïà¸ôÀ룬ÿ¸öÈÝÆ÷ÓÐ×Ô¼ºµÄÎļþϵͳ £¬ÈÝÆ÷Ö®¼ä½ø³Ì²»»áÏ໥ӰÏ죬ÄÜÇø·Ö¼ÆËã×ÊÔ´¡£Ïà¶ÔÓÚÐéÄâ»ú£¬ÈÝÆ÷ÄÜ¿ìËÙ²¿Êð£¬ÓÉÓÚÈÝÆ÷Óëµ×²ãÉèÊ©¡¢»úÆ÷Îļþϵͳ½âñîµÄ£¬ËùÒÔËüÄÜÔÚ²»Í¬ÔÆ¡¢²»Í¬°æ±¾²Ù×÷ϵͳ¼ä½øÐÐÇ¨ÒÆ¡£¶øÇÒ¸üÇáÁ¿¼¶¡¢ÔËÐÐЧÂʸü¿ì¡£
2.2 ·þÎñ²¿Êðģʽ±ä»¯£¬´øÀ´ÁËÄÄЩÎÊÌâ
ǰÌáÌõ¼þ£ºSOA ¼Ü¹¹£¬Î¢·þÎñ¼Ü¹¹Ä£Ê½Ï£¬·þÎñ²ð·ÖÔ½À´Ô½¶à£¬²¿Êðά»¤µÄ·þÎñÔ½À´Ô½¶à£¬¸ÃÈçºÎ¹ÜÀí£¿
ÐéÄâ»ú·þÎñ²¿Êð·½Ê½£¨Í¨¹ý openstack Èí¼þÌṩ¿ÉÊÓ»¯µÄ·½Ê½À´¹ÜÀíÐéÄâ»ú£©
ÈÝÆ÷»¯²¿Êðģʽ£¨Í¨¹ý k8s Èí¼þ¹ÜÀíÈÝÆ÷£¬ÆäʵÈÝÆ÷Ò²¿ÉÒÔ¿´³ÉÒ»¸öÐéÄâ»ú£¬Ö»²»¹ý¸üÇáÁ¿¼¶£©
ÈÝÆ÷»¯²¿ÊðÎÊÌ⣺
ÈçºÎ¶Ô·þÎñºáÏòÀ©Õ¹£¿
ÈÝÆ÷å´»úÔõô°ì£¿ÈçºÎ»Ö¸´£¿
ÖØÐ·¢²¼°æ±¾ÈçºÎ¸üÐÂÇÒ¸üкó²»Ó°ÏìÒµÎñ£¿
ÈçºÎ¼à¿ØÈÝÆ÷£¿
ÈÝÆ÷ÈçºÎµ÷¶È´´½¨£¿
Êý¾Ý°²È«ÐÔÈçºÎ±£Ö¤£¿
ʹÓà k8s ¹ÜÀíÈÝÆ÷£¬ÒÔÉÏÎÊÌâ¶¼Äܹ»ÍêÃÀµÄ½â¾ö ??©c(¡ã¨Œ¡ã)¥Î?
3. ÔÆ¼Ü¹¹ & ÔÆÔÉú
3.1 ÔÆ ºÍ k8s µÄ¹ØÏµ
ÔÆ£ºÊ¹ÓÃÈÝÆ÷¹¹½¨µÄÒ»Ì×·þÎñ¼¯ÈºÍøÂç£¬ÔÆÊÇÓɺܶàµÄÈÝÆ÷¹¹³É¡£
k8s£ºÓÃÀ´¹ÜÀíÔÆÖеÄÈÝÆ÷
3.2 ÔÆ¼Ü¹¹
iaas£º»ù´¡ÉèÊ©¼´·þÎñ
Óû§½Ç¶È£º×âÓ㨹ºÂò»ò·ÖÅäȨÏÞ£©ÔÆÖ÷»ú£¬Óû§²»Óÿ¼ÂÇÍøÂç¡¢DNS¡¢´æ´¢ºÍÓ²¼þ»·¾³µÈ·½ÃæµÄÎÊÌâ¡£
ÔËÓªÉ̽ǶȣºÌá¹©ÍøÂç¡¢DNS¡¢´æ´¢µÈÕâÑùµÄ·þÎñ¾Í½Ð×ö»ù´¡ÉèÖ÷þÎñ
paas£ºÆ½Ì¨¼´·þÎñ
ÔÚÆ½Ì¨ÉÏÌṩÁ˺ܶà·þÎñ£¬Èç MySQL ·þÎñ¡¢Redis ·þÎñ¡¢MQ ·þÎñ¡¢Elasticsearch
·þÎñµÈµÈ
saas£ºÈí¼þ¼´·þÎñ
¶¤¶¤¡¢²ÆÎñ¹ÜÀíµÈµÈ£¬Ò»Ð©Èí¼þά»¤¹¤×÷¶¼ÊÇÓÉÔËÐÐÉÌÀ´×ö£¬Óû§Ö»¹ÜÌåÑéÈí¼þÌṩµÄ·þÎñ¾ÍÐÐÁË¡£
serverless£ºserver ·þÎñ£¬less ÎÞ ¡ª¡ª ÎÞ·þÎñ ²»ÐèÒª·þÎñÆ÷
Õ¾ÔÚÓû§½Ç¶È¿¼ÂÇÎÊÌ⣬Óû§Ö»ÐèҪʹÓÃÔÆ·þÎñÆ÷¼´¿É¡£
ÔÚÔÆ·þÎñÆ÷ÉϵÄËùÓеĻù´¡»·¾³¡¢Èí¼þ»·¾³¶¼²»ÐèÒª¿¼ÂǺÍά»¤£¬·Ç³£·½±ã¡£
δÀ´¿ª·¢µÄÇ÷ÊÆ¶¼ÊÇ severless£¬ÆóÒµ¶¼¹¹½¨ÁË×Ô¼ºµÄ˽ÓÐÔÆ»òÕß¹«ÓÐÔÆ»·¾³¡£Ê¹Óà k8s ¹¹½¨·Ç³£·½±ã¡£
3.3 ÔÆÔÉú
ΪÁËÈÃÓ¦ÓóÌÐò£¨ÏîÄ¿£¬·þÎñÈí¼þ£©¶¼ÔËÐÐÔÚÔÆÉϵĽâ¾ö·½°¸£¬ÕâÑù·½°¸½Ð×öÔÆÔÉú£¬ÓÐÒÔÏÂÌØµã£º
ÈÝÆ÷»¯£ºËùÓеķþÎñ¶¼±ØÐ벿ÊðÔÚÈÝÆ÷ÖС£
΢·þÎñ£ºweb ·þÎñ¼Ü¹¹ÊÇ΢·þÎñ¼Ü¹¹
CI/CD£º¿É³ÖÐø½»»¥ºÍ¿É³ÖÐø²¿Êð
DevOps£º¿ª·¢ºÍÔËάÃܲ»¿É·Ö
4. kubernetes ¼Ü¹¹ÔÀí
4.1 k8s µÄÀúÊ·
k8s ÊÇÓÉ Google ¹«Ë¾ ÓÃgo ÓïÑÔ¿ª·¢µÄ¡£google ÔÚÈ«ÇòÓÐÏ൱¶àµÄ·þÎñÆ÷£¬µ±È»ÐèÒªÒ»¸ö¹ÜÀíÈí¼þ¡£GoogleÄÚ²¿±¾Éí¾ÍÓÐÒ»¸ö½Ð
borg µÄÏµÍ³ÔÆÆ½Ì¨¹ÜÀí¹¤¾ß£¬ÒѾʹÓÃÁËÊ®¼¸Äê¡£ºóÀ´²ÎÕÕ borg ϵͳ¼Ü¹¹¿ª·¢ÁË k8s£¬Ö÷ÒªÓÃËüÀ´±àÅÅ¡¢¹ÜÀíÈÝÆ÷£¬ÎªÈÝÆ÷»¯µÄÓ¦ÓÃÌṩ²¿ÊðÔËÐС¢×ÊÔ´µ÷¶È¡¢·þÎñ·¢ÏֺͶ¯Ì¬ÉìËõµÈһϵÁÐÍêÕû¹¦ÄÜ£¬Ìá¸ßÁË´ó¹æÄ£ÈÝÆ÷¼¯Èº¹ÜÀíµÄ±ã½ÝÐÔ¡£
4.2 k8s µÄ¼Ü¹¹
4.2.1 k8s ¼¯Èº£¨Cluster£©

Ò»¸ö master ¶ÔӦһȺ node ½Úµã
4.2.2 master ½Úµã

api server£ºÏ൱ÓÚ k8s µÄÍø¹Ø£¬ËùÓеÄÖ¸ÁîÇëÇó¶¼±ØÐë¾¹ý
api server
scheduler£ºµ÷¶ÈÆ÷£¬Ê¹Óõ÷¶ÈËã·¨£¬°ÑÇëÇó×ÊÔ´µ÷¶Èµ½Ä³¸ö node ½Úµã
controller£º¿ØÖÆÆ÷£¬Î¬»¤ k8s ×ÊÔ´¶ÔÏó£¨CRUD£ºÌí¼Ó¡¢É¾³ý¡¢¸üС¢Ð޸ģ©
etcd£º´æ´¢×ÊÔ´¶ÔÏ󣨿ÉÒÔ·þÎñ×¢²á¡¢·¢Ïֵȵȣ©
4.2.3 node ½Úµã

docker£ºÔËÐÐÈÝÆ÷µÄ»ù´¡»·¾³£¬ÈÝÆ÷ÒýÇæ
kubelet£ºÃ¿¸ö node ½Úµã¶¼ÓÐÒ»·Ýkubelet£¬ÔÚ node ½ÚµãÉϵÄ×ÊÔ´²Ù×÷Ö¸ÁîÓÉ kuberlet
À´Ö´ÐУ¬scheduler °ÑÇëÇ󽻸øapi £¬È»ºó api sever ÔÙ°ÑÐÅÏ¢Ö¸ÁîÊý¾Ý´æ´¢ÔÚ etcd
ÀÓÚÊÇ kuberlet »áɨÃè etcd ²¢»ñȡָÁîÇëÇó£¬È»ºóÈ¥Ö´ÐÐ
kube-proxy£º´úÀí·þÎñ£¬¸ºÔؾùºâ
fluentd£ºÈÕÖ¾ÊÕ¼¯·þÎñ
pod£ºk8s ¹ÜÀíµÄ»ù±¾µ¥Ôª£¨×îСµ¥Ôª£©£¬pod ÄÚ²¿ÊÇÈÝÆ÷¡£k8s ²»Ö±½Ó¹ÜÀíÈÝÆ÷£¬¶øÊǹÜÀí pod
4.3 »Ø¹Ë¼Ü¹¹Ìصã
k8s ÊÇÓÃÀ´¹ÜÀíÈÝÆ÷µÄ£¬µ«ÊDz»Ö±½Ó²Ù×÷ÈÝÆ÷£¬×îСµÄ²Ù×÷µ¥ÔªÊÇ pod£¨¼ä½Ó¹ÜÀíÈÝÆ÷£©
Ò»¸ö master ¶ÔӦһȺ node ½Úµã¡£
master ½Úµã²»´æ´¢ÈÝÆ÷£¬Ö»¸ºÔðµ÷¶È£¬Íø¹Ø£¬¿ØÖÆÆ÷£¬×ÊÔ´¶ÔÏó´æ´¢µÈ
ÈÝÆ÷´æ´¢ÔÚ node ½Úµã µÄ pod ÄÚ²¿
pod ÄÚ²¿¿ÉÒÔÓÐÒ»¸ö»ò¶à¸öÈÝÆ÷
kubelet ¸ºÔð±¾µØµÄ pod µÄά»¤£¬CRUD
kube-proxy ¸ºÔð¸ºÔؾùºâ£¬ÔÚ¶à¸ö pod ¼ä¸ºÔؾùºâ
|