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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
´óÐÍÍøÕ¾¼¼Êõ»ùʯƪ-ÈÝÆ÷DockerÓëkubernetes
 
  2073  次浏览      27
 2018-7-27
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcnblogs£¬½éÉÜÁËDockerµÄ¼Ü¹¹£¬Docker¸ÅÄÃüÃû¿Õ¼ä½éÉÜ£¬DockerʾÀýµÈ¡£

DockerºÍKubernetesµÄ¹ØÏµ¾ÍÈçXenÓëOpenStack¡£

DockerÊÇÒ»ÖÖÈÝÆ÷¼¼Êõ£¬ºÍHypervisor£¨KVM/XenÕâÀࣩ²»Í¬µÄÊÇ£¬Docker²»»áÌṩһÕû¸ö²Ù×÷ϵͳ£¬ËûÄÜÌṩ¸ôÀëµÄ³ÌÐòÔËÐл·¾³¡£¶ÔÒ»¸öÓ¦ÓÃÀ´ËµÕâÒѾ­¹»ÁË¡£

KubernetesÊÇGoogleµÄÒ»¸ö¿ªÔ´ÈÝÆ÷¹ÜÀíÏîÄ¿£¬ËûÄÜÀûÓÃDocker/ÆäËû¼¼Êõ²¿Êð/¹ÜÀíÈÝÆ÷¼¯Èº¡£

Docker

ÏîÄ¿µØÖ·£ºhttps://www.docker.com/

Docker ÊÇÒ»¸ö¿ªÔ´µÄÓ¦ÓÃÈÝÆ÷ÒýÇæ£¬Èÿª·¢Õß¿ÉÒÔ´ò°üËûÃǵÄÓ¦ÓÃÒÔ¼°ÒÀÀµ°üµ½Ò»¸ö¿ÉÒÆÖ²µÄÈÝÆ÷ÖУ¬È»ºó·¢²¼µ½ÈκÎÁ÷ÐÐµÄ Linux »úÆ÷ÉÏ£¬ÓëKVMÕâÀ೬¼¶µ×²ãÐéÄ⻯·½°¸Ïà±È£¬DockerÊÇÒ»ÖÖÇáÁ¿¼¶ÐéÄ⻯·½°¸£¬Ëû²»ÐèÒª¶ÔÄں˽øÐиı䣬ËûÖ÷ÒªÀûÓÃlinuxÄÚºËÌØÐÔʵÏÖÐéÄ⻯£¬ËùÓÐÈÝÆ÷ÔËÐÐÔÚͬһ¸öÄÚºËÖС£ÁíÍ⣬docker»¹¿ÉÒÔ²¿ÊðÔÚKVM/XENÕâÀàÐéÄâ»úÖУ¡ ÈÝÆ÷ÓëÐéÄâ»ú¶Ô±ÈÈçÏÂͼ¡£

DockerµÄ¼Ü¹¹

DockerʹÓÿͻ§¶Ë-·þÎñÆ÷(client-server)¼Ü¹¹Ä£Ê½¡£Docker¿Í»§¶Ë»áÓëDockerÊØ»¤½ø³Ì½øÐÐͨÐÅ¡£DockerÊØ»¤ ½ø³Ì»á´¦Àí¸´ÔÓ·±ÖصÄÈÎÎñ£¬ÀýÈ罨Á¢¡¢ÔËÐС¢·¢²¼ÄãµÄDockerÈÝÆ÷¡£Docker¿Í»§¶ËºÍÊØ»¤½ø³Ì¿ÉÒÔÔËÐÐÔÚͬһ¸öϵͳÉÏ£¬µ±È»ÄãÒ²¿ÉÒÔʹÓà Docker¿Í»§¶ËÈ¥Á¬½ÓÒ»¸öÔ¶³ÌµÄDockerÊØ»¤½ø³Ì¡£Docker¿Í»§¶ËºÍÊØ»¤½ø³ÌÖ®¼äͨ¹ýsocket»òÕßRESTful API½øÐÐͨÐÅ¡£

DockerÖØÒª¸ÅÄî

¾µÏñ£¨Image£©

