| ±à¼ÍƼö: |
| ±¾ÎÄÀ´×ÔÓÚ°Ù¶È£¬½éÉÜÁËKubernetes
¼Ü¹¹£¬Ó¦ÓóÌÐò²¿ÊðÄ£ÐÍ£¬·þÎñ·¢ÏÖÓë¸ºÔØ¾ùºâ£¬Service ÈçºÎÔÚÄÚ²¿¹¤×÷£¬Persistent
Volumes µÄʹÓõȡ£ |
|
Kubernetes ÒѳÉΪÔÚ˽ÓÐÔÆ¡¢¹«ÓÐÔÆºÍ»ìºÏÔÆ»·¾³Öдó¹æÄ£²¿ÊðÈÝÆ÷»¯Ó¦ÓõÄÊÂʵ±ê×¼¡£AWS¡¢Google
Cloud¡¢Azure¡¢IBM Cloud ºÍ Oracle Cloud µÈ¼¸¸ö×î´óµÄ¹«ÓÐÔÆÆ½Ì¨¶¼¿ÉÒÔΪ
Kubernetes ÌṩÍйܷþÎñ¡£
¼¸Äêǰ£¬Red Hat Óà Kubernetes ÍêÈ«Ìæ´úÁË×Ô¼ºµÄ OpenShift ʵʩ·½°¸£¬²¢Óë
Kubernetes ÉçÇøºÏ×÷ÍÆ³öÁËÏÂÒ»´úÈÝÆ÷ƽ̨¡£Mesosphere ÔÚ Kubernetes
Á÷ÐÐÆðÀ´ºóѸËÙ½« Kubernetes µÄ¹Ø¼üÌØÐÔ£¬ÈçÈÝÆ÷·Ö×飬֨µþÍøÂ磬4 ²ã·ÓÉ£¬Secrets
µÈ¼¯³Éµ½ËüÃǵÄÈÝÆ÷ƽ̨ DC / OS ÖС£DC / OS »¹½« Kubernetes Óë Marathon
ÕûºÏΪһ¸öÈÝÆ÷±àÅÅϵͳ¡£Pivotal ×î½üÍÆ³öÁË»ùÓÚ Kubernetes µÄ Pivotal Container
Service£¨PKS£©£¬ÓÃÓÚÔÚ Pivotal Cloud Foundry Éϲ¿ÊðµÚÈý·½·þÎñ¡¡Ê±ÖÁ½ñÈÕ£¬ÈÔÈ»ÓÐÐí¶à×éÖ¯ºÍ¼¼ÊõÌṩÉÌÕýÔÚ¸úËæ
Kubernetes ·¢Õ¹µÄ½Å²½¶Ô²úÆ·½øÐÐÏàÓ¦µ÷Õû¡£
2014 Ä꣬Kubernetes ×ßÈëÈËÃǵÄÊÓÒ° ¡£ËüÕûºÏÁ˹ȸèÄÚ²¿ÈÝÆ÷¼¯Èº¹ÜÀíϵͳ Borg
ºÍ Omega ÓÅÊÆ£¬¼³È¡Á˹ȸè´ó¹æÄ£Ó¦ÓÃÈÝÆ÷¼¼ÊõÊ®¼¸Äê¾Ñé ¡£ÔÚÎÒ¿´À´£¬ Kubernetes ÈÃÈËÃǶÔÓÚÖîÈç΢·þÎñ£¬serverless
¹¦ÄÜ£¬Service Mesh ºÍ Event-driven Ó¦ÓóÌÐòµÈÐÂÐËÈí¼þ¼Ü¹¹Ä£Ê½µÄÊÊÓ¦±äµÃÈÝÒ×£¬²¢Îª¹¹½¨Õû¸öÔÆÔÉúÉú̬ÆÌƽÁ˵À·¡£×îÖØÒªµÄÊÇ£¬Æä
cloud agnostic Éè¼ÆÈÃÈÝÆ÷»¯Ó¦ÓóÌÐòÎÞÐè¶ÔÓ¦ÓóÌÐò´úÂë½øÐÐÈκθü¸Ä£¬¾Í¿ÉÒÔÔÚÈÎºÎÆ½Ì¨ÉÏÔËÐС£µ±Ç°
Kubernetes Ö÷ÒªÓÃÔÚ´óÐÍÆóÒµ²¿Ê𳡾°Ï£¬µ«´Ó³¤Ô¶À´¿´£¬ÖÐСÐÍÆóÒµÒ²¿ÉÒÔÓ¦Óà Kubernetes
½ÚÊ¡´óÁ¿µÄ»ù´¡ÉèÊ©ºÍά»¤³É±¾¡£
½ÓÏÂÀ´£¬ÎÒ½«ÔÚÎÄÖнéÉÜ Kubernetes µÄ¸ß¼¶¼Ü¹¹£¬Ó¦ÓóÌÐò²¿ÊðÄ£ÐÍ£¬·þÎñ·¢Ïֺ͸ºÔؾùºâ£¬ÄÚ²¿/Íⲿ·ÓÉ·ÖÀë¡¢persistent
volume µÄʹÓ㬲¿Êð½ÚµãÊØ»¤³ÌÐò£¬²¿ÊðÓÐ״̬·Ö²¼Ê½ÏµÍ³£¬×÷Òµºǫ́ÔËÐУ¬²¿ÊðÊý¾Ý¿â£¬ÅäÖùÜÀí£¬Æ¾Ö¤¹ÜÀí£¬¹ö¶¯¸üУ¬×Ô¶¯Ëõ·ÅºÍ°ü¹ÜÀí¡£
Kubernetes ¼Ü¹¹

