±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚinfoq£¬±¾ÎÄͨ¹ýÃèÊö´´½¨ÈÝÆ÷»¯£¬ÈÝÆ÷»¯Éè¼ÆÄ£Ê½½éÉÜÁËKubernetes£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ |
|
±¾ÎÄÒªµã
1.ÎÒÃǸüÇãÏòÓÚ½«KubernetesÊÓΪһ¸ö»ù±¾µÄ·¶Ê½£¬ËüÔÚ¶à¸öά¶ÈÉ϶¼ÓÐÒâÒ壬¶ø²»½ö½öÊÇÒ»¸öÄܹ»ÓëÖ®½»»¥µÄAPI¡£
2.KubernetesΪ»ùÓÚÓïÑԵĹ¹½¨¿éÔö¼ÓÁËÒ»¸öȫеÄά¶È£¬ËüÌṩÁËÒ»×éеķֲ¼Ê½ÔÓïºÍÔËÐÐʱ»·¾³£¬ÓÃÓÚ´´½¨·Ö²¼ÓÚ¶à¸ö½ø³ÌºÍ½ÚµãÉϵķֲ¼Ê½ÏµÍ³¡£
3.´´½¨ÈÝÆ÷»¯Ó¦ÓóÌÐòµÄºËÐÄÔÔòÊǽ«ÈÝÆ÷¾µÏñµ±×ö»ù±¾µÄÔÓ°ÑÈÝÆ÷±àÅÅÆ½Ì¨µ±×öÄ¿±êÈÝÆ÷µÄÔËÐÐʱ»·¾³¡£ÆäÖеÄÔÔò°üÀ¨µ¥Ò»¹Ø×¢£¨single
concern£©¡¢×ÔÎÒ¿ØÖÆ£¨self-containment£©¡¢¾µÏñ²»±äÐÔ£¨image immutability£©¡¢¸ß¿É¹Û²âÐÔ£¨high
observability£©¡¢ÉúÃüÖÜÆÚÒ»ÖÂÐÔ£¨lifecycle conformance£©¡¢¹ý³ÌÒ»´ÎÐÔ£¨process
disposability£©ÒÔ¼°ÔËÐÐʱÏÞÖÆ£¨runtime confinement£©¡£
4.ÈÝÆ÷Éè¼ÆÄ£Ê½µÄÖØµãÊǹ¹½¨ÈÝÆ÷ºÍÆäËü·Ö²¼Ê½ÔÓҪʹÓÃ×î¼ÑµÄ·½Ê½À´½â¾öµ±Ç°ÃæÁÙµÄÌôÕ½¡£ÕâЩģʽ°üÀ¨¿ç¶·Ä£Ê½£¨sidecar£©¡¢´óʹģʽ£¨ambassador£©¡¢ÊÊÅäÆ÷ģʽ£¨adapter£©¡¢³õʼ»¯Æ÷ģʽ£¨initializer£©¡¢¹¤×÷¶ÓÁÐģʽ£¨work
queue£©¡¢×Ô¶¨Òå¿ØÖÆÆ÷ģʽ£¨custom controller£©ÒÔ¼°×Ô¸Ð֪ģʽ£¨self awareness£©¡£
5.ÈÝÆ÷µÄ×î¼Ñʵ¼ùÓë¾µÏñ´óС¡¢¶Ë¿Ú¹æ¸ñ¡¢ÈÝÁ¿Ê¹ÓᢾµÏñÔªÊý¾ÝµÈµÈ¶¼Óйء£
Kubernetes£¨k8s£©Ôں̵ܶÄÒ»¶Îʱ¼äÄÚ×ß¹ýÁ˺ܳ¤µÄÒ»¶Î·¡£½ö½öÁ½ÄêÒÔǰ£¬Ëü»¹ÐèÒªÓëCoreOSµÄFleet¡¢Docker
Swarm¡¢Cloud Foundry Diego¡¢HashiCorpµÄNomad¡¢Kontena¡¢RancherµÄCattle¡¢Apache
Mesos¡¢Amazon ECSµÈ½øÐоºÕù£¬À´Ö¤Ã÷×Ô¼º±ÈÄÇЩ²úÆ·¶¼ÒªÓÅÐã¡£¶øÏÖÈç½ñÒѾÊÇÍêÈ«²»Í¬µÄÒ»·ù¾°ÏóÁË¡£ÆäÖеÄһЩ¹«Ë¾¹«¿ªÐû²¼ÁËÏîÄ¿µÄÖÕÖ¹²¢ÇÒ¿ªÊ¼¼ÓÈëµ½KubernetesÕóÓªÖУ¬»¹ÓÐһЩ¹«Ë¾Ã»Óй«¿ªÐû²¼×Ô¼ºÏîÄ¿µÄʧ°Ü£¬¶øÊÇÔÚÕ½ÂÔÉÏÐû²¼Á˶ÔKubernetesµÄ²¿·ÖÖ§³Ö»òÕßÍêÈ«ÕûºÏ£¬ÕâÒ²¾ÍÒâζ×ÅËûÃǵÄÈÝÆ÷±àÅŹ¤¾ß½«»á°²¾²¶ø»ºÂýµØËÀµô¡£²»ÂÛÊÇÄÄÒ»ÖÖÇé¿ö£¬k8s¶¼ÊÇ×îºóÒ»¸ö»îÏÂÀ´µÄƽ̨¡£³ý´ËÖ®Í⣬²»½ö½öÊÇÓû§ºÍ°×½ðÔÞÖúÉÌÃÇ£¬Ô½À´Ô½¶àµÄ´ó¹«Ë¾¶¼½«¼ÌÐø¼ÓÈëµ½KubernetesµÄÉú̬ϵͳÖУ¬½«×Ô¼ºµÄÒµÎñÍêȫѺעÓÚKubernetesµÄ³É¹¦¡£ÎÒÃÇÊ×ÏÈÄÜÏëµ½µÄÓÐGoogleµÄKubernetes
Engine¡¢Red HatµÄOpenShift¡¢MicrosoftµÄAzure Container
Service¡¢IBMµÄ Cloud Container Service¡¢OracleµÄContainer
Engine¡£
µ«ÊÇÕâЩÒâζ×ÅÊ²Ã´ÄØ£¿Ê×ÏÈ£¬ÕâÒâζ×Å¿ª·¢ÈËÔ±±ØÐëÒªÕÆÎÕÒ»¸öÓë90%µÄÈÝÆ÷¹¤×÷Ïà¹ØµÄÈÝÆ÷±àÅÅÆ½Ì¨¡£ÕâÊÇÒ»¸öѧϰKubernetesºÜºÃµÄÀíÓÉ¡£Í¬Ê±Õ⻹Òâζ×ÅÎÒÃÇÒѾÉîÉîµØÒÀÀµÓÚKubernetes£¬Kubernetes¾ÍÏñÈÝÆ÷ÁìÓòÖеÄAmazon¡£ÔÚKubernetesÉϽøÐÐÉè¼Æ¡¢ÊµÏÖºÍÔËÐÐÓ¦ÓóÌÐò¿ÉÒÔÈÃÄãÔÚ²»Í¬µÄÔÆÌṩÉÌ¡¢Kubernetes·¢ÐаæºÍ·þÎñÌṩÉÌÖ®¼ä×ÔÓɵضÔÓ¦ÓóÌÐò½øÐÐÒÆ¶¯¡£ËüÄÜÈÃÄãÓлú»áÕÒµ½KubernetesÈÏÖ¤µÄ¿ª·¢ÈËÔ±£¬ÈÃËûÃÇÀ´¿ª·¢Ò»¸öÏîÄ¿²¢ÇÒÔÚÒÔºóµÄÔËÐйý³ÌÖгÖÐøÌṩ֧³Ö¡£Kubernetes²»ÊÇVM£¬Ò²²»ÊÇJVM£¬ËüÊÇȫеÄÓ¦ÓóÌÐò¿ÉÒÆÖ²²ã£¬ËüÊÇ´ó¼Ò¹²Í¬µÄÑ¡Ôñ¡£
¶ÔKubernetesµÄÉî¶ÈÒÀÀµ
ÏÂͼÊÇÒ»¸öÈÝÆ÷»¯·þÎñµÄͼ±í£¬ÆäÖбíÃ÷Á˸÷þÎñ¶ÔKubernetesµÄÒÀÀµ³Ì¶È£º