Docker¾µÏñÊÇÒ»¸öÖ»¶ÁµÄÄ£°å¡£¾Ù¸öÀý×Ó£¬Ò»¸ö¾µÏñ¿ÉÒÔ°üº¬Ò»¸öÔËÐÐÔÚApacheÉϵÄWebÓ¦ÓÃºÍÆäʹÓõÄUbuntu²Ù×÷ϵͳ¡£¾µÏñÊÇÓÃÀ´´´½¨ÈÝÆ÷µÄ¡£DockerÌṩÁ˼òµ¥µÄ£¬ÄãÒ²¿ÉÒÔÏÂÔØ±ðÈËÒѾ­´´½¨ºÃµÄ¾µÏñ¡£

²Ö¿â£¨Image£©

Docker²Ö¿âÓÃÀ´±£´æ¾µÏñ¡£ÆäÏ൱ÓÚÒ»¸ö´úÂë²Ö¿â£¬Í¬ÑùµÄ£¬Docker²Ö¿âÒ²Óй«ÓкÍ˽ÓеĸÅÄî¡£¹«ÓеÄDocker²Ö¿âÃû×ÖÊÇDocker Hub¡£Ò²¿ÉÒÔ×Ô¼º´´½¨²Ö¿â¡£

ÈÝÆ÷£¨Container£©

Ò»¸öDockerÈÝÆ÷°üº¬ÁËij¸öÓ¦ÓÃÔËÐÐËùÓеÄËùÐèÒªµÄ»·¾³¡£Ã¿Ò»¸öDockerÈÝÆ÷¶¼ÊÇ´ÓDocker¾µÏñ´´½¨ µÄ¡£DockerÈÝÆ÷¿ÉÒÔÔËÐС¢¿ªÊ¼¡¢Í£Ö¹¡¢Òƶ¯ºÍɾ³ý¡¢±£´æÎª¾µÏñ¡£Ã¿Ò»¸öDockerÈÝÆ÷¶¼ÊǶÀÁ¢ºÍ°²È«µÄÓ¦ÓÃÆ½Ì¨¡£

DockerÄÚ²¿²ÉÓÃLinuxµÄÃüÃû¿Õ¼ä»úÖÆÊµÏÖ¸ôÀëÐÔ£¬²ÉÓÃcgroupʵÏÖ×ÊÔ´µÄ»®·Ö£¨ÀýÈç¸øÈÝÆ÷»®·Ö2GÄÚ´æ¡¢0.5¸öcpu£©¡£

¸ôÀë-ÃüÃû¿Õ¼ä½éÉÜ

ÃüÃû¿Õ¼äÊÇΪ²Ù×÷ϵͳ²ãÃæµÄÐéÄ⻯»úÖÆÌṩ֧³Å£¬Ä¿Ç°ÊµÏÖµÄÓÐÁùÖÖ²»Í¬µÄÃüÃû¿Õ¼ä£¬·Ö±ðΪmountÃüÃû¿Õ¼ä¡¢UTSÃüÃû¿Õ¼ä¡¢IPCÃüÃû¿Õ¼ä¡¢Óû§ÃüÃû¿Õ¼ä¡¢PIDÃüÃû¿Õ¼ä¡¢ÍøÂçÃüÃû¿Õ¼ä¡£ÃüÃû¿Õ¼ä¼òµ¥À´ËµÌṩµÄÊǶÔÈ«¾Ö×ÊÔ´µÄÒ»ÖÖ³éÏ󣬽«×ÊÔ´·Åµ½²»Í¬µÄÈÝÆ÷ÖУ¨²»Í¬µÄÃüÃû¿Õ¼ä£©£¬¸÷ÈÝÆ÷±Ë´Ë¸ôÀë¡£ÃüÃû¿Õ¼äÓеϹÓвã´Î¹ØÏµ£¬ÈçPIDÃüÃû¿Õ¼ä£¬Í¼ ΪÃüÃû¿Õ¼äµÄ²ã´Î¹ØÏµÍ¼¡£¿ÉÒÔ¼òµ¥Àí½âΪÏñC++£¬javaÄÇÑùµÄÃüÃû¿Õ¼ä¡£

×ÊÔ´»®·Ö-cgroup½éÉÜ