Õâ¸ö¼¯Èº¹ÜÀíÆ÷µÄ»ù±¾Éè¼Æ²ßÂÔÖ®Ò»¾ÍÊÇ£¬ÎÞÐè¸ü¸ÄÓ¦ÓóÌÐò´úÂ룬¾ÍÄܲ¿ÊðÔÚÐéÄâ»úÉÏÔËÐеÄÏÖÓÐÓ¦ÓóÌÐò¡£ÁíÍ⣬ÈκÎÔËÐÐÔÚÐéÄâ»úÉϵÄÓ¦ÓóÌÐò¶¼¿ÉÒÔͨ¹ýÈÝÆ÷»¯×é¼þÔÚ
Kubernetes ÉÏʵÏÖ²¿Êð¡£ÕâÊÇͨ¹ýÈÝÆ÷·Ö×é¡¢ÈÝÆ÷±àÅÅ¡¢¸²¸ÇÍøÂç¡¢»ùÓÚµÚ 4 ²ãÐéÄâ IP¡¢·þÎñ·¢ÏÖ¡¢Ö§³ÖÊØ»¤³ÌÐòÔËÐС¢²¿ÊðÓÐ״̬ӦÓóÌÐò×é¼þ¡¢ÒÔ¼°À©Õ¹ÈÝÆ÷±àÅÅϵͳÕâЩºËÐŦÄÜʵÏֵġ£
ÁíÍ⣬Kubernetes ¿ÉÒÔÌṩһ×é¿É¶¯Ì¬À©Õ¹µÄÖ÷»ú£¬¿ÉÒÔÓ¦ÓÃÈÝÆ÷ÔËÐÐ workload£¬²¢Ê¹ÓÃÒ»×é³ÆÎª
master µÄ¹ÜÀíÖ÷»úÀ´Ìṩ¹ÜÀíÕû¸öÈÝÆ÷»ù´¡¼Ü¹¹µÄ API¡£ÕâЩ workload °üÀ¨³¤ÆÚÔËÐзþÎñ
£¬Åú´¦Àí×÷ÒµºÍÈÝÆ÷Ö÷»úµÄÊØ»¤³ÌÐò¡£ÎªÁËÌṩÈÝÆ÷µ½ÈÝÆ÷µÄ·ÓÉ£¬ËùÓÐÈÝÆ÷Ö÷»ú¶¼Óø²¸ÇÍøÂçÁ¬½ÓÔÚÒ»Æð¡£²¿ÊðÔÚ
Kubernetes ÉϵÄÓ¦ÓóÌÐòÔÚ¼¯ÈºÍøÂçÖÐÊǶ¯Ì¬¿É¼ûµÄ£¬²¢¿Éͨ¹ý´«Í³¸ºÔؾùºâÆ÷ÏòÍâ²¿ÍøÂ籩¶¡£¼¯Èº¹ÜÀíÆ÷µÄ״̬´æ´¢ÔÚÒ»¸ö¸ß¶È·Ö²¼µÄ
key/value ´æ´¢£¨etcd£©ÖУ¬¸Ã´æ´¢ÔÚ master ÉÏÔËÐС£
Kubernetes µ÷¶È³ÌÐò¿ÉÒÔÈ·±£Ã¿¸öÓ¦ÓóÌÐò×é¼þ¶¼ÒѽøÐн¡¿µ¼ì²é£¬¿ÉÌṩ¸ß¿ÉÓᣵ±¸±±¾µÄÊýÁ¿ÉèÖôóÓÚ
1 ʱ£¬¶à¸öÖ÷»úÖеÄʵÀý¶¼»á±»µ÷¶È¡£Èç¹ûÆäÖÐÒ»¸öÖ÷»ú²»¿ÉÓã¬ÄÇôÔËÐÐÔÚ¸ÃÖ÷»úÉϵÄËùÓÐÈÝÆ÷£¬¶¼¿ÉÄܱ»ÈÎÒ»Ö÷»úµ÷¶È¡£
Kubernetes µÄÃÔÈ˹¦ÄÜÖ®Ò»¾ÍÊÇÌṩÁ½¼¶×Ô¶¯Ëõ·Å¡£Ê×ÏÈ£¬¿ÉÒÔʹÓÃÒ»¸öÃûΪ Horizontal
Pod Autoscaler µÄ×ÊÔ´À´×Ô¶¯µ÷ÕûÈÝÆ÷£¬Ëü¿ÉÒÔ¼àÊÓ×ÊÔ´ÏûºÄ²¢¶ÔËùÐèÈÝÆ÷ÊýÁ¿½øÐÐÏàÓ¦µØµ÷Õû¡£Æä´Î£¬Ëü¿ÉÒÔͨ¹ýÌí¼ÓºÍɾ³ýÖ÷»úµÄ·½Ê½£¬¸ù¾Ý×ÊÔ´ÐèÇóÀ©Õ¹ÈÝÆ÷¼¯Èº¡£´ËÍ⣬ͨ¹ýÒýÈ뼯ȺÁªºÏ¹¦ÄÜ£¬Horizontal
Pod Autoscaler ÉõÖÁ¿ÉÒÔʹÓõ¥¸ö API ¶Ëµã¿ç¶à¸öÊý¾ÝÖÐÐĹÜÀí Kubernetes
¼¯Èº¡£
ÕâÖ»ÊÇ Kubernetes ¡°¿ªÏä¼´Óá±Öڶ๦Äܵıùɽһ½Ç¡£½ÓÏÂÀ´£¬ÎÒ½«½éÉÜ Kubernetes
µÄºËÐŦÄÜ£¬²¢Ïê½âÓ¦¸ÃÈçºÎÉè¼Æ²¢²¿ÊðÄãµÄÈí¼þÓ¦ÓóÌÐò¡£
Ó¦ÓóÌÐò²¿ÊðÄ£ÐÍ

