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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
°Ù·Öµã´ó¹æÄ£Kubernetes¼¯ÈºÊµ¼ù
 
×÷ÕߣºCSDNκΰ  À´Ô´;¼«¿ÍÍ·Ìõ ·¢²¼ÓÚ2017-1-18
  2071  次浏览      27
 

È¥Äê8Ôµף¬°Ù·ÖµãÓëÔÆÖªÉùÁªºÏ·¢²¼ÁËGoogle¿ªÔ´µÄ¼¯Èº¹ÜÀíϵͳKubernetesµÄ¡°·¢Ðа桱¡ª¡ªSextant¡£ÔÚ°Ù·Öµã´ó¹æÄ£Kubernetes¼¯Èº¾­¹ýËÄÎå¸öÔµÄÓ¦ÓÃʵ¼ùºó£¬µ½Ä¿Ç°ÎªÖ¹£¬¼¯ÈºÉÏÒѾ­³ÐÔØÁ˰ٷֵãÍÆ¼öϵͳµÄ´ó²¿·ÖÒµÎñ×é¼þºÍ²¿·ÖµÄÔËά×é¼þ¡£ÄÇô£¬ÔÚʹÓùý³ÌÖлáÓöµ½ÄÄЩÎÊÌ⣿ÈçºÎ½â¾ö£¿±¾Æª½«Ï꾡×ܽá°Ù·ÖµãÔÚʵ¼ùÖеľ­Ñé½Ìѵ£¬ÆÚÍûÄܹ»¸ü¶àµØ»ØÀ¡ÉçÇø¡£

´Ó0µ½1

ÔÚ´«Í³µÄ¼¯Èº¹ÜÀí·½·¨Ï£¬°Ù·Öµã·þÎñÆ÷ÀûÓÃÂʳ¤ÆÚ´¦ÓÚ20%ÒÔÏ¡£Í¨³£ÎªÁËÍê³Éij¸öÒµÎñÄ¿±ê£¬ÍŶӻáÉêÇë¸÷×ԵķþÎñÆ÷£¬È»ºó¹¤³ÌʦʹÓÃÌø°å»úµÇ½µ½ÕâЩ·þÎñÆ÷ÉÏÍê³É³ÌÐòµÄ²¿Êð¡£

ÕâÑùµÄ±×¶ËÊÇ£ºÊ×ÏÈ£¬ÕâЩ·þÎñÆ÷ÉϵĿÕÏÐ×ÊÔ´²¢²»»á¹±Ï׳öÀ´ÎªÆäËûÍŶÓËùʹÓã»Æä´Î£¬ÕâЩ·þÎñÆ÷ÔÚ½â¾öÒµÎñ¸ß·åÎÊÌâÖ®ºó£¬¸ºÔØÏ½µ£¬¶øÕâʱÍŶӲ¢²»Ï£Íû·þÎñÆ÷±»»ØÊÕ£¬ÒòΪ²»ÖªµÀÈçºÎ±¸·Ý·þÎñÆ÷Ö®ÉϵÄÊý¾Ý¡£

ÕâÑù£¬¼¯Èº·þÎñÆ÷ÀûÓÃÂÊÖð²½½µµÍ£¬ÕûÌ弯ȺµÄά»¤ºÍ¹ÜÀíÒ²±äµÃÒì³£À§ÄÑ£¬ÔÚ°Ù·ÖµãAI¼¼ÊõÔËÓÃÔö¶àµÄÇ÷ÊÆÏ£¬³£Óöµ½¼ÆËã×ÊÔ´²»×ã¶øµ¼ÖÂÒµÎñ½øÕ¹»ºÂýµÄÇé¿ö¡£

ÈçºÎ½â¾öÄØ£¿

ÎÒÃÇ×öÁ˺ܶೢÊÔ£¬×îÖÕ¾ö¶¨Ñ¡ÔñCoreOS¡¢Kubernetes£¨ÒÔϼò³ÆK8s£©¡¢CephÏà½áºÏµÄ¼¼Êõ·½°¸¡£

¶ÔÓÚKubernetesÔÚÉú²ú»·¾³ÖеÄÓ¦Ó㬰ٷֵãÊDZȽÏÔçµÄÒ»Åúʵ¼ùÕߣ¬´Ó¿ªÊ¼¹Ø×¢Kubernetes1.0£¬µ½½«1.2°æ±¾Êµ¼Ê²¿Êðµ½ÎÒÃǵÄÉú²ú»·¾³ÖУ¬Î§ÈÆKubernetes×öÁ˺ܶàÖܱ߹¤×÷£¬Ê¹KubernetesÄܹ»¸üºÃµØ·þÎñÓÚÒµÎñ³¡¾°¡£

ÏÞÓÚÆª·ùÔ­Òò£¬ÕâÀï²»Õ¹¿ª½éÉÜKubernetesµÄ»ù±¾Ô­ÀíºÍ¸ÅÄîÁË£¬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔÔÚÎÒÃǵÄgithubsextantÏîÄ¿ÖУ¬ÕÒµ½Ï൱·á¸»µÄÎĵµ¡£