cgroup¾ÍÊÇcontroller group£¬×î³õÓÉgoogleµÄ¹¤³ÌʦÌá³ö£¬ºóÀ´±»ÕûºÏ½øLinuxÄÚºËÖУ¬ËüΪLinuxÄÚºËÌṩÁËÒ»ÖÖÈÎÎñ¾Û¼¯ºÍ»®·ÖµÄ»úÖÆ£¬Í¨¹ýÒ»×é²ÎÊý¼¯ºÏ½«Ò»Ð©ÈÎÎñ×éÖ¯³ÉÒ»¸ö»ò¶à¸ö×Óϵͳ¡£ cgroupÄÜÏÞ֯ij¸ö»òÕßijЩ½ø³ÌµÄ·ÖÅä×ÊÔ´¡£Ò²¾ÍÊÇÄÜÍê³ÉÒ»×éÈÝÆ÷µÄ¸ÅÄÔÚÕâ¸öÈÝÆ÷ÖУ¬ÓзÖÅäºÃµÄÌØ¶¨±ÈÀýµÄcpuʱ¼ä£¬IOʱ¼ä£¬¿ÉÓÃÄÚ´æ´óСµÈ¡£CgroupsÊÇʵÏÖIaaSÐéÄ⻯(kvm¡¢lxcµÈ)£¬PaaSÈÝÆ÷ɳÏä(DockerµÈ)µÄ×ÊÔ´¹ÜÀí¿ØÖÆ²¿·ÖµÄµ×²ã»ù´¡¡£

×ÓϵͳÊǸù¾Ýcgroup¶ÔÈÎÎñµÄ»®·Ö¹¦Äܽ«ÈÎÎñ°´ÕÕÒ»ÖÖÖ¸¶¨µÄÊôÐÔ»®·Ö³ÉµÄÒ»¸ö×飬Ö÷ÒªÓÃÀ´ÊµÏÖ×ÊÔ´µÄ¿ØÖÆ¡£ÔÚcgroupÖУ¬»®·Ö³ÉµÄÈÎÎñ×éÒÔ²ã´Î½á¹¹µÄÐÎʽ×éÖ¯£¬¶à¸ö×ÓϵͳÐγÉÒ»¸öÊý¾Ý½á¹¹ÖÐÀàËÆ¶à¸ùÊ÷µÄ½á¹¹¡£cgroup°üº¬Á˶à¸ö¹ÂÁ¢µÄ×Óϵͳ£¬Ã¿Ò»¸ö×Óϵͳ´ú±íµ¥Ò»µÄ×ÊÔ´¡£

DockerʾÀý

ÔÚ°²×°dockerÖ®ºó£¬ÔËÐÐÆäÊØ»¤½ø³Ì£¬È»ºó¾Í¿ÉÒÔʹÓÃdocker´´½¨ÔËÐÐÈÝÆ÷¡£°²×°docker¿ÉÒÔ°Ù¶Èһϡ£

ÔËÐÐdockerÃüÁÏÔʾÐÅÏ¢¾Í±íʾ°²×°³É¹¦¡£×îºÃÄÚºËÊÇ3.8ÒÔºóµÄ¡£

1. ²ÉÓÃdocker pullÃüÁî´Ó¹«¹²¿âÖÐÀ­È¡£¨ÏÂÔØ£©Ò»¸ö¾µÏñµ½ÎҵĵçÄÔÉÏ¡£

2. ²ÉÓÃdocker runÃüÁ¿ÉÒÔÖ¸¶¨Ò»¸ö¾µÏñ×÷Ϊ»ù´¡ÔËÐÐÈÝÆ÷¡£ ÎÒÕâÀïÖ¸¶¨ÁËubuntu¾µÏñ£¬ÒòΪÎÒµçÄÔÖÐûÓÐubuntu¾µÏñ£¬Ëû»á×Ô¶¯´Ó¹«¹²²Ö¿âÏÂÔØubuntuµÄ¾µÏñ¡£×ÐÏ¸ÇÆµÄ»°£¬¿ÉÒÔ¿´³öÎÒ½øÈëÁ˸ÃÈÝÆ÷µÄbash³ÌÐò¡£

3. ÊäÈëdocker images£¬¿ÉÒԲ鿴Ö÷»úÉÏ´æ´¢µÄ¾µÏñ¡£

DockerÒ²ÌṩÁ˺ܶ෽±ãµÄÃüÁî¶Ô¾µÏñ½øÐвÙ×÷¡£

kubernetes

ÏîÄ¿Ö÷Ò³£ºhttp://kubernetes.io/