ÉÏͼÊÇ Kubernetes Éϸ߼¶Ó¦ÓóÌÐò²¿ÊðÄ£ÐÍ¡£ËüʹÓà ReplicaSet À´±àÅÅÈÝÆ÷¡£ÎÒÃÇ¿ÉÒÔ½«
ReplicaSet ÊÓΪ»ùÓÚ YAML »ò»ùÓÚ JSON µÄÔªÊý¾ÝÎļþ£¬¸ÃÎļþ¿ÉÒÔ¶¨ÒåÈÝÆ÷¾µÏñ¡¢¶Ë¿Ú¡¢¸±±¾ÊýÁ¿¡¢¼¤»î×´¿ö¼ì²é¡¢»î¶¯×´¿ö¼ì²é¡¢»·¾³±äÁ¿¡¢Êý¾Ý¹ÒÔØºÍ´´½¨²¢¹ÜÀíÈÝÆ÷ÐèÒªµÄ°²È«¹æÔò¡£
ÈÝÆ÷ÔÚ Kubernetes ÉÏÒÔ×éµÄÐÎʽ´´½¨£¬±»³ÆÎª Pod£¬ËüÊÇ Kubernetes µÄÒ»¸öÔªÊý¾Ý¶¨Òå»ò×ÊÔ´¡£Ã¿¸ö
Pod ¶¼¿ÉÒÔͨ¹ý Linux namespace£¬cgroup ºÍÆäËûÄں˹¦ÄÜÔÚÈÝÆ÷Ö®¼ä¹²ÏíÎļþϵͳ¡¢ÍøÂç½Ó¿ÚÒÔ¼°²Ù×÷ϵͳÓû§¡£¶ø
ReplicaSets ¿ÉÒÔÓÉÒ»¸ö½Ð×ö Deployment µÄ¸ß¼¶×ÊÔ´½øÐйÜÀí£¬Deployment
ÌṩÓÃÓÚ¹ö¶¯¸üкʹ¦ÀíÆä»Ø¹öµÄ¹¦ÄÜ¡£
ͨ¹ýÖ´ÐÐÏÂÃæÕâÑùÒ»Ìõ¼òµ¥µÄ CLI ÃüÁ¾Í¿ÉÒÔÔÚ Kubernetes Éϲ¿ÊðÈÝÆ÷»¯µÄÓ¦ÓóÌÐòÁË¡£

Ò»µ©Ö´ÐÐÉÏÊö CLI ÃüÁ¸ø¶¨ÈÝÆ÷¾µÏñ½«´´½¨Ò»¸ö²¿Êð¶¨Ò壬һ¸ö¸±±¾¼¯ºÍÒ»¸ö pod; ÁíÍâʹÓÃÓ¦ÓóÌÐòÃû³Æ½«Ìí¼ÓÒ»¸ö
selector label¡£ÓÉ´Ë´´½¨µÄÿ¸ö pod ½«ÓÐÁ½¸öÈÝÆ÷£¬Ò»¸öÓÃÓÚ¸ø¶¨µÄÓ¦ÓóÌÐò×é¼þ£¬ÁíÒ»¸ö½Ð×ö
Pause ÓÃÓÚÁ¬½ÓÍøÂç½Ó¿Ú¡£
·þÎñ·¢ÏÖÓë¸ºÔØ¾ùºâ

Kubernetes µÄÖ÷Òª¹¦ÄÜÖ®Ò»£¬ÊÇʹÓà SkyDNS ºÍ 4 ²ãÐéÄâ IP ·ÓÉϵͳ£¬Ìṩ·þÎñ·¢ÏÖºÍÄÚ²¿Â·ÓÉÄ£ÐÍ¡£ÕâЩ¹¦ÄÜΪҪÇóʹÓÃ
service µÄÓ¦ÓóÌÐòÌṩÁËÄÚ²¿Â·ÓÉ¡£Í¨¹ý¸±±¾¼¯´´½¨µÄÒ»×é Pod ¿ÉÒÔʹÓü¯ÈºÍøÂçÄÚµÄ service
½øÐиºÔؾùºâ¡£service ÓÃÑ¡ÔñÆ÷±êÇ©£¨selector labels£©Á¬½Óµ½ Pod¡£Ã¿¸ö service
»á·Öµ½Ò»¸öΨһµÄ IP µØÖ·£¬ºÍÒ»¸öÓÉÆäÃû³ÆÅÉÉúµÄÖ÷»úÃû£¬²¢ÒÔÑ»·µÄ·½Ê½ÔÚ Pod ÖзÓÉÇëÇ󡣸Ã
service ÉõÖÁ»¹ÄÜΪÐèÒª»á»°¹ØÁªµÄÓ¦ÓóÌÐòÌṩ»ùÓÚ IP µÄ·ÓÉ»úÖÆ¡£Ò»¸ö service ¿ÉÒÔ¶¨ÒåÒ»¸ö¶Ë¿Ú¼¯ºÏ£¬Îª¸ø¶¨
service ¶¨ÒåµÄÊôÐÔ½«ÒÔÏàͬµÄ·½Ê½Ó¦ÓÃÓÚËùÓж˿ڡ£Òò´Ë£¬ÔÚÒ»¸ö³¡¾°ÖУ¬Ö»ÐèÒªÒ»¸ö¸ø¶¨¶Ë¿ÚµÄ»á»°¹ØÁª£¬Ôڸö˿ÚÖÐËùÓÐÆäËû¶Ë¿Ú¶¼ÐèҪʹÓûùÓÚÂÖѯµÄ·ÓÉ£¬Õâ¿ÉÄÜÒªÓõ½¶à¸ö
service¡£
Service ÈçºÎÔÚÄÚ²¿¹¤×÷£¿