ΪÁË´ï³ÉÕâÑùµÄÄ¿±ê£¬ÎÒÃÇÒªÇ󿪷¢ÕßʹÓÃDocker½«×Ô¼ºµÄÓ¦ÓóÌÐòÍê³É·â×°£¬Öð²½½«ÊÖ¶¯µÄ¼¯Èº²¿Êð£¬Çл»µ½Ê¹ÓÃK8SµÄ¼¯ÈºÈÝÆ÷±àÅÅÖ®ÉÏ¡£ÈçÏÂͼËùʾ£¬ÐèÒªÔÚÍŶÓÏîÄ¿µÄgitlab repoÖÐÔö¼ÓÏàÓ¦µÄDockerfileºÍ±àÅÅÎļþÄÚÈÝ£¬CI»·¾³»á×Ô¶¯½«Ó¦ÓÃÍê³É±àÒë->µ¥Ôª²âÊÔ->docker¾µÏñ´ò°ü->¾µÏñÌá½»µÄ¹¤×÷¡£·â×°ÔÚÈÝÆ÷ÖеÄÓ¦ÓÃʹÓÃCeph´æ´¢Êý¾Ý£¬²¢Í¨¹ýingress LoadBalancer¶ÔÍⲿÌṩ·þÎñ¡£

¶ÔÓÚKubernetesÔÚÉú²ú»·¾³ÉϵIJ¿Êð£¬ÎÒÃÇÏ£Íû×î´óÏ޶ȵļò»¯K8S¼¯ÈºÎ¬»¤ÈËÔ±µÄ¹¤×÷¡£±ÈÈçÀ©ÈÝһ̨»úÆ÷¡¢Ï¼ÜάÐÞһ̨»úÆ÷µÈ£¬Ö»ÐèҪά»¤ÈËÔ±Ö±½ÓÍê³É¿ª»ú£¯¹Ø»úµÄ²Ù×÷¼´¿É¡£ÓÉÓÚK8SµÄµ÷¶È±àÅÅ£¬¿ÉÒÔÆÁ±ÎÕâÀà²Ù×÷¶ÔÓ¦ÓõÄÓ°Ïì¡£

Èý²½Íê³É¼¯Èº°²×°

Ê×ÏÈÒª½â¾öµÄÎÊÌ⣬¾ÍÊÇÈçºÎÄܹ»¸ßЧµÄ¡¢×Ô¶¯»¯µÄ½øÐÐ×é¼þµÄ²¿ÊðÒÔ¼õÉÙÊÖ¶¯²¿Êð¿ÉÄÜ´øÀ´µÄÎÊÌâ¡£

°Ù·Öµã¡¢ÔÆÖªÉùÔÚ°Ù¶È¿ÆÑ§¼ÒÍõÒæ´øÁìÏ£¬ºÏ×÷¿ª·¢ÁË»ùÓÚPXE×Ô¶¯»¯°²×°CoreOS+Kubernetes¼¯ÈºµÄ¿ªÔ´SextantÏîÄ¿£¬Ö»ÐèÒª¼òµ¥µÄÈý¸ö²½Öè¼´¿ÉÍê³É¼¯ÈºµÄ°²×°£º¹æ»®¼¯Èº->Æô¶¯bootstrapper->½Úµã¿ª»ú×Ô¶¯°²×°¡£

1.PXE²ÉÓÃPXEµÄ¼¼Êõ£¬´ÓÍøÂç°²×°CoreOSµÄ²Ù×÷ϵͳ£¬Íê³É½Úµã²Ù×÷ϵͳµÄ³õʼ»¯¡£

2.cluster-desc.yamlÊǼ¯ÈºµÄÃèÊöÎļþ£¬ÖîÈç²Ù×÷ϵͳÀàÐÍ¡¢FlanneldÍøÂçģʽ¡¢Kubernetes°æ±¾µÈ¶¼»áÅäÖÃÔÚÕâ¸öÎļþÖС£¶ÔÓÚÿ¸ö´ý°²×°µÄ½Úµã£¬ÐèÒª¸ù¾ÝMACµØÖ·ÅäÖÃÏàÓ¦µÄ½ÇÉ«£¬ÀýÈçKube-master£¬flanneld-masterµÈ¡£

3.BootstrapperÊÇSextantÏîÄ¿µÄºËÐÄ·þÎñ£¬ÔØÈëcluster-desc.yamlÅäÖÃÎļþ£¬²¢Ìṩweb·þÎñ£¬¸ù¾Ý½ÚµãµÄMACµØÖ·Éú³ÉÏàÓ¦µÄcloud-config.yamlÎļþ£¬´Ó¶ø°²×°²¢Æô¶¯kubernetesÏà¹Ø×é¼þ¡£

²Ù×÷˳Ðò£º

1.Step 0¼¯Èº¹æ»®

¹æ»®¼¯Èº£¬½«¼¯ÈºÐÅÏ¢ÃèÊöΪcluster-desc.yamlÅäÖÃÎļþ£¬ÀýÈç²Ù×÷ϵͳµÄÀàÐÍ¡¢etcd½ÚµãµÄÊýÁ¿¡¢flanneldЭÒéÀàÐÍ£¬ÄÄЩ½Úµã×÷ΪmasterµÈµÈ¡£

2.Step 1±àÒë¡¢ÔËÐÐbootstrapper

ͨ¹ýÉÏÒ»²½ÖèµÄcluster-desc.yamlÎļþ£¬±àÒëbootstrapperµÄdocker image²¢Æô¶¯£¬bootstrapper»áÌṩPXE¡¢DHCP¡¢DNSÒÔ¼°Docker RegistryµÈ·þÎñ¡£

3.Step 2°²×°kubernetes½Úµã

½«·þÎñÆ÷½ÓÈ뼯Ⱥ£¬¿ª»ú²¢´ÓÍøÂçÒýµ¼°²×°£¬¼´¿É×Ô¶¯Íê³ÉCoreOSÒÔ¼°K8s×é¼þµÄ°²×°¹ý³Ì¡£