ͼ1 - KubernetesÉϵÄÓ¦ÓóÌÐòÒÀÀµ
Çë×¢Ò⣬ÎÒ²¢Ã»ÓÐдµ½KubernetesÊÇÓ¦ÓóÌÐò¿ÉÒÆÖ²ÐÔAPI£¬ËüÊÇÒ»¸ö²ã¡£ÉÏͼÏòÎÒÃÇչʾÁËÖ»ÓÐÏÔʽ´´½¨µÄk8s¶ÔÏó²ÅÄܹ»µ÷ÓÃk8s
API¡£µ«ÊÂʵÉÏ£¬ÎÒÃÇÓëÆ½Ì¨Ö®¼äµÄ¹ØÏµ¸ü¼Ó½ôÃÜ¡£k8sÌṩÁËÒ»×éÍêÕûµÄ·Ö²¼Ê½ÔÓÈçPod¡¢·þÎñ¡¢¿ØÖÆÆ÷µÈ£©£¬ËüÃÇÄܹ»Âú×ãÎÒÃǵÄÐèÇó²¢ÇÒÇý¶¯ÎÒÃǶÔÓ¦ÓóÌÐòµÄÉè¼Æ¡£ÕâЩеÄÔÓïºÍƽ̨ÈÝÁ¿¾ö¶¨ÁËÎÒÃÇÓÃÀ´ÊµÏÖδÀ´ËùÓзþÎñµÄÖ¸µ¼Éè¼ÆÔÔòºÍÉè¼ÆÄ£Ê½¡£·´¹ýÀ´£¬ËüÃÇÒ²»áÓ°ÏìÎÒÃÇÓÃÀ´Ó¦¶ÔÈÕ³£ÌôÕ½µÄ¼¼Êõ£¬ÉõÖÁ»áÓ°Ïìµ½ÎÒÃÇËùνµÄ¡°×î¼Ñʵ¼ù¡±¡£Òò´Ë£¬ÎÒÃǸüÇãÏòÓÚ½«KubernetesÊÓΪһ¸ö»ù±¾µÄ·¶Ê½£¬ËüÔÚ¶à¸öά¶ÈÉ϶¼ÓÐÒâÒ壬¶ø²»½ö½öÊÇÒ»¸öÄܹ»ÓëÖ®½»»¥µÄAPI¡£
KubernetesЧӦ
ÈÝÆ÷ºÍÈÝÆ÷±àÅŹ¤¾ßÌØÐÔÌṩÁËÒ»×éеijéÏóºÍÔÓΪÁË»ñµÃÕâЩÔÓïµÄ×î¼Ñ¼ÛÖµ²¢ºâÁ¿ËüÃǵÄЧ¹û£¬ÎÒÃÇÐèÒªÒ»Ì×еÄÉè¼ÆÔÔòÀ´Ö¸µ¼ÎÒÃǵÄʵ¼ù¡£´øÀ´µÄ½á¹û¾ÍÊÇ£¬Ëæ×ÅÎÒÃǸü¶àµÄʹÓÃÕâЩÐÂÔÓÎÒÃǾÍÄܸüºÃµØ½â¾öÖØ¸´ÐÔµÄÎÊÌ⣬Äܹ»ÖØÐ·¢Ã÷ÂÖ×Ó¡£Õâ¾ÍÊÇÉè¼ÆÄ£Ê½µÄÓÃÎäÖ®µØ¡£Éè¼ÆÄ£Ê½ÎªÎÒÃÇÌṩÁËÈçºÎ¹¹½¨ÐÂÔÓïÒÔ±ã¸ü¿ìµØ½â¾öÎÊÌâµÄ·½·¨¡£ËäÈ»ÔÔò¸ü¼Ó³éÏ󡢸ü¼Ó»ù´¡¡¢±ä»¯Ò²¸üÉÙ£¬µ«ÊÇÉè¼ÆÄ£Ê½¿ÉÄÜ»áÊܵ½ÔÓïÐÐΪ±ä»¯µÄÓ°Ï졣ƽ̨ÉϵÄÒ»¸öÐÂÌØÐÔ¿ÉÄÜ»áʹµÃÒ»¸öÉè¼ÆÄ£Ê½³ÉΪ·´Ä£Ê½»òÕß²»ÄÇôÏà¹Ø¡£³ý´ËÖ®Í⣬»¹ÓÐÎÒÃÇÿÌìʹÓõÄʵ¼ùºÍ¼¼ÊõÒ²ÊÇÈç´Ë¡£ÕâЩ¼¼Êõº¸ÇÁ˴ӷdz£Ï¸Î¢µÄ¼¼Êõ¼¼ÇÉ£¬µ½¸üÓÐЧµØÖ´ÐÐÈÎÎñ£¬ÔÙµ½¸ü¹ã·ºµÄ¹¤×÷·½·¨ºÍʵ¼ù·½·¨¡£µ±ÎÒÃÇ·¢ÏÖÁËÒ»ÖÖÉÔ΢ºÃÓÃÒ»µãµÄ·½·¨Äܹ»¸ü¿ì»òÕ߸ü¼òµ¥µØÍê³ÉÈÎÎñʱ£¬ÎÒÃǾͻá¸Ä½øµ±Ç°µÄ¼¼ÊõºÍʱ¼ä¡£Õâ¾ÍÊÇÎÒÃÇºÍÆ½Ì¨»¥Ïà´Ù½øµÄ·¢Õ¹Ä£Ê½¡£ÎÒÃÇΪʲôҪÕâô×öÄØ£¿ÒòΪ£¬ÎÒÃÇÕâÑù×ö¾ÍÄܹ»ÀûÓÃÕâ¸öÐÂÆ½Ì¨µÄÓÅÊÆºÍ¼ÛÖµÀ´Âú×ãÎÒÃÇ×Ô¼ºµÄÐèÇó¡£´ÓijÖÖÒâÒåÉÏÀ´Ëµ¡£KubernetesЧӦÊÇ×ÔÎÒÇ¿»¯µÄ£¬Ò²ÊÇ¶à·½ÃæµÄ£º