Kubernetes service ʹÓÃÒ»¸öÃûΪ kube-proxy µÄ×é¼þÀ´ÊµÏÖ¡£Ã¿¸ö½ÚµãÖж¼ÓÐÒ»¸ö
kube-proxy ʵÀý¡£Kube-proxy ÓÐÈýÖÖ´úÀíģʽ£ºUserspace£¬iptables
ºÍ IPVS¡£µ±Ç°µÄĬÈÏģʽÊÇ iptables¡£
ÔÚµÚÒ»ÖÖ´úÀíģʽÏ£¬userspace£¬kube-proxy ±¾Éí³äµ±´úÀí·þÎñÆ÷£¬ÓÉ iptables
¹æÔò½ÓÊܵÄÇëÇóίÍиøºó¶Ë Pod¡£ÔÚÕâÖÖģʽÏ£¬kube-proxy ½«ÔÚ userspace ÖÐÔËÐУ¬²¢Ôö¼ÓÒ»¸öÌø×ªµ½ÐÅÏ¢Á÷¡£ÔÚ
iptables ÖУ¬kube-proxy ´´½¨Ò»×é iptables ¹æÔò£¬ÓÃÓÚ½«À´×Ô¿Í»§¶ËµÄ´«ÈëÇëÇóÖ±½Óת·¢µ½ÍøÂç²ãÉϵĺó¶Ë
Pod ¶Ë¿Ú£¬¶øÎÞÐèÔÚÖмäÌí¼Ó¶îÍâµÄÌø×ª¡£Õâ¸ö´úÀíģʽ±ÈµÚÒ»ÖÖģʽ¿ìµÃ¶à£¬ÒòΪËüÎÞÐèÔÚÖмäÌí¼Ó¶îÍâ´úÀí·þÎñÆ÷£¬Ö±½ÓÔÚ
kernel space ÖÐÔËÐС£
Kubernetes v1.8 °æ±¾Ôö¼ÓÁ˵ÚÈýÖÖ´úÀíģʽ£¬ÓëµÚ¶þÖÖ´úÀíģʽ·Ç³£ÏàËÆ£¬Ëü²»Óà iptables
¹æÔò¶øÊÇʹÓûùÓÚ IPVS µÄÐéÄâ·þÎñÆ÷À´Â·ÓÉÇëÇó¡£IPVS ÊÇÒ»ÖÖ´«Êä²ã¸ºÔؾùºâ¹¦ÄÜ£¬¿ÉÔÚ»ùÓÚ Netfilter
µÄ Linux kernel ÖÐÔËÐУ¬²¢Ìṩһ×é¸ºÔØ¾ùºâËã·¨¡£Í¨¹ý iptables ʹÓà IPVS
ÊÇÒòΪʹÓà iptables ¿ÉÒÔͬ²½´úÀí¹æÔòµÄÐÔÄÜ¿ªÏú¡£µ±´´½¨Êýǧ¸ö·þÎñʱ£¬Óë IPVS µÄ¼¸ºÁÃëÏà±È£¬¸üÐÂ
iptables ¹æÔòÐèÒªÏ൱³¤µÄʱ¼ä¡£´ËÍ⣬IPVS ʹÓà hash table À´²éÕÒͨ¹ý iptables
½øÐÐ˳ÐòɨÃèµÄ´úÀí¹æÔò¡£
ÄÚ/Íâ·ÓÉ·ÖÀë

Kubernetes service ¿ÉÒÔͨ¹ýÁ½ÖÖÖ÷Òª·½Ê½±©Â¶ÓÚÍâ²¿ÍøÂç¡£µÚÒ»ÖÖ·½·¨ÊÇͨ¹ý±©Â¶½ÚµãÉϵĶ¯Ì¬¶Ë¿ÚÀ´Ê¹Óýڵã¶Ë¿Ú£¬½«Á÷Á¿×ª·¢µ½·þÎñ¶Ë¿Ú¡£µÚ¶þÖÖ·½·¨ÊÇͨ¹ýʹÓÃ
ingress controller ÅäÖøºÔؾùºâÆ÷£¬ ingress controller ¿ÉÒÔͨ¹ýÁ¬½Óµ½ÏàͬµÄ¸²¸ÇÍøÂ罫ÇëÇóίÍиø
service¡£ Ingress controller ÊÇÒ»¸öºǫ́½ø³Ì£¬Ëü¿ÉÒÔÔËÐÐÔÚ¼àÌý Kubernetes
API µÄÈÝÆ÷ÖУ¬¸ù¾Ý¸ø¶¨µÄÒ»×é ingress ¶¯Ì¬µØÅäÖò¢ÖØÐ¼ÓÔØ¸ø¶¨µÄ¸ºÔؾùºâÆ÷¡£Ingress
»ùÓÚʹÓ÷þÎñµÄ hostname ºÍ context paths À´¶¨Òå·ÓɹæÔò¡£
Ò»µ©Ê¹Óà kubectl run ÃüÁӦÓóÌÐò²¿Êðµ½ Kubernetes ÉÏ£¬Ëü¾Í¿ÉÒÔͨ¹ý¸ºÔؾùºâÆ÷±©Â¶¸øÍâ²¿ÍøÂ磬ÈçÏÂËùʾ£º