ÏÂÒ»²½¾ÍÊÇÓ¦ÓÃÇ¨ÒÆ£¬ÔÚÊÕ»ñÖÐÒ²³äÂúÁËÍ´¡£

ÊÕ»ñºÍÍ´

ÖÁ´Ë£¬ÎÒÃÇ×ÔÈÏΪ¿ÉÒÔ¿ªÊ¼Ïñϰ´ó´óÔªµ©Öú´Ê˵µÄÄÇÑù¡°ß£ÆðÐä×Ó¡±£¬½øÐÐÖð²½µÄÇ¨ÒÆ¹¤×÷ÁË¡£µ«¾­¹ý¼òµ¥µÄÐÔÄܲâÊԺ󣬽á¹û²¢²»ÀíÏë¡£ÔËÐÐÔÚK8SÖ®ÉϵķþÎñÏìÓ¦ÑÓ³Ù£¬µ¼Ö³öÏÖÖÁÉÙ20%µÄÐÔÄÜËðºÄ¡£ÔڲȿÓÖ®ºó£¬ÎÒÃǶÔK8SµÄÍøÂçÓÐÁ˸ü¼ÓÉîÈëµÄÀí½â¡£

Ò»¡¢´òÔìkubernetes¸ßÐÔÄÜÍøÂç

ÊìϤDockerµÄ¶ÁÕß¿ÉÄÜ»áÁ˽⵽£¬DockerÈÝÆ÷ÓÐÈýÖÖÍøÂçģʽ£¬µ«ÎªÁË´ïµ½ÈÝÆ÷ÄÚµÄÍøÂç»·¾³¸ôÀ룬ͨ³£»áÑ¡ÔñʹÓÃNAT·½Ê½Íê³ÉÈÝÆ÷ÄÚµÄÍøÂç°üת»»ºÍת·¢¡£ÕâÑù£¬ÔÚͬһ̨Ö÷»úÉÏÆô¶¯µÄÈÝÆ÷»ò²»Í¬Ö÷»úÆô¶¯µÄÈÝÆ÷Ö®¼ä£¬³ýÁËÅäÖÃNAT¶Ë¿ÚµÄ4²ãµØÖ·¿É·ÃÎÊÍ⣬¶¼²»¿ÉÒÔÖ±½Ó»¥Ïà·ÃÎÊ¡£

KubernetesµÄ½â¾ö˼·ºÍBridgedģʽµÄÐéÄâ»úȺºÜÏñ¡ª¡ªÓÃÒ»¸öͨÓõÄIPµØÖ··ÖÅä·þÎñ£¬ÎªÔËÐÐÔÚ¸÷¸öhostÉϵÄcontainerͳһ·ÖÅäIPµØÖ·¡£ÕâÑùÔËÐÐÔÚ²»Í¬hostÉϵÄcontainersÖ®¼äͨÐÅ£¬Ö±½ÓʹÓöԷ½µÄcontainer IPµØÖ·¾Í¿ÉÒÔÁË£¬¶ø²»ÐèÒª¿¼ÂÇhost IP¡£Õâʵ¼ÊÉϰÑDockerģʽÖеÄhost IPºÍcontainerIPÕâÁ½²ãIPµØÖ·±ä³ÉÁËÒ»²ã¡£

ÔÚKubernetesµÄÎĵµÀï²ûÊöÁËÒ»¸ö½ÐPodµÄ¸ÅÄ²¢ÇÒ½âÊÍÒ»¸öPodÀï¿ÉÒÔÔËÐÐÒ»¸ö»òÕß¶à¸öDocker containers¡£Êµ¼ÊÉÏ£¬Ò»¸öPod¾ÍÊÇÒ»¸öDocker container¡£ËùνÔÚPodÀïÔËÐеĶà¸öcontainers£¬Êµ¼ÊÉÏÊÇÆô¶¯µÄʱºò¼ÓÁ˨Cnet=container:²ÎÊýµÄcontainers£¬ËüÃDz»»áµÃµ½×Ô¼ºµÄIPµØÖ·£¬¶øÊǺÍpod container¹²ÏíIPµØÖ·¡£ÕâÑùÒ»À´£¬Ò»¸öpodÀïµÄcontainersÖ®¼äͨÐŵÄʱºò¿ÉÒÔÓÃlocalhostµØÖ·£¬¶ø¿çÔ½podµÄͨÐÅÓÃpod IP¡£ ¿´ÉÏÈ¥KubernetesµÄ×ö·¨ÀïÏà¶ÔÓÚDockerµÄ×ö·¨£¬¶àÁËÒ»²ãPodµÄ¸ÅÄî¡£

µ«ÊÇʵ¼ÊÉÏÿ¸öcontainerÀïÔ¼¶¨Ë׳ɵØÖ»ÔËÐÐÒ»¸ö·þÎñ½ø³Ì£¬ËùÒÔ»¹ÊÇÈý²ã¸ÅÄ

1.½Úµã£¨node£©

2.Pod

3.Container

KubernetesʵÏÖÕâÖÖÍøÂç½á¹¹ÓжàÖÖ·½·¨£¬Èçoverlay networking¡¢BGPºÍÆäËûSDN¼¼Êõ£¬³£¼ûµÄʵÏÖ°üÀ¨£ºFlannel¡¢ Calico¡¢ L2 networking¡¢OpenVSwitchµÈ£¬ÎÒÃǶԳ£Óò¢»îÔ¾µÄÏîÄ¿½øÐÐÁËÕë¶ÔÐÔÆÀ²â£¬½áÂÛÈçÏ£º