ͼ2 - Èí¼þ¿ª·¢ÉúÃüÖÜÆÚÖеÄKubernetesЧӦ
ÔÚ±¾ÎĵÄÊ£Óಿ·Ö£¬ÎÒÃǽ«Ì½Ñ°µØ¸üÉ²¢ÇÒ½«¶Ôÿ¸öÀà±ðµÄʾÀý½øÐÐÑо¿¡£
·Ö²¼Ê½³éÏóºÍÔÓï
ΪÁËÄܹ»²ûÊÍÎÒËù˵µÄеijéÏóºÍÔÓÎÒ½«°ÑËüÃÇÓë´ó¼ÒÖÚËùÖÜÖªµÄÃæÏò¶ÔÏóÊÀ½çºÍJava½øÐбȽϡ£ÔÚÃæÏò¶ÔÏó±à³Ì£¨OOP£©µÄÊÀ½çÀÎÒÃÇÓÐÈçϵĸÅÄÀà¡¢¶ÔÏó¡¢°ü¡¢¼Ì³Ð¡¢·â×°¡¢¶à̬µÈµÈ¡£JavaÔËÐÐʱ»·¾³ÌṩÁËÒ»Ð©ÌØÐÔ²¢ÇÒËü¶Ô¶ÔÏóµÄÉúÃüÖÜÆÚºÍÕû¸öÓ¦ÓóÌÐò½øÐйÜÀí¡£JavaÓïÑÔºÍJVMÔËÐÐʱ»·¾³ÎªÓ¦ÓóÌÐòµÄ´´½¨ÌṩÁ˱¾µØµÄ¡¢½ø³ÌÄڵĹ¹½¨¿é¡£KubernetesΪÕâÖÖÖÚËùÖÜÖªµÄ˼άģʽÓÖÌí¼ÓÁËÒ»¸öеÄά¶È£¬ËüÌṩÁËÒ»×éеķֲ¼Ê½ÔÓïºÍÔËÐÐʱ»·¾³£¬ÓÃÒÔ´´½¨·Ö²¼ÓÚ¶à¸ö½ø³ÌÖ®¼äºÍ²»Í¬½ÚµãÉϵķֲ¼Ê½ÏµÍ³¡£ÓÐÁËKubernetes£¬ÎҾͲ»ÓÃÒÀÀµÓÚJavaÔÓïÀ´ÊµÏÖÕû¸öÓ¦ÓóÌÐòµÄÐÐΪÁË¡£ÎÒÈÔÈ»ÐèҪʹÓÃÃæÏò¶ÔÏóµÄ¹¹½¨¿éÀ´´´½¨·Ö²¼Ê½Ó¦ÓóÌÐòµÄ×é¼þ£¬µ«ÊÇÎÒÒ²¿ÉÒÔʹÓÃKubernetesÔÓïÀ´ÊµÏÖһЩӦÓóÌÐòµÄÐÐΪ¡£Ò»Ð©Kubernetes·Ö²¼Ê½³éÏóºÍÔÓïµÄÀý×ÓÈçÏ£º
Pod£ºÏà¹ØÈÝÆ÷¼¯ºÏµÄ²¿Êðµ¥Ôª
Service£º·þÎñ·¢Ïֺ͸ºÔؾùºâÔÓï
Job£ºÒì²½µ÷¶È¹¤×÷µÄÔ×Óµ¥Ôª
CronJob£ºÔÚδÀ´½øÐе÷¶È»òÕß¶¨ÆÚ½øÐе÷¶ÈµÄ¹¤×÷Ô×Óµ¥Ôª
ConfigMap£ºÒ»ÖÖ¿ç·þÎñʵÀýµÄ·Ö·¢ÅäÖÃÊý¾ÝµÄ»úÖÆ
Secret£ºÒ»ÖÖ¹ÜÀíÃô¸ÐÅäÖÃÊý¾ÝµÄ»úÖÆ
Deployment£ºÒ»ÖÖÉùÃ÷ʽӦÓóÌÐò·¢²¼»úÖÆ
Namespace£ºÓÃÓÚ¸ôÀë×ÊÔ´³ØµÄ¿ØÖƵ¥Ôª
ÀýÈ磬ÎÒ¿ÉÒÔÒÀÀµÓÚKubernetesµÄ½¡¿µ¼à²â£¨ÈçÔ¤±¸¼ì²â»ò»îÐÔ¼ì²â£©À´»ñÈ¡ÎÒµÄÓ¦ÓóÌÐòµÄһЩ¿É¿¿ÐÔÐÅÏ¢¡£ÎÒ¿ÉÒÔʹÓÃKubernetes
ServiceÀ´½øÐзþÎñ·¢ÏÖ£¬¶ø²»ÊÇÔÚÓ¦ÓóÌÐòÖнøÐпͻ§¶Ë·þÎñµÄ·¢ÏÖ¡£ÎÒÄÜʹÓÃKubernetes
JobsÀ´¶ÔÒì²½Ô×Ó¹¤×÷½øÐе÷¶È¡£ÎÒÒ²ÄÜʹÓÃConfigMapÀ´¶ÔÅäÖýøÐйÜÀí¡£ÎÒ»¹ÄÜʹÓÃKubernetes
CronJob¶ÔÈÎÎñ½øÐÐÖÜÆÚÐÔµ÷¶È£¬ÕâÑù¾Í²»ÓÃʹÓûùÓÚJavaµÄQuartz¿â»òÕßȥʵÏÖExecutorService½Ó¿ÚÁË¡£