ÉÏÊöÃüÁ´´½¨Ò»¸ö¸ºÔؾùºâÆ÷ÀàÐ굀 service£¬²¢½«´´½¨¸Ã Pod ʱÉú³ÉµÄÏàͬѡÔñÆ÷±êÇ©(selector
label )½«ÆäÓ³Éäµ½ Pod¡£Òò´Ë£¬¸ù¾Ý Kubernetes ¼¯ÈºµÄÅäÖ÷½Ê½£¬»ù´¡¼Ü¹¹ÉϵĸºÔؾùºâÆ÷·þÎñ½«Í¨¹ý
service »òÖ±½ÓΪ¸ø¶¨µÄ Pod ·ÓÉÇëÇó¶ø´´½¨¡£
Persistent Volumes µÄʹÓÃ

ÐèÒªÔÚÎļþϵͳÉϱ£ÁôÊý¾ÝµÄÓ¦ÓóÌÐò¿ÉÒÔʹÓà volume ½«´æ´¢É豸¹ÒÔØµ½ÁÙʱÈÝÆ÷ÖУ¬ÕâÓëÐéÄâ»úʹÓÃ
volumes µÄ·½Ê½ÀàËÆ¡£Kubernetes ͨ¹ýÒýÈë³ÆÎª persistent volume
claims£¨PVC£©µÄÖмä×ÊÔ´£¬½«ÎïÀí´æ´¢É豸ÓëÈÝÆ÷½øÐÐËÉÉ¢ñîºÏ¡£PVC ¶¨ÒåÁË´ÅÅÌ´óС£¬´ÅÅÌÀàÐÍ£¨ReadWriteOnce£¬ReadOnlyMany£¬ReadWriteMany£©²¢ÇÒ¿ÉÒÔ½«´æ´¢É豸¶¯Ì¬µØÁ¬½Óµ½Ä³¸ö
Pod ¶¨ÒåµÄ volume ÉÏ ¡£°ó¶¨¹ý³Ì¼È¿ÉÒÔʹÓà PV ¾²Ì¬´¦Àí£¬Ò²¿ÉÒÔ¶¯Ì¬µØÊ¹Óà persistent
storage provider ¡£ÔÚÕâÁ½ÖÖ·½·¨ÖУ¬volume ½«Ò»¶ÔÒ»µØÁ¬½Óµ½Ò»¸ö PV£¬ÕâÈ¡¾öÓÚÅäÖã¬ÒòΪ¼´Ê¹¸Ã
Pod ±»ÖÕÖ¹£¬Êý¾ÝÒ²½«±»±£Áô¡£¸ù¾ÝËùʹÓõĴÅÅÌÀàÐÍ£¬¶à¸ö Pod ½«Äܹ»Á¬½Óµ½ÏàͬµÄ´ÅÅ̲¢½øÐжÁÈ¡»òдÈë¡£
Ö§³Ö ReadWriteOnce µÄ´ÅÅÌÖ»ÄÜÁ¬½Óµ½Ò»¸ö Pod£¬²¢ÇÒ²»ÄÜͬʱÔÚ¶à¸ö Pod Öй²Ïí¡£µ«ÊÇ£¬Ö§³Ö
ReadOnlyMany µÄ´ÅÅÌ¿ÉÒÔÔÚÖ»¶ÁģʽÏÂͬʱÔÚ¶à¸ö Pod Öй²Ïí¡£¹ËÃû˼Ò壬¾ßÓÐReadWriteMany
Ö§³ÖµÄ´ÅÅÌ¿ÉÒÔÁ¬½Óµ½¶à¸ö Pod£¬ÒÔ¶Áдģʽ¹²ÏíÊý¾Ý¡£Kubernetes ÌṩÁËһϵÁÐ volume
plugins£¬ÓÃÓÚÖ§³Ö AWS EBS£¬GCE ³Ö¾ÃÐÔ´ÅÅÌ£¬Azure File£¬Azure Disk
ÒÔ¼°ÆäËûÖÚËùÖÜÖªµÄ´æ´¢ÏµÍ³£¨Èç NFS£¬Glusterfs£¬Cinder µÈ£©µÈ¹«ÓÐÔÆÆ½Ì¨ÉÏÌṩµÄ´æ´¢·þÎñ¡£
Ôڽڵ㲿ÊðÊØ»¤³ÌÐò

Kubernetes ÌṩÁËÒ»¸öÃûΪ DaemonSets µÄ×ÊÔ´£¬ÓÃÓÚÔÚÿ¸ö Kubernetes
½ÚµãÖн«ÊØ»¤½ø³ÌµÄ¸±±¾×÷Ϊºǫ́½ø³ÌÔËÐС£DaemonSet µÄһЩÓÃÀýÈçÏÂËùʾ£º
¼¯Èº´æ´¢ÊØ»¤³ÌÐò£¬Èç glusterd£¬ceph Òª²¿ÊðÔÚÿ¸ö½ÚµãÉÏÒÔÌṩ³Ö¾ÃÐÔ´æ´¢£»
½Úµã¼àÊÓÊØ»¤½ø³Ì£¬Èç Prometheus ½Úµã¿Éµ¼³ö³ÌÐò£¬½«ÔÚÿ¸ö½ÚµãÉÏÔËÐУ¬ÒÔ¼àÊÓÈÝÆ÷Ö÷»ú£»
ÈÕÖ¾ÊÕ¼¯ÊØ»¤³ÌÐò£¬Èç fluentd »ò logstash £¬ÔÚÿ¸ö½ÚµãÉÏÔËÐÐÒÔÊÕ¼¯ÈÝÆ÷ºÍ Kubernetes
×é¼þÈÕÖ¾£»
Ingress controller pod ½«ÔÚÒ»×é½ÚµãÉÏÔËÐУ¬ÒÔÌṩÍⲿ·ÓÉ¡£
²¿ÊðÓÐ״̬·Ö²¼Ê½ÏµÍ³