¿ÉÒÔ¿´µ½£¬ÔÚL2ģʽÏ£¬Õë¶Ô¸ßÐÔÄÜwebÓ¦Óó¡¾°¿ÉÒÔ´ïµ½×î¼ÑÐÔÄÜ¡£µ±È»Èç¹ûÓÐרÓõÄSDN½»»»»úÉ豸£¬Ò²¿ÉÒÔ´ó´óÌá¸ßSDNµÄÍøÂçÐÔÄÜ¡£µ«×ۺϳɱ¾¡¢·½°¸¸´Ôӳ̶ȡ¢·½°¸ºóÐø¿ÉÀ©Õ¹ÐÔ¿¼ÂÇ£¬×îÖÕÑ¡Ôñflannel host-gwģʽ¡£Õâ¸öģʽ£¬ÒªÇóËùÓÐhost±£³ÖÎȶ¨µÄ2²ãÍøÂçÁ¬½Ó£¬È»ºóͨ¹ýLinux·ÓÉ±í£¬½«Docker bridgeµÄ°üÍê³É3²ãת·¢¡£

ÁíÍâÒ»µã£¬ÔÚÆÀ²â¹ý³ÌÖз¢ÏÖ£¬linux¼ÓÔÚnetfilterºÍiptablesÏà¹ØÄÚºËÄ£¿éÖ®ºó£¬Æ½¾ùÍøÂçÑÓ³Ù»áϽµ10%×óÓÒ¡£µ«¾ÍĿǰ״̬À´Ëµ£¬Ê¹ÓÃiptables NAT×÷ΪKubernetesµÄservice¸ºÔؾùºâÈÔÈ»ÊÇÐÔÄÜ×î¸ß¡¢×î¼òµ¥µÄ·½Ê½¡£ºóÐøÈç¹û¿ÉÒÔʹÓøüÓÅÐãµÄ·½·¨Ìṩservice¸ºÔؾùºâ£¬¿ÉÒÔÈ¥µôiptablesÒÔ½µµÍÈÝÆ÷Ö®¼äµÄÍøÂçÑÓ³Ù¡£

ÔÚÕâÖÖÍøÂ粿ÊðÏ£¬Ê¹ÓÃÆÕͨµÄǧÕ×Íø¿¨ºÍǧÕ×½»»»»ú£¬¼´¿ÉÒԽϵͳɱ¾À´´î½¨´ó¹æÄ£µÄ¼¯Èº£¬²¢»ñµÃÏà¶Ô¿É¹ÛµÄÐÔÄÜ¡£ÔÚÕë¶ÔÍøÂçÑÓ³ÙÓиü¸ßÒªÇóµÄ·þÎñ£¬±ÈÈçRedisµÈ£¬Ôò¿¼ÂÇÖ±½ÓÎïÀí²¿Êð×÷ΪÕÛÖз½°¸¡£

¶þ¡¢´òÔì¸ß¿ÉÓõÄǰ¶Ë¸ºÔؾùºâÆ÷

´ÓÉÏÃæµÄ½éÉÜ¿ÉÒÔ¿´³ö£¬Kubernetes serviceÖ÷ÒªÈÔÊÇÕë¶ÔÊý¾ÝÖÐÐÄÄÚ²¿»¥Ïà·ÃÎÊ£¬ÈôÒª·½±ãµØÌṩHTTP web·þÎñµÄ´´½¨£¬ÔòÐèÒªÒýÈëIngressµÄ¸ÅÄî¡£

ÖÚËùÖÜÖªµÄÊÇ£¬KubernetesÖеÄService¿ÉÒÔ½«Ò»×épodÌṩµÄ·þÎñ±©Â¶³öÀ´¹©ÍⲿʹÓ㬲¢Ä¬ÈÏʹÓÃiptablesµÄ·½Ê½Ìṩ¸ºÔؾùºâµÄÄÜÁ¦¡£Serviceͨ¹ýʹÓÃiptables£¬ÔÚÿ¸öÖ÷»úÉϸù¾ÝKubernetes service¶¨Ò壬×Ô¶¯Í¬²½NAT±í£¬½«ÇëÇó¾ùºâµÄת·¢µ½ºó¶ËpodÉÏ£¬²¢ÔÚpod¹ÊÕÏʱ×Ô¶¯¸üÐÂNAT±í¡£Ïà¶ÔÓÚʹÓÃuserspace·½Ê½Ö±½Óת·¢Á÷Á¿Óиü¸ßµÄЧÂÊ¡£³£ÓõÄServiceÓÐClusterIP¡¢LoadbalancerÒÔ¼°NodePort·½Ê½¡£

ClusterIPÊÇͨ¹ýÿ¸ö½ÚµãµÄkuber-proxy½ø³ÌÐ޸ı¾µØµÄiptables£¬Ê¹ÓÃDNATµÄ·½Ê½½«ClusterIPת»»ÎªÊµ¼ÊµÄendpointµØÖ·¡£

NodePortÊÇΪÁËKubernetes¼¯ÈºÍⲿµÄÓ¦Ó÷½±ã·ÃÎÊkubernetesµÄ·þÎñ¶øÌṩµÄÒ»ÖÖ·½°¸£¬Ëü»áÔÚÿ¸ö»úÆ÷ÉÏ¡£