ͼ3 - ·Ö²¼Ê½ÏµÍ³Öб¾µØÔÓïºÍ·Ö²¼Ê½ÔÓﲿ·Ö
½ø³ÌÔÓïºÍ·Ö²¼Ê½ÔÓïÓÐ×ÅÏà֮ͬ´¦£¬µ«ÊÇËüÃÇÖ®¼äûÓÐÖ±½ÓµÄ¿É±ÈÐԺͿÉÌæ»»ÐÔ¡£ËüÃÇÔËÐÐÓÚ²»Í¬µÄ³éÏ󼶱𣬾ßÓв»Í¬µÄÏȾöÌõ¼þºÍ±£Ö¤Ìõ¼þ¡£Ò»Ð©ÔÓï¿ÉÒÔÔÚÒ»ÆðʹÓá£ÀýÈ磬ÎÒÃÇÈÔÈ»ÐèҪʹÓÃÀàÀ´´´½¨¶ÔÏó²¢ÇÒ½«Æä·ÅÈëÈÝÆ÷¾µÏñÖС£µ«ÊÇKubernetesÖÐһЩÏñCronJobÕâÑùµÄÔÓï¾ÍÄܶÔJavaÖеÄExecutorServiceÐÐΪ½øÐÐÍêÈ«µÄÌæ´ú¡£Ï±ßÓÐһЩ¸ÅÄîµÄͼ±í£¬ÊÇÎÒÔÚJVMºÍKubernetesÖ®¼äÕÒµ½µÄ¹²Í¬µã£¬µ«ÊDz¢²»ÊǺÜÉîÈë¡£