docker½öÄÜÔÚµ¥»úÉϲ¿ÊðÈÝÆ÷£¬¶økubernetes¿ÉÒÔͳһ¹ÜÀí¸÷ÀàÈÝÆ÷£¬Ðγɼ¯Èº¡£Kubernetes×÷ΪDockerÉú̬ȦÖÐÖØÒªÒ»Ô±£¬ÊÇGoogle¶àÄê´ó¹æÄ£ÈÝÆ÷¹ÜÀí¼¼ÊõµÄ¿ªÔ´°æ±¾¡£KubernetesÖ§³ÖGCE¡¢vShpere¡¢CoreOS¡¢AzureµÈƽ̨£¬Ò²¿ÉÒÔÖ±½ÓÔËÐÐÔÚÎïÀí»úÉÏ¡£

Kubernetes·Ç³£ÊʺÏ×ö΢·þÎñµÄ¼Ü¹¹¡£

ÆäÖ÷Òª¹¦ÄÜÈçÏ£º

1) Óû§²»ÐèÒª¹ØÐÄÐèÒª¶àÉŲ̀»úÆ÷£¬Ö»ÐèÒª¹ØÐÄÈí¼þ£¨·þÎñ£©ÔËÐÐËùÐèµÄ»·¾³¡£ÒÔ·þÎñΪÖÐÐÄ£¬ÄãÐèÒª¹ØÐĵÄÊÇapi£¬ÈçºÎ°Ñ´ó·þÎñ²ð·Ö³ÉС·þÎñ£¬ÈçºÎʹÓÃapiÈ¥ÕûºÏËüÃÇ¡£

2) ÒÔ¼¯ÈºµÄ·½Ê½ÔËÐйÜÀíÈÝÆ÷¡£

3) ½â¾öDocker¿ç»úÆ÷ÈÝÆ÷Ö®¼äµÄͨѶÎÊÌâ¡£

4) KubernetesµÄPods×ÔÎÒÐÞ¸´»úÖÆÊ¹µÃÈÝÆ÷¼¯Èº×ÜÊÇÔËÐÐÔÚÓû§Ö¸¶¨µÄ״̬¡£

KubernetesÓм¸¸öÖØÒªµÄ¸ÅÄ

1. Pod

KubernetesµÄÈÝÆ÷¹ÜÀíµÄ×îСµ¥Î»²»ÊÇÈÝÆ÷£¬Ã²ËÆËµµÄºÜ±ðŤ¡£ ¾ÍÊÇÈÝÆ÷²¢²»ÊÇKubernetes¹ÜÀíµÄ×îСµ¥Ôª£¬¶øÊÇPods£¬

Ò»¸öPod°üº¬Ò»¸ö»òÕß¶à¸öÈÝÆ÷¡£ÀýÈçÒ»¸öС³ÌÐòÓÐÊý¾Ý¿âºÍºǫ́³ÌÐò£¬¿ÉÒÔ·Ö±ð·Åµ½Ò»¸öÈÝÆ÷ÀïÃæ£¬ÕâÁ½¸öÈÝÆ÷×é³ÉÒ»¸öPods¡£

PodµÄYAML ÃèÊö·½Ê½:

ÔËÐÐÈçÏÂÃüÁî¾Í»á´´½¨Pod:

kubectl create -f ./hello-world.yaml

ÔËÐÐÈçÏÂÃüÁî¾Í»á²é¿´Pod״̬:

$ kubectl get pods

2. minion/node

minionºÍnodeµÄÒâ˼ÊÇÒ»ÑùµÄ£¬ÊÇÒ»¸öÖ÷»ú½ÚµãµÄÒâ˼¡£ÀýÈçÒ»¸öÐéÄâ»ú¡¢Ò»¸öÎïÀíÖ÷»ú¡£×¢Ò⣬һ¸öPod²»»á¿çÔ½node¡£¾ÍÊǼ´Ê¹Ò»¸öPodÓжà¸öÈÝÆ÷£¬ÀïÃæµÄÈÝÆ÷»áͬʱ´æÔÚÔÚͬһ¸öNodeÖУ¬²»»á·Ö±ðÔÚ²»Í¬µÄNodeÖС£ KubernetesµÄµ÷¶ÈÆ÷»á¸ù¾ÝPodµÄ×ÊÔ´ÐèÇó¶¨ÒåÀ´½«Pod·ÖÅäµ½²»Í¬µÄNodeÖУ¨Èç½ñÖ§³Ö¶¨ÒåCPUÐèÇó¡¢ÄÚ´æÐèÇ󣩡£KubernetesµÄmaster/slave³ÌÐòÔËÐÐÔÚnodeÀïÃæ¡£