ÓÉÓÚNATÐÔÄܵÄÎÊÌ⣬NodePort»á´øÀ´Ò»¶¨µÄÐÔÄÜËðʧ£¬ÔÚһЩ³¡¾°Ï£¬ÎÒÃÇÒ²»áÑ¡ÓÃLoadbalancer×÷Ϊk8s¼¯ÈºÍⲿӦÓ÷ÃÎÊK8s¼¯ÈºÄÚ²¿Ó¦ÓõÄͳһÈë¿Ú¡£°Ù·Öµã²ÉÓõÄLoadbalancer¸ºÔؾùºâÆ÷ÊÇ»ùÓÚhaproxy£¬Í¨¹ýwatcher Kubernetes-apiserverÖÐserviceÒÔ¼°endpointÐÅÏ¢£¬¶¯Ì¬ÐÞ¸Ähaproxyת·¢¹æÔòÀ´ÊµÏֵġ£

´ÓÉÏÃæµÄ½éÉÜ¿ÉÒÔ¿´³ö£¬Kubernetes serviceÈÔÊÇÖ÷ÒªÕë¶ÔÊý¾ÝÖÐÐÄÄÚ²¿»¥Ïà·ÃÎÊ£¬ÈôÒª·½±ãµØÌṩHTTP web·þÎñµÄ´´½¨£¬ÔòÐèÒªÒýÈëIngressµÄ¸ÅÄî¡£

1.Ingress

¶ÔÓÚ¶ÔÍâÌṩ·þÎñµÄwebÓ¦ÓÃÀ´Ëµ£¬ÐèÒªÌṩ7²ã·´Ïò´úÀíµÄ»úÖÆ£¬Ê¹µÃ¹«ÍøµÄÁ÷Á¿¿ÉÒÔתÈ뼯Ⱥ֮ÖС£°Ù·Öµã²ÉÓõÄÊÇNginx£¬Í¨¹ýWatcherKubernetesÖÐIngress×ÊÔ´ÐÅÏ¢£¬¶¯Ì¬Ð޸ĶÔÓ¦µÄserviceÆ¥ÅäendpointµÄµØÖ·£¬Ê¹µÃÕû¸öÅäÖÃÁ÷³ÌÖ»Ðèͨ¹ýkubctlÌá½»Ò»¸öÅäÖü´¿É¡£Ingress×÷ΪÊý¾ÝÖÐÐÄwebÇëÇóµÄÈë¿Ú£¬½«Á÷Á¿ÒýÈëµ½¼¯ÈºÄÚ²¿£¬Íê³É´¦Àíºó¾­ÓÉIngress·µ»ØÍⲿÇëÇóÕß¡£ÕâÑùÒ»À´£¬ÈκÎÒ»¸ö²¿ÊðÔÚkubernetesÉϵÄwebÓ¦Ó㬶¼¿ÉÒÔ¼òµ¥µÄͨ¹ýÌá½»Ò»¸öIngress×ÊÔ´£¬Íê³ÉwebÇëÇó¶ÔÍâµÄ¿ªÍ¨¡£

2.Ingress HA

IngressµÄ»úÆ÷ÊÇÕû¸ö¼¯ÈºµÄÈë¿Ú£¬Èç¹ûÆäÖÐһ̨»úÆ÷³öÏÖ¹ÊÕÏ£¬´øÀ´µÄÓ°Ï콫»áÊÇÖÂÃüµÄ¡£ÎÒÃÇÒ²Ôø¿¼ÂǹýʹÓÃF5µÈ¼¼Êõ×öǰ¶ËµÄ¸ß¿ÉÓ㬵«×îºó»ùÓڳɱ¾ºÍ¿Éά»¤ÐÔ¿¼ÂÇ£¬×îÖÕʹÓÃKeepalived+vipµÄ·½°¸¡£

3.IngressÓÅ»¯

ÐÔÄÜÓÅ»¯

ÓÉÓÚNginxIngress ControllerÒª¼àÌýÎïÀí»úÉϵÄ80¶Ë¿Ú£¬ÎÒÃÇ×î³õµÄ×ö·¨ÊǸøËûÅäÖÃÁËhosrtport£¬µ«µ±´óÁ¿ÒµÎñÉÏÏßʱ£¬ÎÒÃÇ·¢ÏÖQPS³¬¹ý500/s¾Í»á³öÏÖÎÞ·¨×ª·¢Êý¾Ý°üµÄÇé¿ö¡£¾­¹ýÅŲ鷢ÏÖ£¬ÏµÍ³ÈíÖжÏÕ¼ÓõÄCPUÌØ±ð¸ß£¬hostport»áʹÓÃiptables½øÐÐÊý¾Ý°üµÄת·¢£¬ºóÀ´½«Ingress ControllerÐÞ¸ÄΪhostnetworkģʽ£¬Ö±½ÓʹÓÃDockerµÄhostģʽ£¬ÐÔÄܵõ½ÌáÉý£¬QPS¿ÉÒÔ´ïµ½5kÒÔÉÏ¡£

NginxÅäÖÃÓÅ»¯

Nginx IngressController´óֵŤ×÷Á÷³ÌÊÇÏÈͨ¹ý¼àÌýService¡¢IngressµÈ×ÊÔ´µÄ±ä»¯È»ºó¸ù¾ÝService¡¢IngressµÄÐÅÏ¢ÒÔ¼°nginx.templeÎļþ£¬½«Ã¿¸öservice¶ÔÓ¦µÄendpointÌîÈëÄ£°åÖÐÉú³É×îÖÕµÄNginxÅäÖᣵ«ÊǺܶàÇé¿öÏÂÄ£°åÖÐĬÈϵÄÅäÖòÎÊý²¢²»Âú×ãÎÒÃǵÄÐèÇó£¬ÕâʱÐèҪͨ¹ýkubernetesÖÐConfigMap»úÖÆ»ùÓÚNginx Ingress ControllerʹÓÃÎÒÃǶ¨ÖÆ»¯µÄÄ£°å¡£