ͼ4- ±¾µØÔÓïºÍ·Ö²¼Ê½ÔÓï·ÖÀà
ÎÒ֮ǰ·¢²¼¹ý¹ØÓÚ·Ö²¼Ê½³éÏóºÍÔÓïµÄ²©ÎÄ¡£ÕâÀïµÄÒªµãÊÇ£¬×÷ΪһÃû¿ª·¢ÈËÔ±£¬Äã¿ÉÒÔʹÓÃÒ»×é¸ü·á¸»µÄ±¾µØºÍÈ«¾ÖÔÓïÀ´Éè¼ÆºÍʵÏÖ·Ö²¼Ê½½â¾ö·½°¸¡£Ëæ×Åʱ¼äµÄÍÆÒÆ£¬ÕâЩеÄÔÓï²úÉúÁËеĽâ¾öÎÊÌâµÄ·½°¸£¬ÆäÖÐһЩ¸´ÔӵĽâ¾ö·½°¸±ä³ÉÁËÉè¼ÆÄ£Ê½¡£Õâ¾ÍÊÇÎÒÃǽ«½øÒ»²½½øÐÐ̽ÌÖµÄÎÊÌâ¡£
ÈÝÆ÷Éè¼ÆÔÔò
Éè¼ÆÔÔòÊDZàд¸ßÖÊÁ¿Èí¼þµÄ»ù±¾¹æÔòºÍ³éÏó×¼Ôò¡£ÕâЩÔÔòûÓÐÖ¸¶¨¾ßÌåµÄ¹æÔò£¬µ«ÊÇËüÃÇ´ú±íÁËÐí¶à¿ª·¢ÈËÔ±ËùÀí½â²¢ÇÒ¾³£ÒýÓõÄÒ»ÖÖÓïÑÔºÍͨÓõÄÖǻۡ£ºÍRobert
C. MartinËùÒýÈëµÄSOLIDÔÔò£¨¸ÃÔÔòÌṩÁËÈçºÎÄܹ»¸üºÃµØ±àÐ´ÃæÏò¶ÔÏóÈí¼þµÄÖ¸µ¼£©ÀàËÆ£¬Ò²ÓÐһЩÉè¼ÆÔÔòÄܹ»ÓÃÓÚ´´½¨¸üºÃµÄÈÝÆ÷»¯Ó¦ÓóÌÐò¡£SOLIDÔÔòʹÓÃÁËÃæÏò¶ÔÏóµÄÔÓïºÍ¸ÅÄÀýÈ磬Àà¡¢½Ó¿ÚÒÔ¼°¼Ì³ÐµÈµÈ£©À´²ûÊÍÃæÏò¶ÔÏóÉè¼Æ¡£ÀàËÆµØ£¬ÏÂÃæÁгöµÄÕâЩ´´½¨ÈÝÆ÷»¯Ó¦ÓóÌÐòµÄÔÔòʹÓÃÁËÈÝÆ÷¾µÏñÀ´×÷Ϊ»ù´¡ÔÓʹÓÃÈÝÆ÷±àÅŹ¤¾ßƽ̨×÷ΪĿ±êÈÝÆ÷µÄÔËÐÐʱ»·¾³¡£»ùÓÚÈÝÆ÷µÄÓ¦ÓóÌÐòÉè¼ÆÔÔòÈçÏ£º
¹¹½¨Ê±
µ¥Ò»¹Ø×¢ÔÔò£¨Single Concern Principle£©£ºÃ¿Ò»¸öÈÝÆ÷¶¼Ó¦¸Ã½â¾öÒ»¸öÎÊÌ⣬²¢ÇÒ°ÑÕâÒ»¸öÎÊÌâ½â¾öºÃ¡£
×ÔÎÒ¿ØÖÆÔÔò£¨Self-Containment Principle£©£ºÈÝÆ÷Ó¦¸ÃÖ»ÒÀÀµÓÚLinuxÄںˣ¬ÔÚÈÝÆ÷¹¹½¨Ê±²ÅÌí¼ÓÆäËüÍⲿµÄ¿â¡£
¾µÏñ²»±äÐÔÔÔò£¨Image Immutability Principle£©£ºÈÝÆ÷»¯µÄÓ¦ÓóÌÐòÊDz»¿É±äµÄ£¬Ò»µ©¹¹½¨Íê³É£¬ÔÚ²»Í¬µÄ»·¾³ÏÂÒ²ÊDz»»á²úÉú±ä»¯µÄ¡£
ÔËÐÐʱ
¸ß¿É¹Û²âÐÔÔÔò£¨High Observability Principle£©£ºÃ¿¸öÈÝÆ÷¶¼±ØÐëҪʵÏÖËùÓбØÒªµÄAPI£¬ÓÃÓÚ°ïÖúƽ̨ÒÔ×îºÃµÄ·½Ê½¶ÔÓ¦ÓóÌÐò½øÐмà²âºÍ¹ÜÀí¡£
ÉúÃüÖÜÆÚÒ»ÖÂÐÔÔÔò£¨Lifecycle Conformance Principle£©£ºÈÝÆ÷Ó¦¸ÃÓÐÒ»ÖÖ·½·¨À´¶ÁÈ¡À´×ÔÆ½Ì¨µÄʼþ£¬²¢Í¨¹ý¶ÔÕâЩʼþµÄÏìÓ¦À´±£³ÖÒ»Ö¡£
¹ý³ÌÒ»´ÎÐÔÔÔò£¨Process Disposability Principle£©£ºÓ¦ÓóÌÐòÈÝÆ÷»¯µÄ¹ý³ÌÓ¦¸Ã¾¡¿ÉÄܵĶÌÔÝ£¬ËüÃÇÐèҪʱ¿Ì×¼±¸×ű»ÁíÒ»¸öÈÝÆ÷ʵÀýËùÌæ»»¡£
ÔËÐÐʱÏÞÖÆÔÔò£¨Runtime Confinement Principle£©£ºÃ¿¸öÈÝÆ÷¶¼Ó¦¸Ã¶ÔÆä×ÊÔ´ÐèÇó½øÐÐÉùÃ÷£¬²¢ÇÒ±£Ö¤Ó¦ÓóÌÐòÊÜÏÞÖÆÓÚÖ¸¶¨µÄ×ÊÔ´ÐèÇóÒ²ÊǺÜÖØÒªµÄ¡£
×ñÑÕâЩÔÔòÄܹ»°ïÖúÎÒÃÇ´´½¨¸üÊʺÏÓÚKubernetesµÈÔÆÆ½Ì¨µÄÈÝÆ÷»¯Ó¦ÓóÌÐò¡£