3. Replication Controller

Replication ÊǸ´ÖƵÄÒâ˼£¬ÓÃÀ´½â¾öPodµÄÏßÐÔÀ©ÈÝËõÈÝÎÊÌ⣬Replication Controller¿ÉÒÔ´´½¨Ò»¸öpodµÄ¶à¸ö¸±±¾£¬²¢ÇÒ¿ÉÒÔ±£Ö¤¼¯ÈºÖиÃPodµÄ¸±±¾ÊýÁ¿±£³Öƽºâ¡£ÀýÈ縱±¾ÊýÁ¿¹æ¶¨Îª10£¬Èç¹ûij¸öpod¹ÒÁË£¬ÊýÁ¿±äΪ9£¬ÄÇôReplication Controller»á×Ô¶¯´´½¨Ò»¸öPod£¬»Ö¸´µ½10¸ö¸±±¾µÄˮƽ¡£ ¶à¸ö¸±±¾¿ÉÒÔÔÚ²»Í¬µÄNodeÖС£

Replication ControllerµÄYAML ÃèÊö·½Ê½:

replicas±íʾ¸±±¾µÄÊýÁ¿

templateÊǶÔPodµÄÃèÊö¡£ReplicationController¸ù¾Ýtemplate´´½¨¶à¸öPod£¨ÊýÁ¿=replicas£©£¬±êǩΪapp: nginx¡£

ÔËÐÐÈçÏÂÃüÁî¾Í»á´´½¨Replication Controller:

kubectl create -f ./nginx-rc.yaml

4. Service

ServiceÓÃÀ´½â¾öPodµÄ·þÎñ·¢ÏÖÎÊÌ⣬ÒòΪPodµÄÔËÐÐ״̬¿ÉÒÔ¶¯Ì¬±ä»¯£¨»úÆ÷Çл»¡¢å´»ú£©£¬ËùÒÔ·ÃÎʶË×îºÃ²»ÒªÖ±½ÓÈ¥·ÃÎÊij¸öPod£¬¶øÊÇͨ¹ýservice£¬serviceÄܹ»½«ÇëÇó½øÐÐת·¢¡£

·þÎñµÄYAMLÃèÊöÈçÏ£º

¸Ã¶¨Òå´´½¨ÁËÒ»¸ö·þÎñ£¬»á½«±êǩΪapp:nginx£¨selectorÑ¡µÄ£©µÄPodÄÉÈë·þÎñÖУ¬Ò²¾ÍÊÇ˵¸Ã·þÎñ½ÓÊÕµ½µÄÇëÇó»áת·¢¸ø±êǩΪapp: nginxµÄPod´¦Àí¡£×¢Ò⣺serviceÊǸºÔؾùºâµÄ£¬»á×Ô¶¯·ÖÅäÇëÇó¸ø²»Í¬µÄPod¡£ÓÐûÓоõµÃºÜ·½±ã£¿°ÑSerivce±©Â¶¸ø¿Í»§¶Ë£¬¿Í»§¶ËÖ»ÐèÒªÇëÇóservice£¬²»ÐèÒªÖªµÀºǫ́ÊǸö¼¯Èº¡£

ÔËÐÐÈçÏÂÃüÁî¾Í»á´´½¨Service:

kubectl create -f ./nginx-rc.yaml

5. Label

±êÇ©£¬ÓÃÀ´×öÂß¼­Éϵıê¼Ç¡£ÓÃÀ´¹ØÁªservice¡¢replication controllerºÍpod.

Kubernetes¼Ü¹¹

ÏÂͼΪ¹Ù·½µÄ¼Ü¹¹Í¼¡£

´ÓͼÖп´³ö£¬KubernetesµÄ¼Ü¹¹ÊǵäÐ͵Ämaster/Slave¼Ü¹¹¡£

Master¸ºÔð×ÜÌåµÄЭµ÷¿ØÖÆ£¬Slave¸ºÔð¾ßÌåµÄÈÎÎñ¡£Master/SlaveµÄ×é¼þÈçÏ£º

µÁ¸öͼ£¬ÏÂͼÄܸüÇåÎúµÄչʾKubernates¡£

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

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