ÈÕÖ¾»Ø¹ö

ĬÈÏÇé¿öÏÂDocker»á½«ÈÕÖ¾¼Ç¼ÔÚϵͳµÄ/var/lib/docker/container/xxxxÏÂÃæµÄÎļþÀµ«ÊÇǰ¶ËÈÕÖ¾Á¿ÊǷdz£´óµÄ£¬ºÜÈÝÒ׾ͻὫϵͳÅÌдÂú£¬Í¨¹ýÅäÖÃConfigMapµÄ·½Ê½£¬¿ÉÒÔ½«ÈÕ־Ŀ¼¸Äµ½Ö÷»úÉÏ£¬Í¨¹ýÅäÖÃlogrotate·þÎñ¿ÉÒÔʵÏÖÈÕÖ¾µÄ¶¨Ê±»Ø¹ö¡¢Ñ¹ËõµÈ²Ù×÷¡£

·þÎñÓ¦¼±

µ±ÏßÉÏ·þÎñ³öÏÖ²»¿ÉÓõÄÇé¿öʱ£¬ÎÒÃÇ»á×¼±¸Ò»Ì×Ó¦¼±µÄ·þÎñ×÷Ϊ±¸Óã¬Ò»µ«·þÎñ³öÏÖÎÊÌ⣬ÎÒÃÇ¿ÉÒÔ½«Á÷Á¿Çл»µ½Ó¦¼±µÄ·þÎñÉÏÈ¥¡£ÔÚk8sÉÏ£¬ÕâһϵÁвÙ×÷±äµÃ¸ü¼Ó¼òµ¥£¬ÕâÐèÔÙ×¼±¸Ò»Ì×ingress¹æÔò£¬½«Éú²ú»·¾³µÄServuce¸ÄΪӦ¼±µÄService£¬Çл»µÄʱºòͨ¹ýkubectl replace -f xxx.yaml ½«ÏàÓ¦µÄIngressÌæ»»£¬¼´¿ÉʵÏÖ·þÎñµÄÎÞ¸ÐÖªÇл»¡£

Èý¡¢´òÔìÒ»Ì廯Kubernetes¼¯Èº·þÎñ

×÷Ϊһ¸ö¼¯Èº»¯µÄ²Ù×÷ϵͳ£¬»ù´¡·þÎñ±Ø²»¿ÉÉÙ£¬¿ª·¢Õßͨ³£ÐèÒª¾­³£²é¿´·þÎñµÄÈÕÖ¾£¬²é¿´¼à¿ØÊý¾Ý£¬²é¿´ÔËÐÐ״̬µÈ¡£ÎÒÃÇΪKubernetes¼¯ÈºÅäÖÃÁ˺ܶà»ù´¡Àà·þÎñ£¬Ê¹¼¯ÈºÊ¹ÓÃÆðÀ´¸ü¼Ó¸ßЧ¡£

1.ÈÕÖ¾¹ÜÀí

µ±ÎÒÃǵÄÓ¦ÓÃÔËÐÐÔÚ¼¯Èº²Ù×÷ϵͳÉÏʱ£¬ÈçºÎ¸ßЧµØ²é¿´¡¢·ÖÎö·þÎñÈÕÖ¾ÊÇÒ»¸ö±ØÐëÒª½â¾öµÄÎÊÌâ¡£°Ù·Öµã²ÉÓÃÁËFluented+Elasticsearch+KibanaµÄ·½°¸£¬Õû¸öÌ×¼þÒ²¶¼ÊÇÔËÐÐÔÚKubernetes¼¯ÈºÉϵġ£

Fluentd

FluentedÊÇʹÓÃKubernetesÖÐDaemonsetµÄ»úÖÆ£¬Ê¹µÃfluentedÆô¶¯ÔÚÿһ¸ö½ÚµãÉÏ£¬²¢×Ô¶¯²É¼¯Docker ContainerµÄÈÕÖ¾µ½ES¼¯ÈºÖС£

Elasticsearch

ES×Ô´øµÄDiscovery»úÖÆ²¢²»ÄÜÔÚkubernetesÖÐÍêÃÀµÄÔËÐУ¬ÕâÀïʹÓÃkubernetesµÄ²å¼þ£¬Ê¹ÆäËûͨ¹ýServiceµÄ·½Ê½Ê¹master½ÚµãÄܹ»×Ô¶¯·¢ÏÖclientºÍdata½ÚµãµÄendpointµØÖ·£¬×é³É¼¯Èº¡£ESÖÐÊý¾Ý½ÚµãµÄ´æ´¢ÊÇ·ÅÔÚCeph¼¯ÈºÖе쬱£Ö¤ÁËÊý¾Ý¿É¿¿ÐÔ¡£

Kibana

KibanaÖÐÄܹ»¸ù¾ÝÓû§×Ô¶¨Òåɸѡ¡¢¾ÛºÏ£¬·½±ãÓû§²éѯʹÓá£

2 . ϵͳ¼à¿Ø

ͨ¹ýheapster+collectd+influxdb+grafana½â¾ö¶àÔ´Êý¾Ý²É¼¯¡¢¼à¿ØÊý¾Ý´æ´¢¡¢²éѯչÏÖµÄÎÊÌâ¡£

heapster¸ºÔð´ÓcAdvisorÖвɼ¯ËÞÖ÷»úÒÔ¼°containerÖÐµÄ¼à¿ØÊý¾Ý²¢Ð´ÈëinfluxdbÖС£