ÈÝÆ÷»¯Ó¦ÓóÌÐò×îÀ§ÄѵÄÈÎÎñÖ®Ò»£¬¾ÍÊÇÉè¼ÆÓÐ״̬·Ö²¼Ê½×é¼þµÄ²¿ÊðÌåϵ½á¹¹¡£ÓÉÓÚÎÞ״̬×é¼þ¿ÉÄÜûÓÐÔ¤¶¨ÒåµÄÆô¶¯Ë³Ðò¡¢¼¯ÈºÒªÇó¡¢µã¶Ôµã
TCP Á¬½Ó¡¢Î¨Ò»µÄÍøÂç±êʶ·û¡¢Õý³£µÄÆô¶¯ºÍÖÕÖ¹ÒªÇóµÈ£¬Òò´Ë¿ÉÒÔºÜÈÝÒ׵ؽøÐÐÈÝÆ÷»¯¡£ÖîÈçÊý¾Ý¿â£¬´óÊý¾Ý·ÖÎöϵͳ£¬·Ö²¼Ê½
key/value ´æ´¢ºÍ message brokers ¿ÉÄÜÓи´Ôӵķֲ¼Ê½Ìåϵ½á¹¹£¬¶¼¿ÉÄÜÓõ½ÉÏÊö¹¦ÄÜ¡£Kubernetes
ÒýÈëÁË StatefulSets ×ÊÔ´À´Ö§³ÖÕâÖÖ¸´ÔÓµÄÐèÇó¡£
StatefulSets ÀàËÆÓÚ ReplicaSets£¬µ«ÊÇËü¿ÉÒÔ´¦Àí Pod µÄÆô¶¯Ë³Ðò£¬Îª±£Áôÿ¸ö
Pod µÄ״̬ÉèÖÃΨһ±êʶ£¬Í¬Ê±¾ßÓÐÒÔϹ¦ÄÜ£º
Stable£¬Î¨Ò»µÄÍøÂç±êʶ·û
Stable£¬³Ö¾Ã»¯µÄ´æ´¢
Ordered£¬ÓÅÑŵIJ¿ÊðºÍËõ·Å
Ordered£¬ÓÅÑŵÄɾ³ýºÍÖÕÖ¹
Ordered£¬×Ô¶¯¹ö¶¯¸üÐÂ
Stable Ö¸µÄÊǽ«ÍøÂç±êʶ·ûºÍ³Ö¾Ã´æ´¢¿ç Pod ÖØÐµ÷¶È¡£ÈçÉÏͼËùʾ£¬Ê¹Óà headless
services ÌṩΨһµÄÍøÂç±êʶ·û¡£Kubernetes ÌṩÁËÒÔ·Ö²¼Ê½·½Ê½²¿Êð Cassandra
ºÍ Zookeeper µÄ StatefulSets ʾÀý¡£
ÔËÐкǫ́×÷Òµ
³ýÁË ReplicaSets ºÍ StatefulSets Ö®Í⣬Kubernetes »¹ÌṩÁËÁ½¸ö¶îÍâµÄ¿ØÖÆÆ÷£¬ÓÃÓÚÔÚºǫ́ÔËÐгÆÎª
Jobs ºÍ CronJobs µÄ workload ¡£ Job ºÍ CronJobs Ö®¼äµÄÇø±ðÔÚÓÚ£¬Job
Ö´ÐÐÒ»´Î²¢ÖÕÖ¹£¬¶ø CronJobs Óë±ê×¼ Linux cron job ÀàËÆ£¬¸ù¾Ý¸ø¶¨Ê±¼ä¼ä¸ôÖÜÆÚÐÔÖ´ÐС£
²¿ÊðÊý¾Ý¿â
ÓÉÓÚ´ó¼Ò¶Ô¼¯Èº»¯¡¢µã¶ÔµãÁ¬½Ó¡¢Ö÷´Ó¸´ÖÆ¡¢·ÖÇø¡¢¹ÜÀí±¸·ÝµÈ¶¼ÓÐÒªÇó£¬Òò´ËÔÚÈÝÆ÷ƽ̨Éϲ¿ÊðÊý¾Ý¿âÒÔ¹©Éú²úʹÓñȲ¿ÊðÓ¦ÓóÌÐòÒªÀ§ÄѵĶࡣÈçǰËùÊö£¬StatefulSets
רÃÅÓ¦¸¶ÕâÖÖ¸´ÔÓÒªÇ󣬶øÔÚ Kubernetes ÉÏÔËÐÐ PostgreSQL ºÍ MongoDB
¼¯ÈºÓм¸¸öÏàӦѡÏî¡£
YouTube µÄÊý¾Ý¿â¼¯ÈºÏµÍ³ Vitess ÏÖÔÚÊÇÒ»¸ö CNCF ÏîÄ¿£¬¶ÔÓÚÔÚ Kubernetes
ÉÏ´ó¹æÄ£ÔËÐÐ MySQL À´Ëµ£¬ËüÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ¡£ÖµµÃ×¢ÒâµÄÊÇ£¬ÕâЩѡÏ´¦Óڷdz£ÔçÆÚµÄ½×¶Î£¬Èç¹ûÏÖÓеÄÉú²ú¼¶Êý¾Ý¿âϵͳ¿ÉÓÃÓÚ¸ø¶¨µÄ»ù´¡¼Ü¹¹£¬ÀýÈç
AWS É쵀 RDS£¬GCP É쵀 Cloud SQL »òÄÚ²¿²¿ÊðÊý¾Ý¿â¼¯Èº¿¼Âǵ½°²×°¸´ÔÓÐÔºÍά»¤¿ªÏú£¬Ñ¡ÔñÆäÖÐÒ»ÖÖÑ¡Ôñ¿ÉÄÜ»á¸üºÃ¡£
ÅäÖùÜÀí
ÈÝÆ÷ͨ³£Ê¹Óû·¾³±äÁ¿À´¶ÔÆäÔËÐÐʱÅäÖýøÐвÎÊý»¯¡£µ«ÊÇ£¬µäÐÍµÄÆóÒµÓ¦ÓóÌÐòʹÓôóÁ¿µÄÅäÖÃÎļþÀ´Ìṩ¸ø¶¨²¿ÊðËùÐèµÄ¾²Ì¬ÅäÖá£Kubernetes
ÌṩÁËÒ»ÖÖ³ÆÎª ConfigMaps µÄ¼òµ¥×ÊÔ´À´¹ÜÀí´ËÀàÅäÖÃÎļþµÄ·½·¨£¬ÎÞÐ轫ËüÃÇÀ¦°óµ½ÈÝÆ÷¾µÏñÖС£Ö»ÐèҪʹÓÃÒÔÏÂ
CLI ÃüÁî¿ÉÒÔʹÓÃĿ¼£¬Îļþ»ò literal values ´´½¨ ConfigMaps£º