ͼ5 - ÈÝÆ÷Éè¼ÆÔÔò
ÕâЩÔÔò¶¼ÒѾ±à×ë³ÉÎÄ£¬¿ÉÒÔµã»÷ÕâÀïÃâ·ÑÏÂÔØÕâ·Ý°×ƤÊé¡£ÉÏÊöͼƬ¾ÍÊÇÕâЩÔÔòµÄÔ¤ÀÀ¡£
ÈÝÆ÷Éè¼ÆÄ£Ê½
еÄÔÓïÐèҪеÄÔÔòÀ´½âÊÍÔÓïÖ®¼äµÄ×÷Óá£ÎÒÃÇʹÓõÄÔÓïÔ½¶à£¬¾ÍÄܽâ¾ö¸ü¸´ÔÓµÄÎÊÌ⣬Õâ¾ÍʹµÃÎÒÃÇÒâʶµ½¿ÉÖØÓõĽâ¾ö·½°¸£¬¼´Éè¼ÆÄ£Ê½¡£ÈÝÆ÷Éè¼ÆÄ£Ê½µÄÖØµãÊÇÓÃÄܹ»½â¾öµ±Ç°ÃæÁÙÌôÕ½µÄ×î¼Ñ·½Ê½À´¹¹½¨ÈÝÆ÷ºÍÆäËü·Ö²¼Ê½ÔÓï¡£ÒÔϼò¶ÌµÄÁбíÊÇÓëÈÝÆ÷Ïà¹ØµÄÉè¼ÆÄ£Ê½£º
¿ç¶·Ä£Ê½£¨Sidecar Pattern£©£º¿ç¶·Ä£Ê½µÄÈÝÆ÷Äܹ»ÍØÕ¹ºÍÔöÇ¿ÏÈǰ´æÔÚµÄÈÝÆ÷µÄ¹¦Äܶø²»¶ÔÆä½øÐиı䡣
´óʹģʽ£¨Ambassador Pattern£©£ºÕâÖÖģʽÄܹ»Òþ²Ø¸´ÔÓÐÔ£¬²¢ÎªÈÝÆ÷Ìṩһ¸öͳһµÄÍⲿ½Ó¿Ú¡£
ÊÊÅäÆ÷ģʽ£¨Adapter Pattern£©£ºÊÊÅäÆ÷ģʽÊÇ´óʹģʽµÄ·´Ä£Ê½£¬ËüΪÀ´×ÔÍⲿÊÀ½çµÄpodÌṩÁËÒ»¸öͳһµÄ½Ó¿Ú¡£
³õʼ»¯Æ÷ģʽ£¨Initializer Pattern£©£º³õʼ»¯Æ÷ģʽµÄÈÝÆ÷Äܹ»½«³õʼ»¯Ïà¹ØµÄÈÎÎñÓëÖ÷Ó¦ÓóÌÐòÂß¼Ïà·ÖÀë¡£
¹¤×÷¶ÓÁÐģʽ£¨Work Queue Pattern£©£º²ÉÓù¤×÷¶ÓÁÐģʽµÄÈÝÆ÷Äܹ»½«ÈÎÒâ´¦Àí´úÂë´ò°ü³ÉÈÝÆ÷»òÊý¾Ý£¬²¢ÇÒ¹¹½¨³ÉÒ»¸öÍêÕûµÄ¹¤×÷¶ÓÁÐϵͳ¡£
×Ô¶¨Òå¿ØÖÆÆ÷ģʽ£¨Custom Controller Pattern£©£ºÍ¨¹ýÕâÖÖģʽ£¬¿ØÖÆÆ÷¾ÍÄܹ۲ì¶ÔÏóµÄ±ä»¯£¬²¢¶ÔÕâЩ±ä»¯²ÉÈ¡»î¶¯£¬´Ó¶ø½«¼¯ÈºÇý¶¯ÖÁËùÐèµÄ״̬¡£ÕâÖÖµ÷½âģʽ¿ÉÓÃÓÚʵÏÖ×Ô¶¨ÒåÂß¼²¢ÍØÕ¹Æ½Ì¨µÄ¹¦ÄÜ¡£
×Ô¸Ð֪ģʽ£¨Self Awareness Pattern£©£ºÕâÖÖģʽÃèÊöÁËÓ¦ÓóÌÐòÐèÒª½øÐÐ×ÔÉíÉó²é²¢ÇÒ»ñµÃ¹ØÓÚ×ÔÉíºÍÔËÐл·¾³ÔªÊý¾ÝµÄÇé¿ö¡£
ÕâÒ»ÁìÓòµÄ»ù´¡¹¤×÷ÊÇÓÉBrendan BurnsºÍOppenheimerÔÚËûÃǵÄÈÝÆ÷Éè¼ÆÄ£Ê½µÄÂÛÎÄÖÐÍê³ÉµÄ¡£Ö®ºó£¬Brendan³ö°æÁËÒ»±¾¹ØÓÚ·Ö²¼Ê½ÏµÍ³Éè¼ÆÄ£Ê½Ïà¹ØÖ÷ÌâµÄÊé¡£Roland
Hu?ºÍÎÒҲдÁËÒ»±¾Êé½Ð×ö¡¶Kubernetes Patterns¡·£¬ÀïÃæº¸ÇÁËËùÓÐÕâЩÉè¼ÆÄ£Ê½ºÍ»ùÓÚÈÝÆ÷µÄÓ¦ÓóÌÐòµÄʹÓÃÓÃÀý¡£ÏÂͼÊÇÆäÖÐһЩģʽµÄ¿ÉÊÓ»¯¡£