collectd¸ºÔð²É¼¯ÀàËÆnginx×é¼þµÄ¼à¿ØÊý¾ÝдÈëinfluxdbÖС£

influxdb¸ºÔð°´Ê±¼äÐòÁд洢¼à¿ØÊý¾Ý£¬²¢ÇÒÖ§³ÖÀàSQLµÄÓï·¨À´·ÃÎÊÊý¾Ý ¡£

grafanaÌṩÁËWebUI£¬Í¨¹ýÓû§×Ô¶¨ÒåµÄ²éѯ¹æÔò£¬Éú³ÉSQLÓï¾äÀ´²éѯinfluxdbÖеÄÊý¾Ý£¬²¢×îÖÕÒÔͼ±íµÄÐÎʽչÏÖ¸øÓû§¡£

3.ͳһDashboard

ΪÁ˼ò»¯kubernetes¼¯ÈºµÄʹÓ㬰ٷֵãµÄ¼¼ÊõÍŶӿª·¢ÁËSiriusϵͳ£¬Ê¹Óû§Ê¹ÓÃÆðÀ´¸ü¼ÓµÄ·½±ã£¬²¢ÇÒ´ËÏîĿҲÔÚGithubÉϽøÐÐÁË¿ªÔ´¡£

4.³ÖÐø»¯¼¯³É

DockerÊÇÎÒÃÇÂ䵨DevopsÀíÄîµÄºËÐļ¼Êõ£¬´Ó¿ª·¢ÈËԱдϵÚÒ»ÐдúÂ뿪ʼ£¬ÎÒÃǹ¹½¨ÁËÕâÑùÒ»Ìõ³ÖÐø¼¯³ÉµÄÁ÷Ë®Ïß¡£

ÎÒÃÇÑ¡ÔñÁËGitlab×÷Ϊ´úÂë²Ö¿â£¬µ±¿ª·¢ÈËÔ±ÏòGitlabÌá½»´úÂ룬Jenkins»á¼àÌýÿ¸ötag£¬Ã¿´Îpushʼþ£¬ÓÐÑ¡ÔñµÄ×Ô¶¯¹¹½¨Îªdocker image£¬²¢ÍÆÏòDocker Registry£¬´æ´¢ÔÚÎÒÃǵÄDocker²Ö¿âÖС£Ëæºó£¬Jenkins»á½«Ð°汾µÄ¾µÏñÍÆµ½¼¯³É²âÊÔµÄKubernetes¼¯ÈºÖУ¬Íê³ÉÒ»´Î¹¹½¨¡¢²âÊÔ¡¢Ô¤ÉÏÏßµÄÁ÷³Ì¡£´ý²âÊÔͨ¹ýºó£¬ÔÙ·¢²¼µ½Éú²ú»·¾³¡£

5.³ÖÐø»¯²¿Êð

ÔÚÖð²½½«ÏßÉÏÓ¦ÓÃÇ¨ÒÆµ½kubernetes¼¯Èº¹ý³ÌÖУ¬µ±È»Ò²Óöµ½²»ÉÙÎÊÌ⣬ÿ¸öÓ¦ÓÃÔÚÌá½»Ö®ºóÐèÒª¾­¹ý¶à´ÎÐ޸ĺ͸üвſÉÒÔÕýʽÉÏÏߣ¬ÎªÁË·½±ã¸üС¢²¢¾¡Á¿¼õÉÙÈËΪ²Ù×÷µÄʧÎó£¬ÎÒÃÇʹÓá°±àÅÅÎļþ°æ±¾¹ÜÀí+kubernetes deployment¡±Íê³É³ÖÐø»¯²¿Êð¡£

ʲôÊÇDeployment£¿

DeploymentÃèÊöÁË´ý²¿ÊðPodµÄ״̬£¬Ö»ÐèÒª¶¨ÒåÎÒÃÇÆÚÍûµÄÒ»×éPodµÄ״̬£¬kube-controller»á°ïÖúÎÒÃÇÔÚ¼¯ÈºÉÏά³ÖÕâһ״̬£¬²¢ÇÒ¿ÉÒԺܷ½±ãµØÔÚÉÏÃæ×öroll-outºÍroll-back¡£

ÈçºÎ¸üÐÂDeployment?

Ö±½ÓʹÓÃkubectl editdeployment/{your deployment}¼´¿É¶ÔÏàÓ¦deployment½øÐÐÐ޸ġ£²¢ÇÒ¿ÉÒÔÖ¸¶¨×î´ó²»¿ÉÓõÄPod¸öÊýÀ´¿ØÖƹö¶¯¸üеĽø¶È¡£Ã¿´ÎÖ´ÐÐeditÃüÁîÖ®ºó£¬¾Í»á´¥·¢deploymentµÄrolling update£¬Ó¦ÓûáÔÚºǫ́Íê³ÉÖð¸öƽ»¬Éý¼¶¡£

³ÖÐø²¿Êð

ÔÚÿ¸öÓ¦ÓõĴúÂë²Ö¿âÖУ¬»áÔö¼ÓÒ»¸ö.kubeµÄĿ¼£¬ÏÂÃæ´æ·Å±¾Ó¦ÓõÄyaml±àÅÅÎļþ£¬Ã¿´Î²¿ÊðÉý¼¶¶¼Ö±½ÓʹÓöÔÓ¦°æ±¾µÄ±àÅÅÎļþ¼´¿ÉÍê³É²¿Êð¡£

ËÄ¡¢´òÔìͳһ³Ö¾Ã»¯´æ´¢Æ½Ì¨