Ò»µ©´´½¨ ConfigMap ºó£¬¿ÉÒÔʹÓà volume mount ½«Æä¹ÒÔØµ½Ò»¸öÈÝÆ÷¡£½èÖúÕâÖÖËÉÉ¢ñîºÏµÄÌåϵ½á¹¹£¬Ö»Ðè¸üÐÂÏà¹ØµÄ
ConfigMap ²¢Ö´Ðйö¶¯¸üгÌÐò¾Í¿ÉÒÔÎÞ·ìµØ¸üÐÂÒÑÔËÐÐϵͳµÄÅäÖã¬ÎÒ½«ÔÚÏÂÒ»½ÚÖÐ¶ÔÆä½øÐнâÊÍ¡£×¢Òâ
ConfigMaps Ŀǰ²»Ö§³ÖǶÌ×Îļþ¼Ð; Òò´Ë£¬Èç¹ûÓ¦ÓóÌÐòµÄǶÌ×Ŀ¼½á¹¹ÖÐÓпÉÓõÄÅäÖÃÎļþ£¬ÔòÐèҪΪÿ¸öĿ¼¼¶±ð´´½¨Ò»¸ö
ConfigMap¡£
ƾ֤¹ÜÀí
Óë ConfigMaps ÀàËÆ£¬Kubernetes ÌṩÁËÁíÒ»¸öºÃ¹¦ÄÜ£¬³ÆÎª Secrets£¬ÓÃÓÚ¹ÜÀíÃô¸ÐÐÅÏ¢£¬ÈçÃÜÂ룬OAuth
ÁîÅÆºÍ ssh ÃÜÔ¿¡£·ñÔò£¬ÔÚÒѾÔËÐеÄϵͳÉϸüиÃÐÅÏ¢¿ÉÄÜÐèÒªÖØ½¨ÈÝÆ÷¾µÏñ¡£
ʹÓÃÒÔÏ·½·¨¿ÉÒÔ´´½¨Ò»¸ö Secret À´¹ÜÀí»ù±¾Éí·ÝÑé֤ƾ¾Ý£º

Ò»µ©´´½¨ÁË secret£¬¾Í¿ÉÒÔʹÓû·¾³±äÁ¿»ò volume mounts ͨ¹ý Pod ½øÐжÁÈ¡¡£µ±È»£¬ÆäËûÀàÐ͵ÄÃô¸ÐÐÅÏ¢Ò²¿ÉÒÔʹÓÃÏàͬµÄ·½·¨×¢Èëµ½
Pod ÖС£
¹ö¶¯¸üÐÂ

ÉÏÃæµÄ¶¯»ËµÃ÷ÁËÈçºÎͨ¹ýʹÓÃÀ¶/Â̲¿Êð·½·¨ÎªÒѾÔËÐеÄÓ¦ÓóÌÐò½øÐйö¶¯¸üУ¬¶ø²»»áµ¼ÖÂϵͳͣ»ú¡£ÕâÊÇ
Kubernetes µÄÁíÒ»¸ö·Ç³£°ôµÄ¹¦ÄÜ£¬Ó¦ÓóÌÐò¿ÉÒÔÎÞ·ìµØÍÆ³ö°²È«¸üкÍÏòºó¼æÈݵĸü¸Ä¡£Èç¹û¸ü¸Ä²»Ïòºó¼æÈÝ£¬Ôò¿ÉÄÜÐèҪʹÓõ¥¶ÀµÄ²¿Êð¶¨ÒåÖ´ÐÐÊÖ¶¯À¶/Â̲¿Êð¡£
´Ë·½·¨ÔÊÐíʹÓüòµ¥µÄ CLI ÃüÁîÖ´ÐоíÕ¹À¸¸üÐÂÈÝÆ÷¾µÏñ£º

Ò»µ©Ö´ÐÐÁË rollout£¬¿ÉÒÔ°´ÕÕÒÔÏ·½Ê½¼ì²é rollout ¹ý³ÌµÄ״̬£º

ʹÓÃÏàͬµÄ CLI ÃüÁî kubectl set image deployment £¬¿ÉÒÔ½«¸üлعöµ½ÒÔǰµÄ״̬¡£
×Ô¶¯Ëõ·Å