ͼ6 - ÈÝÆ÷Éè¼ÆÄ£Ê½
ÔÓïÐèÒªÔÔòºÍ¾«ÐÄÉè¼ÆµÄģʽ¡£½ÓÏÂÀ´ÈÃÎÒÃÇ¿´¿´Ê¹ÓÃKubernetesµÄ×î¼Ñʵ¼ùºÍһЩºÃ´¦¡£
ʵ¼ùºÍ¼¼ÇÉ
³ýÁËÔÔòºÍģʽ֮Í⣬´´½¨Á¼ºÃµÄÈÝÆ÷»¯Ó¦ÓóÌÐò»¹ÐèÒªÊìϤÆäËûÓëÈÝÆ÷Ïà¹ØµÄ×î¼Ñʵ¼ùºÍ¼¼ÇÉ¡£ÔÔòºÍģʽÊdzéÏóµÄ¡¢»ù´¡µÄ¹Ûµã£¬ËüÃǵı仯ºÜÉÙ¡£×î¼Ñʵ¼ùºÍÏà¹ØµÄ¼¼ÇÉÔò¸ü¼Ó¾ßÌ壬¿ÉÄÜ»áÆµ·±µØ·¢Éú±ä»¯¡£ÒÔÏÂÊÇһЩ³£¼ûµÄÓëÈÝÆ÷Ïà¹ØµÄ×î¼Ñʵ¼ù£º
רעÓÚС¾µÏñ£ºÕâÄܼõСÈÝÆ÷µÄ´óС¡¢¹¹½¨Ê±¼äºÍ¸´ÖÆÈÝÆ÷¾µÏñʱµÄÍøÂçʱ¼ä¡£
Ö§³ÖÈÎÒâÓû§id£º±ÜÃâʹÓÃsudoÃüÁî»òÐèÒªÒ»¸öÌØ¶¨µÄuseridÀ´ÔËÐÐÄúµÄÈÝÆ÷¡£
±ê¼ÇÖØÒª¶Ë¿Ú£ºÊ¹ÓÃEXPOSEÃüÁîÖ¸¶¨¶Ë¿Ú£¬ÕâÄÜʹµÃÆäËûÈ˺ÍÈí¼þÄܹ»¸ü¼òµ¥µØÊ¹ÓÃÄãµÄ¾µÏñ¡£
Ϊ³Ö¾ÃÊý¾ÝʹÓÃ¾í£¨Volume£©£ºÔÚÈÝÆ÷±»Ïú»Ùºó£¬ÐèÒª±»±£´æµÄÊý¾Ý±ØÐ뱻дÈëµ½¾íÖС£
ÉèÖÃÓ³ÏñÔªÊý¾Ý£º¾µÏñÔªÊý¾ÝÒÔ±ê¼Ç¡¢±êÇ©ºÍ×¢Ê͵ÄÐÎʽ³öÏÖ£¬ÕâÄÜʹÄúÄܹ»ÄÜÈÝÒ×·¢ÏÖ×Ô¼ºµÄÈÝÆ÷¾µÏñ¡£
ͬ²½Ö÷»úºÍ¾µÏñ£ºÒ»Ð©ÈÝÆ÷»¯µÄÓ¦ÓóÌÐòÒªÇóÈÝÆ÷ÔÚijЩÊôÐÔÉÏÓëÖ÷»ú½øÐÐͬ²½£¬ÀýÈçʱ¼äºÍ»úÆ÷ID¡£
STDOUTºÍSTDERRÈÕÖ¾£º½«ÈÕÖ¾¼Ç¼µ½ÕâЩϵͳÁ÷Öжø²»ÊÇÎļþÀïÄܹ»È·±£ÈÕÖ¾±»ÕýÈ·µØÊÕ¼¯ºÍ¾ÛºÏ¡£
ÒÔϵÄÕâЩÁ´½ÓÊÇÈÝÆ÷Ïà¹Ø×î¼Ñʵ¼ùµÄһЩ×ÊÔ´£º
±àдDockerfilesµÄ×î¼Ñʵ¼ù
1.OpenShiftÖ¸µ¼ÔÔò
2.Kubernetes²úƷģʽ
3.KubernetesʾÀý
4.KubernetesÓÅÊÆ
ÕýÈçÄú´Ó±¾ÎÄÖÐËù¿´µ½µÄ£¬KubernetesÒÔÒ»ÖÖ»ù±¾µÄ·½Ê½À´Ö¸µ¼·Ö²¼Ê½ÏµÍ³µÄÉè¼Æ¡¢¿ª·¢ºÍ²Ù×÷¡£KubernetesµÄѧϰ·Ïß²¢²»¶Ì£¬¿çÔ½Kubernetes¼¼Êõºè¹µÐèҪʱ¼äºÍÄÍÐÄ¡£Õâ¾ÍÊÇΪʲôÎÒÏëÔÚÕâÀïºÍ¶ÁÕß̸̸Kubernetes¸ø¿ª·¢Õß´øÀ´µÄһϵÁкô¦¡£ÎÒÏ£ÍûÕ⽫ÓÐÖúÓÚÖ¤Ã÷ΪʲôѧϰKubernetesÊÇÖµµÃµÄ£¬²¢ÇÒΪʲôҪʹÓÃËüÀ´Ö¸µ¼ÄãµÄITÕ½ÂÔ¡£
×Ô·þÎñ»·¾³£ºËüʹµÃÍŶӺÍÍŶӳÉÔ±Äܹ»Á¢¼´´Ó¼¯ÈºÖзÖÀë³ö¸ôÀëµÄ»·¾³£¬ÒÔ±ã½øÐÐCICDºÍÓÃÓÚʵÑéÄ¿µÄ¡£
¶¯Ì¬·ÅÖÃÓ¦ÓóÌÐò£ºËüÔÊÐí»ùÓÚÓ¦ÓóÌÐòÐèÇ󡢿ÉÓÃ×ÊÔ´ºÍÖ¸µ¼²ßÂÔ£¬½«Ó¦ÓóÌÐòÒÔ¿ÉÔ¤²âµÄ·½Ê½·ÅÖõ½¼¯ÈºÖС£
ÉùÃ÷ʽ·þÎñ²¿Êð£ºÕâ¸ö³éÏó·â×°ÁËÒ»×éÈÝÆ÷µÄÉý¼¶ºÍ»Ø¹ö¹ý³Ì£¬²¢Äܹ»½«ÆäÖ´ÐÐΪ¿ÉÖØ¸´ºÍ¿É×Ô¶¯»¯µÄ»î¶¯¡£