KubernetesÔÚÔËÐÐʱÊÇ»ùÓÚÈÝÆ÷¼¼ÊõµÄ£¬Õâ¾ÍÒâζ×ÅÈÝÆ÷µÄÍ£Ö¹»áÏú»ÙÈÝÆ÷ÖеÄÊý¾Ý¡£ÈôÓ¦ÓÃҪʹÓó־û¯µÄ´æ´¢£¬Èç¹ûÖ±½Ó¹ÒÔÚÈÝÆ÷ËùÔÚÖ÷»úµÄ´ÅÅÌĿ¼£¬Õâ¸ö±àÅÅϵͳ»áÏÔµÃÊ®·Ö»ìÂÒ¡£ËäÈ»KubernetesÌṩÁËÖîÈçhostPath»úÖÆ£¬³ý·ÇÓ¦ÓúÍÖ÷»ú¾ßÓзdz£Ã÷È·µÄ°ó¶¨¹ØÏµ£¬·ñÔò²»ÍƼöʹÓá£ÕâÑù£¬ÎÒÃÇÐèÒªÒ»¸öͨ¹ýÍøÂç¿É·ÃÎʵĴ洢³Ø£¬×÷ΪͳһµÄ¼¯Èº´æ´¢Æ½Ì¨¡£Ñ¡Ð͵ÄÎÊÌâÕâÀï²»Ïêϸչ¿ª£¬ÎÒÃÇ×îÖÐʹÓÃceph×÷ΪKubernetesµÄºó¶Ë´æ´¢¡£

ÔÚ²¿Êðʱ£¬¿¼Âǵ½kubernetes±àÅŵÄÍøÂçÇëÇó¿ÉÄܺÍcephµÄÊý¾Ý´æ´¢ÇëÇóÇÀÕ¼Íø¿¨´ø¿í¶øµ¼ÖÂÕûÌ弯Ⱥ̱»¾£¬Ô¤ÏȽ«kubernetes·ÃÎÊceph¼¯ÈºµÄÍøÂçʹÓõ¥¶ÀµÄÁ½¸öÍø¿Ú×öbond0Ö®ºóÁ¬½Óceph¼¯ÈºµÄ½»»»»ú¡£Í¬Ê±ÎªÁË·ÀÖ¹¶à¸öÈÝÆ÷Í»·¢ÐԵĸßIOPS¶Ôceph¼¯ÈºµÄ·ÃÎÊ£¬ÎÒÃÇÕýÔÚ¿ª·¢storage-iopsµÄqosÏÞÖÆ¹¦ÄÜ¡£

ËäÈ»cephÌṩÁË3ÖÖ´æ´¢·ÃÎʵķ½Ê½£¬ÎÒÃÇ»¹ÊÇÑ¡ÓÃÁËÏà¶ÔÎȶ¨µÄrbd£¬Ã»ÓÐʹÓÃceph filesystemģʽ¡£ÔÚrbdģʽÏ£¬Ê×ÏÈÒª±£Ö¤ÄÚºËÒѾ­¼ÓÔÚÁËrbd.koÄÚºËÄ£¿é£¬ºÍceph-common°ü¡£ÕâÒ»²½£¬ÎÒÃÇÔÚÇ°ÃæÌáµ½µÄsextant×Ô¶¯°²×°ÏµÍ³ÖÐÒѾ­Íê³É´ò°ü¡£

½ÓÏÂÀ´ÔÚʹÓÃrbd×÷Ϊpod´æ´¢Ê±¿ÉÒԲο¼Ê¾Àý£º

{
"apiVersion": "v1beta3",
"id": "rbdpd2",
"kind": "Pod",
"metadata": {
"name": "rbd2"
},
"spec": {
"containers": [
{
"name": "rbd-rw",
"image": "kubernetes/pause",
"volumeMounts": [
{
"mountPath": "/mnt/rbd",
"name": "rbdpd"
}
]
}
],
"volumes": [
{
"name": "rbdpd",
"rbd": {
"monitors": [
"192.168.0.1:6789"
],
"pool": "rbd",
"image": "foo",
"user": "admin",
"secretRef": {
"name": "ceph-secret"
},
"fsType": "ext4",
"readOnly": true
}
}
]
}
}

Ŀǰ£¬ÎÒÃÇÒѾ­Ê¹ÓÃkubernetes+ceph rbd²¿ÊðʹÓÃÁËMySQL¡¢MongoDB¡¢Redis¡¢InfluxDB¡¢ElasticSearchµÈ·þÎñºÍÓ¦Óá£

°Ù·Öµãʵ¼ù×ܽá

µ½Ä¿Ç°ÎªÖ¹£¬°Ù·ÖµãµÄKubernetes¼¯ÈºÉϳÐÔØÁËÍÆ¼öϵͳµÄ´ó²¿·ÖÒµÎñ×é¼þºÍ²¿·ÖµÄÔËά×é¼þ¡£KubernetesÏà¶ÔÀ´Ëµ»¹±È½ÏУ¬¼¯ÈºÉÏÒ²ÐèÒª¸ü¶àµÄ¹¤¾ß²ÅÄÜÈÃÓû§Ó¦ÓÃÆðÀ´¸ü¼ÓµÄ·½±ã¡£·Ç³£¸ÐлKubernetesÉçÇø¡¢ÍõÒæÒÔ¼°ÔÆÖªÉù¹«Ë¾µÄ¼¼ÊõÍŶӣ¬°Ù·Öµã»á³ÖÐø×¨×¢ÔÚKubernetesµÄ½¨É裬ÆÚÍûÄܹ»¸ü¶àµØ»ØÀ¡ÉçÇø¡£

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

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

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

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

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