Kubernetes ÔÊÐíʹÓà ReplicaSets »ò Deployments ÊÖ¶¯Ëõ·Å Pod¡£ÈçÉÏͼËùʾ£¬¿ÉÒÔͨ¹ýÏò²¿ÊðÌí¼ÓÁíÒ»¸öÃûΪ
Horizontal Pod Autoscaler£¨HPA£©µÄ×ÊÔ´À´À©Õ¹´Ë¹¦ÄÜ£¬ÒÔ¸ù¾Ýʵ¼Ê×ÊԴʹÓÃÇé¿ö¶¯Ì¬Ëõ·Å
Pod¡£HPA ½«Í¨¹ý×ÊÔ´¶ÈÁ¿ API ¼àÊÓÿ¸ö Pod µÄ×ÊԴʹÓÃÇé¿ö£¬²¢Í¨Öª²¿ÊðÏàÓ¦µØ¸ü¸Ä¸±±¾¼¯µÄ¸±±¾¼ÆÊý¡£Kubernetes
ʹÓø߼¶Ñӳٺ͵ͼ¶ÑÓ³ÙÀ´±ÜÃâÓÉÓÚijЩÇé¿öÏÂÆµ·±×ÊԴʹÓò¨¶¯¶ø¿ÉÄÜ·¢ÉúµÄ²¨¶¯¡£Ä¿Ç°£¬HPA ½öÖ§³Ö»ùÓÚ
CPU ʹÓÃÂʵÄÀ©Õ¹¡£Èç¹ûÐèÒª£¬»¹¿ÉÒÔͨ¹ý¸ù¾ÝÓ¦ÓóÌÐòµÄÐÔÖÊ×Ô¶¨ÒåÖ¸±ê API ²åÈë×Ô¶¨ÒåÖ¸±ê¡£
°ü¹ÜÀí

Kubernetes ÉçÇøÆô¶¯ÁËÒ»¸öµ¥¶ÀµÄÏîÄ¿À´ÊµÊ© Kubernetes µÄ¹ÜÀíÆ÷£¨Package
Manager£©£¬ÃûΪ Helm¡£Kubernetes ×ÊÔ´£¨Èç deployment£¬service£¬configmap£¬ingress
µÈ£©¿ÉÒÔʹÓà chart ½øÐÐÄ£°å»¯ºÍ´ò°ü£¬ÔÚ°²×°Ê±Ê¹ÓÃÊäÈë²ÎÊý¶ÔËüÃǽøÐÐÅäÖ᣸üÖØÒªµÄÊÇ£¬ËüÔÊÐíÔÚʹÓÃÒÀÀµ¹ØÏµÊµÏÖ°²×°°üÊ±ÖØÓÃÏÖÓÐͼ±í¡£
Helm ¿â¿ÉÒÔÍйÜÔÚ¹«ÓкÍ˽ÓÐÔÆ»·¾³ÖУ¬ÓÃÓÚ¹ÜÀíÓ¦ÓóÌÐòͼ±í¡£Helm ÌṩÁËÒ»¸ö CLI£¬ÓÃÓÚ½«À´×Ô¸ø¶¨
Helm repo µÄÓ¦ÓóÌÐò°²×°µ½Ñ¡¶¨µÄ Kubernetes »·¾³ÖС£´ó¼Ò¿ÉÒÔÔÚ Github
repo ºÍ central Helm server¡ª¡ªKubeapps Hub ÕÒµ½Õâ¸öÖÚËùÖÜÖªµÄÈí¼þÓ¦ÓóÌÐò
Helm ͼ±í¡£
Kubernetes ½áºÏ Google ´ó¹æÄ£ÔËÐÐÈÝÆ÷Ó¦ÓóÌÐòÊ®Äê¾Ñ顣Ŀǰ£¬ËüÒѾ±»×î´óµÄ¹«ÓÐÔÆ¹©Ó¦É̺ͼ¼ÊõÌṩÉÌËù²ÉÓá£ÔÚ׫д±¾ÎÄʱ£¬ËüÕýÔÚ±»¸ü¶àµÄÈí¼þ¹©Ó¦ÉÌºÍÆóÒµËù½ÓÊÜ¡£Kubernetes
ÔÚ 2015 Ä꿪Դ²¢ÑÜÉú³ö Cloud Native Computing Foundation £¨CNCF£©£¬×î½ü³ÉΪ»ù½ð»áÆìÏÂÊ׸ö±ÏÒµµÄÏîÄ¿¡£CNCF
Ò²¿ªÊ¼ÕûºÏÈÝÆ÷Éú̬ϵͳÒÔ¼°ÆäËûÓëÈÝÆ÷Ïà¹ØµÄÏîÄ¿£¬Èç CNI£¬Containerd£¬Envoy £¬Fluentd£¬gRPC£¬Jagger£¬Linkerd£¬Prometheus£¬rkt
ºÍ Vitess¡£Kubernetes Ö®ËùÒÔÊܵ½¸÷´ó×éÖ¯µÄ»¶ÓºÍÈϿɣ¬Æä¹Ø¼üÔÒòÊ×ÏÈÊÇËüµÄÍêÃÀÉè¼Æ£¬Æä´Î¾ÍÊÇÆä¿ªÔ´µÄÌØÐÔ¡¢ÓëÒµ½çÁìÐäµÄºÏ×÷µÄÈÈÇéÒÔ¼°Ê¼ÖÕ¶Ô´´ÒâºÍ¹±Ï×±£³Ö¿ª·ÅµÄ̬¶È¡£ |