ͼ7 - Kubernetes²¿ÊðºÍ·¢²¼Ê¾Àý
Ó¦ÓóÌÐòµ¯ÐÔ£ºÈÝÆ÷ºÍ¹ÜÀíÆ½Ì¨¿ÉÒÔͨ¹ý¶àÖÖ·½Ê½Ìá¸ßÓ¦ÓóÌÐòµÄµ¯ÐÔ£¬ÀýÈ磺
ÎÞÏÞÑ»·£ºCPU¹²ÏíºÍÅä¶î
ÄÚ´æÐ¹Â¶£º×Ô¼ºÄÚ´æ²»×ã
´ÅÅÌÕ¼ÓãºÅä¶î
ForkÕ¨µ¯£º½ø³ÌÏÞÖÆ
¶Ï·Æ÷¡¢³¬Ê±¡¢ÒÔ¿ç¶·Ä£Ê½ÖØÆô
ÒԿ綷ģʽ½øÐйÊÕÏ×ªÒÆºÍ·þÎñ·¢ÏÖ
ʹÓÃÈÝÆ÷½øÐÐÏ̸߳ôÀë
ͨ¹ýµ÷¶ÈÆ÷½øÐÐÓ²¼þ¸ôÀë
ÈÝÁ¿×Ô¶¯ÉìËõºÍ×ÔÎÒ»Ö¸´
·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâºÍ¶Ï·Æ÷£ºÆ½Ì¨ÔÊÐí·þÎñÔÚ²»Ê¹ÓÃÓ¦ÓóÌÐò´úÀíµÄÇé¿öÏ·¢ÏÖºÍʹÓÃÆäËû·þÎñ¡£´ËÍ⣬¿ç¶·Ä£Ê½µÄÈÝÆ÷ºÍIstio¿ò¼ÜµÈ¹¤¾ßµÄʹÓ㬿ÉÒÔÍêÈ«½«Ó¦ÓóÌÐòÖ®ÍâµÄÏà¹ØÍøÂçÖ°Ôð×ªÒÆµ½Æ½Ì¨¼¶±ðÖ®Íâ¡£
ÉùÃ÷ÐÔÓ¦ÓóÌÐòÍØÆË£ºÊ¹ÓÃKubernetes API¶ÔÏóÔÊÐíÎÒÃǶÔÈçºÎ²¿ÊðÎÒÃǵķþÎñ½øÐÐÃèÊöÒÔ¼°ËµÃ÷ËüÃÇ¶ÔÆäËû·þÎñºÍ×ÊÔ´µÄÒÀÀµ¡£½«ËùÓÐÕâЩÐÅÏ¢ÒÔ¿ÉÖ´ÐеĸñʽÌṩ¸øÎÒÃÇ£¬Ê¹ÎÒÃÇÄܹ»ÔÚ¿ª·¢µÄÔçÆÚ½×¶Î¶ÔÓ¦ÓóÌÐòµÄ²¿Êð½øÐвâÊÔ£¬²¢½«Æä×÷Ϊ¿É±à³ÌµÄÓ¦ÓóÌÐò»ù´¡¼Ü¹¹¡£

ͼ8 - ÉùÃ÷ÐÔÓ¦ÓóÌÐòÍØÆË¶ÔKubernetes×ÊÔ´ÃèÊö·ûÎļþµÄʹÓÃ
¹ØÓÚKubernetes£¬»¹Óиü¶àÎÒÃÇΪ֮¸Ðµ½Ð˷ܵÄÀíÓÉ¡£ÎÒÉϱßÁгöµÄÊÇÎҸоõºÜÓÐÓõĶ«Î÷£¬ÒòΪËüÃÇÀ´Ô´ÓÚÓпª·¢±³¾°µÄÈËÃÇ¡£ |