DockOne¼¼Êõ·ÖÏí£¨Ê®Áù£©£ºÏÐ̸Kubernetes µÄÖ÷ÒªÌØÐԺ;Ñé·ÖÏí
Ö÷Òª½éÉÜ Kubernetes µÄÖ÷ÒªÌØÐÔºÍһЩ¾Ñé¡£ÏÈ´ÓÕûÌåÉÏ¿´Ò»ÏÂKubernetesµÄһЩÀíÄîºÍ»ù±¾¼Ü¹¹£¬
È»ºó´ÓÍøÂç¡¢ ×ÊÔ´¹ÜÀí¡¢´æ´¢¡¢·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâ¡¢¸ß¿ÉÓá¢rolling upgrade¡¢°²È«¡¢¼à¿ØµÈ·½ÃæÏò´ó¼Ò¼òµ¥½éÉÜKubernetesµÄÕâЩÖ÷ÒªÌØÐÔ¡£
ÎÒÃÇÏÈ´ÓÕûÌåÉÏ¿´Ò»ÏÂKubernetesµÄһЩÀíÄîºÍ»ù±¾¼Ü¹¹£¬ È»ºó´ÓÍøÂç¡¢
×ÊÔ´¹ÜÀí¡¢´æ´¢¡¢·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâ¡¢¸ß¿ÉÓá¢rolling upgrade¡¢°²È«¡¢¼à¿ØµÈ·½ÃæÏò´ó¼Ò¼òµ¥½éÉÜKubernetesµÄÕâЩÖ÷ÒªÌØÐÔ¡£
µ±È»Ò²»á°üÀ¨Ò»Ð©ÐèҪעÒâµÄÎÊÌâ¡£Ö÷ҪĿµÄÊǰïÖú´ó¼Ò¿ìËÙÀí½â KubernetesµÄÖ÷Òª¹¦ÄÜ£¬½ñºóÔÚÑо¿ºÍʹÓÃÕâ¸ö¾ßµÄʱºòÓÐËù²Î¿¼ºÍ°ïÖú¡£
1.KubernetesµÄһЩÀíÄ
Óû§²»ÐèÒª¹ØÐÄÐèÒª¶àÉŲ̀»úÆ÷£¬Ö»ÐèÒª¹ØÐÄÈí¼þ£¨·þÎñ£©ÔËÐÐËùÐèµÄ»·¾³¡£ÒÔ·þÎñΪÖÐÐÄ£¬ÄãÐèÒª¹ØÐĵÄÊÇapi£¬ÈçºÎ°Ñ´ó·þÎñ²ð·Ö³ÉС·þÎñ£¬ÈçºÎʹÓÃapiÈ¥ÕûºÏËüÃÇ¡£
±£Ö¤ÏµÍ³×ÜÊǰ´ÕÕÓû§Ö¸¶¨µÄ״̬ȥÔËÐС£
²»½ö½öÌá¸øÄ㹩ÈÝÆ÷·þÎñ£¬Í¬ÑùÌṩһÖÖÈí¼þϵͳÉý¼¶µÄ·½Ê½£»ÔÚ±£³ÖHAµÄǰÌáÏÂÈ¥Éý¼¶ÏµÍ³ÊǺܶàÓû§×îÏëÒªµÄ¹¦ÄÜ£¬Ò²ÊÇ×îÄÑʵÏֵġ£
ÄÇЩÐèÒªµ£ÐĺͲ»ÐèÒªµ£ÐĵÄÊÂÇé¡£

¸üºÃµÄÖ§³Ö΢·þÎñÀíÄ»®·Ö¡¢Ï¸·Ö·þÎñÖ®¼äµÄ±ß½ç£¬±ÈÈçlablel¡¢podµÈ¸ÅÄîµÄÒýÈë¡£
¶ÔÓÚKubernetesµÄ¼Ü¹¹£¬¿ÉÒԲο¼¹Ù·½Îĵµ¡£
´óÖÂÓÉһЩÖ÷Òª×é¼þ¹¹³É£¬°üÀ¨Master½ÚµãÉϵÄkube-apiserver¡¢kube-scheduler¡¢kube-controller-manager¡¢¿ØÖÆ×é¼þkubectl¡¢×´Ì¬´æ´¢etcd¡¢Slave½ÚµãÉϵÄkubelet¡¢kube-proxy£¬ÒÔ¼°µ×²ãµÄÍøÂçÖ§³Ö£¨¿ÉÒÔÓÃFlannel¡¢OpenVSwitch¡¢WeaveµÈ£©¡£
¿´ÉÏÈ¥Ò²ÊÇ΢·þÎñµÄ¼Ü¹¹Éè¼Æ£¬²»¹ýĿǰ»¹²»ÄܺܺÃÖ§³Öµ¥¸ö·þÎñµÄºáÏòÉìËõ£¬µ«Õâ¸ö»áÔÚ
Kubernetes µÄδÀ´°æ±¾Öнâ¾ö¡£
2.KubernetesµÄÖ÷ÒªÌØÐÔ
»á´ÓÍøÂç¡¢·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâ¡¢×ÊÔ´¹ÜÀí¡¢¸ß¿ÉÓᢴ洢¡¢°²È«¡¢¼à¿ØµÈ·½ÃæÏò´ó¼Ò¼òµ¥½éÉÜKubernetesµÄÕâЩÖ÷ÒªÌØÐÔ
-> ÓÉÓÚʱ¼äÓÐÏÞ£¬Ö»Äܼòµ¥Ò»Ð©ÁË¡£
ÁíÍ⣬¶ÔÓÚ·þÎñ·¢ÏÖ¡¢¸ß¿ÉÓÃºÍ¼à¿ØµÄһЩ¸üÏêϸµÄ½éÉÜ£¬¸ÐÐËȤµÄÅóÓÑ¿ÉÒÔͨ¹ýÕâÆªÎÄÕÂÁ˽⡣
1£©ÍøÂç
KubernetesµÄÍøÂ緽ʽÖ÷Òª½â¾öÒÔϼ¸¸öÎÊÌ⣺
a. ½ôñîºÏµÄÈÝÆ÷Ö®¼äͨÐÅ£¬Í¨¹ý Pod ºÍ localhost ·ÃÎʽâ¾ö¡£
b. PodÖ®¼äͨÐÅ£¬½¨Á¢Í¨ÐÅ×ÓÍø£¬±ÈÈçËíµÀ¡¢Â·ÓÉ£¬Flannel¡¢Open
vSwitch¡¢Weave¡£
c. PodºÍService£¬ÒÔ¼°ÍⲿϵͳºÍServiceµÄͨÐÅ£¬ÒýÈëService½â¾ö¡£
KubernetesµÄÍøÂç»á¸øÃ¿¸öPod·ÖÅäÒ»¸öIPµØÖ·£¬²»ÐèÒªÔÚPodÖ®¼ä½¨Á¢Á´½Ó£¬Ò²»ù±¾²»ÐèҪȥ´¦ÀíÈÝÆ÷ºÍÖ÷»úÖ®¼äµÄ¶Ë¿ÚÓ³Éä¡£
×¢Ò⣺PodÖØ½¨ºó£¬IP»á±»ÖØÐ·ÖÅ䣬ËùÒÔÄÚÍøÍ¨ÐŲ»ÒªÒÀÀµPod IP£»Í¨¹ýService»·¾³±äÁ¿»òÕßDNS½â¾ö¡£
2£© ·þÎñ·¢ÏÖ¼°¸ºÔؾùºâ
kube-proxyºÍDNS£¬ ÔÚv1֮ǰ£¬Serviceº¬ÓÐ×Ö¶Îportalip
ºÍpublicIPs£¬ ·Ö±ðÖ¸¶¨ÁË·þÎñµÄÐéÄâipºÍ·þÎñµÄ³ö¿Ú»úip£¬publicIPs¿ÉÈÎÒâÖ¸¶¨³É¼¯ÈºÖÐÈÎÒâ°üº¬kube-proxyµÄ½Úµã£¬¿É¶à¸ö¡£portalIp
ͨ¹ýNATµÄ·½Ê½Ìø×ªµ½containerµÄÄÚÍøµØÖ·¡£ÔÚv1°æ±¾ÖУ¬publicIPS±»Ô¼¶¨·Ï³ý£¬±ê¼ÇΪdeprecatedPublicIPs£¬½öÓÃ×÷Ïòºó¼æÈÝ£¬portalIpÒ²¸ÄΪClusterIp,
¶øÔÚservice port ¶¨ÒåÁбíÀÔö¼ÓÁËnodePortÏ¼´¶ÔÓ¦nodeÉÏÓ³ÉäµÄ·þÎñ¶Ë¿Ú¡£
DNS·þÎñÒÔaddonµÄ·½Ê½£¬ÐèÒª°²×°skydnsºÍkube2dns¡£kube2dns»áͨ¹ý¶ÁÈ¡Kubernetes
API»ñÈ¡·þÎñµÄclusterIPºÍportÐÅÏ¢£¬Í¬Ê±ÒÔwatchµÄ·½Ê½¼ì²éserviceµÄ±ä¶¯£¬¼°Ê±ÊÕ¼¯±ä¶¯ÐÅÏ¢£¬²¢½«¶ÔÓÚµÄipÐÅÏ¢Ìá½»¸øetcd´æµµ£¬¶øskydnsͨ¹ýetcdÄÚµÄDNS¼Ç¼ÐÅÏ¢£¬¿ªÆô53¶Ë¿Ú¶ÔÍâÌṩ·þÎñ¡£´ó¸ÅµÄDNSµÄÓòÃû¼Ç¼ÊÇservicename.namespace.tenx.domain,
"tenx.domain"ÊÇÌáǰÉèÖõÄÖ÷ÓòÃû¡£
×¢Ò⣺kube-proxy ÔÚ¼¯Èº¹æÄ£½Ï´óÒԺ󣬿ÉÄÜ»áÓзÃÎʵÄÐÔÄÜÎÊÌ⣬¿ÉÒÔ¿¼ÂÇÓÃÆäËû·½Ê½Ìæ»»£¬±ÈÈçHAProxy£¬Ö±½Óµ¼Á÷µ½Service
µÄendpints »òÕß PodsÉÏ¡£Kubernetes¹Ù·½Ò²ÔÚÐÞ¸´Õâ¸öÎÊÌâ¡£
3£©×ÊÔ´¹ÜÀí
ÓÐ3 ¸ö²ã´ÎµÄ×ÊÔ´ÏÞÖÆ·½Ê½£¬·Ö±ðÔÚContainer¡¢Pod¡¢Namespace
²ã´Î¡£Container²ã´ÎÖ÷ÒªÀûÓÃÈÝÆ÷±¾ÉíµÄÖ§³Ö£¬±ÈÈçDocker ¶ÔCPU¡¢ÄÚ´æ¡¢´ÅÅÌ¡¢ÍøÂçµÈµÄÖ§³Ö£»Pod·½Ãæ¿ÉÒÔÏÞÖÆÏµÍ³ÄÚ´´½¨PodµÄ×ÊÔ´·¶Î§£¬±ÈÈç×î´ó»òÕß×îСµÄCPU¡¢memoryÐèÇó£»Namespace²ã´Î¾ÍÊǶÔÓû§¼¶±ðµÄ×ÊÔ´ÏÞ¶îÁË£¬°üÀ¨CPU¡¢Äڴ棬»¹¿ÉÒÔÏÞ¶¨Pod¡¢rc¡¢serviceµÄÊýÁ¿¡£
×ÊÔ´¹ÜÀíÄ£ÐÍ £¡· ¼òµ¥¡¢Í¨Óá¢×¼È·£¬²¢¿ÉÀ©Õ¹
ĿǰµÄ×ÊÔ´·ÖÅ伯ËãÒ²Ïà¶Ô¼òµ¥£¬Ã»ÓÐʲô×ÊÔ´ÇÀÕ¼Ö®ÀàµÄÇ¿´ó¹¦ÄÜ£¬Í¨¹ýÿ¸ö½ÚµãÉϵÄ×ÊÔ´×ÜÁ¿¡¢ÒÔ¼°ÒѾʹÓõĸ÷ÖÖ×ÊÔ´¼ÓȨºÍ£¬À´¼ÆËãij¸öPodÓÅÏÈ·ÇÅäµ½ÄÄЩ½Úµã£¬»¹Ã»ÓмÓÈë¶Ô½Úµãʵ¼Ê¿ÉÓÃ×ÊÔ´µÄÆÀ¹À£¬ÐèÒª×Ô¼ºµÄscheduler
pluginÀ´Ö§³Ö¡£ÆäʵkubeletÒѾ¿ÉÒÔÄõ½½ÚµãµÄ×ÊÔ´£¬Ö»Òª½øÐÐÊÕ¼¯¼ÆËã¼´¿É£¬ÏàÐÅKubernetesµÄºóÐø°æ±¾»áÓÐÖ§³Ö¡£
4£©¸ß¿ÉÓÃ
Ö÷ÒªÊÇÖ¸Master½ÚµãµÄ HA·½Ê½ ¹Ù·½ÍƼö ÀûÓÃetcdʵÏÖmaster
Ñ¡¾Ù£¬´Ó¶à¸öMasterÖеõ½Ò»¸ökube-apiserver ±£Ö¤ÖÁÉÙÓÐÒ»¸ömaster¿ÉÓã¬ÊµÏÖhigh
availability¡£¶ÔÍâÒÔloadbalancerµÄ·½Ê½ÌṩÈë¿Ú¡£ÕâÖÖ·½Ê½¿ÉÒÔÓÃ×÷ha£¬µ«ÈÔδ³ÉÊ죬¾ÝÁ˽⣬δÀ´»á¸üÐÂÉý¼¶haµÄ¹¦ÄÜ¡£
Ò»ÕÅͼ°ïÖú´ó¼ÒÀí½â£º

Ò²¾ÍÊÇÔÚetcd¼¯Èº±³¾°Ï£¬´æÔÚ¶à¸ökube-apiserver£¬²¢ÓÃpod-master±£Ö¤½öÊÇÖ÷master¿ÉÓá£Í¬Ê±kube-shedullerºÍkube-controller-managerÒ²´æÔÚ¶à¸ö£¬¶øÇÒ°éËæ×Åkube-apiserver
ͬһʱ¼äÖ»ÄÜÓÐÒ»Ì×ÔËÐС£
5£© rolling upgrade
RC ÔÚ¿ªÊ¼µÄÉè¼Æ¾ÍÊÇÈÃrolling upgrade±äµÄ¸üÈÝÒ×£¬Í¨¹ýÒ»¸öÒ»¸öÌæ»»PodÀ´¸üÐÂservice£¬ÊµÏÖ·þÎñÖжÏʱ¼äµÄ×îС»¯¡£»ù±¾Ë¼Â·ÊÇ´´½¨Ò»¸ö¸´±¾Îª1µÄеÄrc£¬²¢Öð²½¼õÉÙÀϵÄrcµÄ¸´±¾¡¢Ôö¼ÓеÄrcµÄ¸´±¾£¬ÔÚÀϵÄrcÊýÁ¿Îª0ʱ½«Æäɾ³ý¡£
ͨ¹ýkubectlÌṩ£¬¿ÉÒÔÖ¸¶¨¸üеľµÏñ¡¢Ìæ»»podµÄʱ¼ä¼ä¸ô£¬Ò²¿ÉÒÔrollback
µ±Ç°ÕýÔÚÖ´ÐеÄupgrade²Ù×÷¡£
ͬÑù£¬ KuberntesÒ²Ö§³Ö¶à°æ±¾Í¬Ê±²¿Ê𣬲¢Í¨¹ýlableÀ´½øÐÐÇø·Ö£¬ÔÚservice²»±äµÄÇé¿öÏ£¬µ÷ÕûÖ§³Å·þÎñµÄPod£¬²âÊÔ¡¢¼à¿ØÐÂPodµÄ¹¤×÷Çé¿ö¡£

6£©´æ´¢
´ó¼Ò¶¼ÖªµÀÈÝÆ÷±¾ÉíÒ»°ã²»»á¶ÔÊý¾Ý½øÐг־û¯´¦Àí£¬ÔÚKubernetesÖУ¬ÈÝÆ÷Òì³£Í˳ö£¬kubeletÒ²Ö»ÊǼòµ¥µÄ»ùÓÚÔÓоµÏñÖØÆôÒ»¸öеÄÈÝÆ÷¡£ÁíÍ⣬Èç¹ûÎÒÃÇÔÚͬһ¸öPodÖÐÔËÐжà¸öÈÝÆ÷£¬¾³£»áÐèÒªÔÚÕâЩÈÝÆ÷Ö®¼ä½øÐй²ÏíһЩÊý¾Ý¡£Kuberenetes
µÄ Volume¾ÍÊÇÖ÷ÒªÀ´½â¾öÉÏÃæÁ½¸ö»ù´¡ÎÊÌâµÄ¡£
Docker Ò²ÓÐVolumeµÄ¸ÅÄµ«ÊÇÏà¶Ô¼òµ¥£¬¶øÇÒĿǰµÄÖ§³ÖºÜÓÐÏÞ£¬Kubernetes¶ÔVolumeÔòÓÐ×ÅÇåÎú¶¨ÒåºÍ¹ã·ºµÄÖ§³Ö¡£ÆäÖÐ×îºËÐĵÄÀíÄVolumeÖ»ÊÇÒ»¸öĿ¼£¬²¢¿ÉÒÔ±»ÔÚͬһ¸öPodÖеÄËùÓÐÈÝÆ÷·ÃÎÊ¡£¶øÕâ¸öĿ¼»áÊÇʲôÑù£¬ºó¶ËÓÃʲô½éÖʺÍÀïÃæµÄÄÚÈÝÔòÓÉʹÓõÄÌØ¶¨VolumeÀàÐ;ö¶¨¡£
´´½¨Ò»¸ö´øVolumeµÄPod£º

spec.volumes Ö¸¶¨Õâ¸öPodÐèÒªµÄvolumeÐÅÏ¢ spec.containers.volumeMounts
Ö¸¶¨ÄÄЩcontainerÐèÒªÓõ½Õâ¸öVolume Kubernetes¶ÔVolumeµÄÖ§³Ö·Ç³£¹ã·º£¬Óкܶ๱Ï×ÕßΪÆäÌí¼Ó²»Í¬µÄ´æ´¢Ö§³Ö£¬Ò²·´Ó³³öKubernetesÉçÇøµÄ»îÔ¾³Ì¶È¡£
emptyDir ËæPodɾ³ý£¬ÊÊÓÃÓÚÁÙʱ´æ´¢¡¢ÔÖÄѻָ´¡¢¹²ÏíÔËÐÐʱÊý¾Ý£¬Ö§³Ö
RAM-backed filesystem hostPath ÀàËÆÓÚDockerµÄ±¾µØVolume ÓÃÓÚ·ÃÎÊһЩ±¾µØ×ÊÔ´£¨±ÈÈç±¾µØDocker£©¡£
gcePersistentDisk GCE disk - Ö»ÓÐÔÚ Google
Cloud Engine ƽ̨ÉÏ¿ÉÓá£
awsElasticBlockStore ÀàËÆÓÚGCE disk ½Úµã±ØÐëÊÇ
AWS EC2µÄʵÀý nfs - Ö§³ÖÍøÂçÎļþϵͳ¡£
rbd - Rados Block Device - Ceph
secret ÓÃÀ´Í¨¹ýKubernetes API ÏòPod ´«µÝÃô¸ÐÐÅÏ¢£¬Ê¹ÓÃ
tmpfs £¨a RAM-backed filesystem£©
persistentVolumeClaim - ´Ó³éÏóµÄPVÖÐÉêÇë×ÊÔ´£¬¶øÎÞÐè¹ØÐÄ´æ´¢µÄÌṩ·½
glusterfs
iscsi
gitRepo
¸ù¾Ý×Ô¼ºµÄÐèÇóÑ¡ÔñºÏÊʵĴ洢ÀàÐÍ£¬·´ÕýÖ§³ÖµÄ¹»¶à£¬×ÜÓÃÒ»¿îÊÊºÏµÄ :)
7£©°²È«
һЩÖ÷ÒªÔÔò£º
»ù´¡Éèʩģ¿éÓ¦¸Ãͨ¹ýAPI server½»»»Êý¾Ý¡¢ÐÞ¸Äϵͳ״̬£¬¶øÇÒÖ»ÓÐAPI
server¿ÉÒÔ·ÃÎʺó¶Ë´æ´¢£¨etcd£©¡£
°ÑÓû§·ÖΪ²»Í¬µÄ½ÇÉ«£ºDevelopers/Project Admins/Administrators¡£
ÔÊÐíDevelopers¶¨Òåsecrets ¶ÔÏ󣬲¢ÔÚpodÆô¶¯Ê±¹ØÁªµ½Ïà¹ØÈÝÆ÷¡£
ÒÔsecret ΪÀý£¬Èç¹ûkubeletҪȥpull ˽ÓоµÏñ£¬ÄÇôKubernetesÖ§³ÖÒÔÏ·½Ê½£º
ͨ¹ýdocker login Éú³É .dockercfg Îļþ£¬½øÐÐÈ«¾ÖÊÚȨ¡£
ͨ¹ýÔÚÿ¸önamespaceÉÏ´´½¨Óû§µÄsecret¶ÔÏó£¬ÔÚ´´½¨Podʱָ¶¨
imagePullSecrets ÊôÐÔ£¨Ò²¿ÉÒÔͳһÉèÖÃÔÚserviceAcouunt ÉÏ£©£¬½øÐÐÊÚȨ¡£
ÈÏÖ¤ £¨Authentication£©
API server Ö§³ÖÖ¤Êé¡¢token¡¢ºÍ»ù±¾ÐÅÏ¢ÈýÖÖÈÏÖ¤·½Ê½¡£
ÊÚȨ £¨Authorization£©
ͨ¹ýapiserverµÄ°²È«¶Ë¿Ú£¬authorization»áÓ¦Óõ½ËùÓÐhttpµÄÇëÇóÉÏ
AlwaysDeny¡¢AlwaysAllow¡¢ABACÈýÖÖģʽ£¬ÆäËûÐèÇó¿ÉÒÔ×Ô¼ºÊµÏÖAuthorizer½Ó¿Ú¡£
8£©¼à¿Ø
±È½ÏÀϵİ汾KubernetesÐèÒªÍâ½ÓcadvisorÖ÷Òª¹¦ÄÜÊǽ«nodeÖ÷»úµÄcontainer
metricsץȡ³öÀ´¡£ÔÚ½Ïеİ汾Àcadvior¹¦Äܱ»¼¯³Éµ½ÁËkubelet×é¼þÖУ¬kubeletÔÚÓëdocker½»»¥µÄͬʱ£¬¶ÔÍâÌṩ¼à¿Ø·þÎñ¡£
Kubernetes¼¯Èº·¶Î§ÄÚµÄ¼à¿ØÖ÷ÒªÓÉkubelet¡¢heapsterºÍstorage
backend£¨Èçinfluxdb£©¹¹½¨¡£Heapster¿ÉÒÔÔÚ¼¯Èº·¶Î§»ñÈ¡metricsºÍʼþÊý¾Ý¡£Ëü¿ÉÒÔÒÔpodµÄ·½Ê½ÔËÐÐÔÚk8sƽ̨ÀҲ¿ÉÒÔµ¥¶ÀÔËÐÐÒÔstandaloneµÄ·½Ê½¡£
×¢Ò⣺ heapsterĿǰδµ½1.0°æ±¾£¬¶ÔÓÚС¹æÄ£µÄ¼¯Èº¼à¿Ø±È½Ï·½±ã¡£µ«¶ÔÓڽϴó¹æÄ£µÄ¼¯Èº£¬heapsterĿǰµÄcache·½Ê½»á³Ôµô´óÁ¿ÄÚ´æ¡£ÒòΪҪ¶¨Ê±»ñÈ¡Õû¸ö¼¯ÈºµÄÈÝÆ÷ÐÅÏ¢£¬ÐÅÏ¢ÔÚÄÚ´æµÄÁÙʱ´æ´¢³ÉΪÎÊÌ⣬ÔÙ¼ÓÉÏheaspterÒªÖ§³Öapi»ñÈ¡ÁÙʱmetrics£¬Èç¹û½«heapsterÒÔpod·½Ê½ÔËÐУ¬ºÜÈÝÒ׳öÏÖOOM¡£ËùÒÔĿǰ½¨Ò鹨µôcache²¢ÒÔstandaloneµÄ·½Ê½¶ÀÁ¢³ök8sƽ̨¡£
DockOne¼¼Êõ·ÖÏí£¨Ê®Æß£©£º360µÄÈÝÆ÷»¯Ö®Â·
ÈÝÆ÷»¯¼¼Êõ×÷Ϊ¡°½Á¾ÖÕß¡±£¬ÊƱØÃæÁÙÊÊÅ乫˾ÒÑÓмܹ¹µÄÌôÕ½£¬±¾ÎĽ«Îª´ó¼Ò½éÉÜ360ÈçºÎÈÃDockerÂ䵨¡£Ö÷Òª°üÀ¨Èý·½ÃæÄÚÈÝ£ºÒ»£¬½áºÏ¹«Ë¾ÒµÎñÌØµã£¬ÈçºÎʹDockerÊÊÅäÏÖÓм¼Êõ¼Ü¹¹
£¬Íê³ÉÏßÉÏ»·¾³¿ìËÙ²¿ÊðÀ©ÈÝ£»¶þ£¬¡°ÈòúƷʧ°ÜµÄ¸üÁ®¼Û¡±£¬Ê¹ÓÃDocker¹¹½¨PaaS»·¾³¼ÓËÙÖÐСҵÎñ¿ìËÙ·õ»¯ÉÏÏߣ»Èý£¬Ê¹ÓÃDocker¼¼Êõ£¬ÔÚ¹¹½¨³ÖÐø¼¯³É»·¾³·½ÃæµÄһЩ»ýÀÛ¡£
ÈÝÆ÷»¯¼¼Êõ×÷Ϊ¡°½Á¾ÖÕß¡±£¬ÊƱØÃæÁÙÊÊÅ乫˾ÒÑÓмܹ¹µÄÌôÕ½£¬±¾ÎĽ«Îª´ó¼Ò½éÉÜ360ÈçºÎÈÃDockerÂ䵨¡£Ö÷Òª°üÀ¨Èý·½ÃæÄÚÈÝ£ºÒ»£¬½áºÏ¹«Ë¾ÒµÎñÌØµã£¬ÈçºÎʹDockerÊÊÅäÏÖÓм¼Êõ¼Ü¹¹
£¬Íê³ÉÏßÉÏ»·¾³¿ìËÙ²¿ÊðÀ©ÈÝ£»¶þ£¬¡°ÈòúƷʧ°ÜµÄ¸üÁ®¼Û¡±£¬Ê¹ÓÃDocker¹¹½¨PaaS»·¾³¼ÓËÙÖÐСҵÎñ¿ìËÙ·õ»¯ÉÏÏߣ»Èý£¬Ê¹ÓÃDocker¼¼Êõ£¬ÔÚ¹¹½¨³ÖÐø¼¯³É»·¾³·½ÃæµÄһЩ»ýÀÛ¡£
ÒÔDockerΪÖ÷µÄÈÝÆ÷»¯¼¼ÊõÏÖÔÚ¿Éν·çÉúË®Æð£¬´ó¼Ò¶¼¾õµÃËü¿ÉÄÜ»áµß¸²Õû¸öIT¸ñ¾Ö¡£ÎÒÃǸտªÊ¼½Ó´¥µ½DockerµÄʱºòÒ²¾õµÃËü·Ç³£ºÃ£¬ÓкܶàÓŵãÎüÒýÎÒÃÇ¡£ÒòΪËüµÄµß¸²ÐÔÎÒÃdzÆËüΪ¡°½Á¾ÖÕß¡±¡£
¸ÄÔì¡°½Á¾ÖÕß¡±Docker
ÎÒÃÇÏÈÀ´¿´¿´Õâλ½Á¾ÖÕßµÄÓŵ㣺
Namespace¡¢CGroupsÐéÄ⻯£¬ Ïà±È´«Í³ÐéÄ⻯»áÓиüºÃÐÔÄÜ£¬·´Ó³ÔÚÉú²ú»·¾³ÖоÍÊÇÄܸü´ó³Ì¶ÈµÄÀûÓÃ×ÊÔ´¡£
Æô¶¯Ëٶȿ죬ÐéÄâ»ú×î¿ìÒ²µÃ30Ãë-1·ÖÖÓ£¬ËüµÄÆô¶¯´´½¨¶¼ÊÇÃë¼¶¡£
¾µÏñ·Ö²ã¼¼Êõ£¬½â¾öÁË¿ìËÙ±ä¸ü»·¾³µÄÎÊÌâ¡£
ÕâЩÓŵãºÜÎüÒýÎÒÃÇ£¬ÎÒÃǷdz£Ï£Íû°ÑËüÓÃÔÚÉú²ú»·¾³ÖУ¬µ«ÊÇÎÒÃÇ·¢ÏÖÀíÏëºÜÃÀºÃ£¬ÏÖʵºÜ²Ð¿á¡£ÎÒÃÇ֮ǰ»ù´¡¼Ü¹¹¶¼ÊÇʹÓô«Í³ÐéÄâ»ú»¯¼¼Êõ¾ÍÊÇÐéÄâ»ú¡£
ÎÒÃÇҪʹÓÃDocker¾Í»áÃæÁÙÕ⼸¸öÎÊÌâ £º
²»ÄÜSSH£¬½ô¼±ÎÊÌâÔõôÅŲ飿
Ôõô¼à¿Ø£¿
»ù´¡·þÎñÈçºÎ¶Ô½Ó£¿
×îÖØÒªµÄÎÊÌ⣺ Õâ¶«Î÷Îȶ¨Ã´£¬ÏßÉÏÒµÎñµ±È»²»ÄܳöÎÊÌâ¡£
ËùÒÔ£¬ÔÚÓ¦ÓÃDockerµÄʱºò£¬ÎÒÃÇ·¸ÁËÓÌÔ¥£¬ÒòΪ°´ÕÕËüÍÆ¼öµÄ·½Ê½£¬ÎÒÃÇÎÞ·¨Ö±½ÓÁ¢Âí¾ÍÔÚÏßÉÏÒµÎñʹÓá£ÒòΪDocker±¾ÉíÒ²¶ÔÒµÎñµÄ¼Ü¹¹Éè¼ÆÓÐÒ»¶¨ÒªÇ󣬱ÈÈçÎÒÃdz£ËµµÄÈÝÆ÷ÎÞ״̬£¬ÈÝÆ÷Öв»ÒªÁôÖмäÊý¾Ý¡£ÎÒÃÇ·¢ÏÖ¹«Ë¾µÄÒµÎñ¼Ü¹¹¸ÄÔìÆðÀ´À§ÄѺܴó£¬Éæ¼°µ½·½·½ÃæÃ棬ËùÒÔÎÒÃǾö¶¨ÒªDockerÈ¥ÊÊÓ¦¹«Ë¾µÄ¼Ü¹¹¡£
½ÓÏÂÀ´ÎÒÃǾÍÊÇÒª½â¾öDocker¼¼Êõ¡±Â䵨¡±µÄÎÊÌâ¡£
ÎÒÃǶÔDocker¸ÄÔìµãÖ÷ÒªÓУº
ÈÝÆ÷ÄÚ²¿°ó¶¨¶ÀÁ¢IP¡£
ÈÝÆ÷ÄÚ²¿¿ªÆô¶à½ø³Ì·þÎñ¡£
×Ô¶¯Ìí¼Ó¼à¿Ø¡£
CPUÅä¶îÓ²ÏÞÖÆ¡£
ÈÝÆ÷°ó¶¨¶ÀÁ¢IPÕâÑùÍⲿ¿ÉÖ±½ÓSSHÁË¡£
ÎÒÃÇ¿¼ÂÇÔÚÈÝÆ÷ÄÚ²¿ÔËÐжà¸ö½ø³Ì·þÎñ£¬ÒòΪĬÈÏÈÝÆ÷Ö»¿ªÆôÒ»¸ö½ø³Ì£¬ÕâÎÞ·¨Âú×ãÎÒÃÇÒªÇó£¬ËùÒÔÎÒÃǴ󵨽øÐÐÁ˸ÄÔì¡£ÎÒÃÇÉõÖÁÔÚ¾µÏñÀïʵÏÖÁËchkconfigÈÃÒÔǰµÄRPM°üÔÉú¿ÉÓá£
×Ô¶¯Ìí¼Ó¼à¿ØÈô´½¨µÄÈÝÆ÷×Ô¶¯Ìí¼Óµ½ZabbixÖС£CPUÅä¶îÓ²ÏÞÖÆ Docker
1.7°æ±¾ÒѾ֧³ÖÁË£¬ÎÒÃÇÔÚÕâ֮ǰ×Ô¼ºÊµÏÖÁËÒ»Ìס£
¸ÄÔìDockerÖ§³ÖÕâЩ¹¦Äܺó£¬ÎÒÃÇÓÖ¿ª·¢ÁËÒ»Ì×µ÷¶Èϵͳ£¬¸ºÔð¹ÜÀíµ÷¶ÈÔÚ¼¯ÈºÉÏÈçºÎ´´½¨ÈÝÆ÷£¬ÎÒÃÇÒ²µ÷ÑÐÁËһЩ¿ªÔ´µÄµ÷¶Èϵͳ£¬·¢ÏÖ¶¼²»Âú×ãÐèÇó£¬ËùÒÔ×Ô¼º¿ª·¢ÁËÒ»Ìס£
ͨ¹ýÕâЩÊÖ¶ÎÎÒÃǾͿÉÒÔÈÃDocker¼¼Êõ¡°Â䵨¡±ÁË£¬¶ø´øÀ´µÄºÃ´¦ÊÇ£¬Ö®Ç°µÄÌåϵÎÒÃÇÒªÉÏÏßеÄÒµÎñ´óÔ¼ÐèÒª40·ÖÖÓ£¬Ê¹ÓÃDockerËõ¶Ìµ½ÁË5·ÖÖÓ¡£
ÕâÊÇ·ÖÏíµÄµÚÒ»²¿·ÖÒòΪ¡°½Á¾ÖÕß¡±DockerʹÓÃÓöµ½ÁËÀ§¾³£¬ËùÒÔÎÒÃǶÔËü½øÐÐÁËһЩ¸ÄÔ죬¸üºÃÊÊÅ乫˾³¡¾°£¬Èü¼Êõ¡°Â䵨¡±¡£
»ùÓÚDocker×öÒ»¸öÄÚ²¿PaaSƽ̨
½ô½Ó×ÅÎÒÃÇ»ùÓÚDocker×öÁËÒ»¸öÄÚ²¿PaaSƽ̨¡£¹«Ë¾Ã¿Ìì»áÉÏÏߺܶàÒµÎñ£¬ÕâЩҵÎñÓÐЩÊÇÌåÁ¿ºÜ´óµÄÖØÒªÒµÎñ£¬ÓÐЩÊÇ´øÓÐÊÔ´íÐÔÖʵÄСҵÎñ¡£
´«Í³ÒµÎñÉÏÏߵIJ½Öè»á·Ç³£µÃÑϽ÷£¬Á÷³Ì»á±È½Ï³¤£¬ÕâЩÁ÷³ÌÆäʵҲ¶ÔÒµÎñÎȶ¨ÐÔ»áÓб£ÕÏ¡£ÓÐЩÊÔ´íÐÔÖʵÄСҵÎñ£¬Ê¹ÓÃͬÑùµÄÁ÷³Ì±äµÃ²»Ì«ºÏÊÊ£¬ËùÒÔÎÒÃǾÍÏë¼ÓËÙСҵÎñÉÏÏßÁ÷³Ì£¬ÈÃËûÃÇ¿ÉÒÔ¿ìËÙÉÏÏߣ¬ÑéÖ¤×Ô¼ºµÃ¼ÛÖµ¡£»ùÓÚÕâÖÖ¿¼ÂÇ£¬¶øÇÒDockerÌìÉúµÄÌØµã¾ÍÌØ±ðÊʺϸÉÕâ¸ö¡£
ÕâÊǽçÃæµÄÒ»¸ö½ØÍ¼£¬Ö÷ÒªÊÇǰ¶ËWeb UIÈ¥·ÃÎÊÒ»¸öµ÷¶È²ã £¬µ÷¶È²ãͨ¹ýµ÷ÓÃDocker
APIÀ´´´½¨ÈÝÆ÷¡£Ä¿Ç°PaaSƽ̨֧³ÖPHP¡¢Node.js¡¢Python¡¢JavaµÈÓïÑÔ¡£

³ýÁË´´½¨ÈÝÆ÷£¬ÎÒÃÇ»¹ÐèÒª£¬´´½¨Git²Ö¿â¡¢ÅäÖ÷ÃÎÊ´úÀíµÈ£¬×ÜÖ®Ñз¢Ò»¼ü¾Í¿ÉÒÔÈÃÒµÎñ½øÈë´ýÉÏÏß״̬£¬Ö»ÒªËû´«Íê´úÂë¾Í¿ÉÒÔÉÏÏßÁË¡£
ĿǰÕâ¸öƽ̨ÅÜÁË300+ÒµÎñ£¬ÈúܶàÑз¢Ö»ÒªÓÐÒ»¸öidea£¬¾Í¿ÉÒÔ¿ìËÙʵʩÉÏÏߣ¬ºÜÊÜËûÃÇ»¶Ó¡£
ÕâÒ²ÊÇÎÒÃÇÓ¦ÓÃDockerµÄµÚ¶þ²¿·Ö£¬Í¨¹ý˽ÓÐPaaSƽ̨£¬¼ÓËÙÒµÎñ·õ»¯¡£
¹ØÓÚ³ÖÐø¼¯³É
µÚÈý²¿·ÖÊǹØÓÚ³ÖÐø¼¯³É¡£
³ÖÐø¼¯³Éµ±È»ÊÇDocker×î´¿´âµÄÍæ·¨ÁË£¬Í¨¹ý¡ºDockerfile-¹¹½¨¾µÏñ-´´½¨ÐÂÈÝÆ÷¡»À´Íê³É»·¾³µÄ±ä¸ü¡£
Õâ¿é±È½Ï¸´ÔÓ£¬ÎÒÃÇ´óÖ·ÖÁË9¸öÄ£¿é£¬±ÈÈçµ÷¶ÈÄ£¿é¡¢¼à¿ØÄ£¿é¡¢´æ´¢Ä£¿éµÈ¡£
Ê×ÏÈÎÒÃÇ×öÁËÒ»¸öÅäÖÃת»»Ä£¿éÀ´×ª»»Dockerfile£¬ÕâÑù¼´¿ÉÒÔͳһ¾µÏñ¹¹½¨±ê×¼£¬Í¬Ê±Ò²½µµÍÁ˱àдDockerfileµÄѧϰ³É±¾¡£
µ÷¶ÈÄ£¿é¾ÍÖ±½ÓÓõÄMesosºÍMarathon£¬¾µÏñRegistryÖ±½ÓʹÓÃÁË
Registry V2ÒòΪËüÐÔÄܸüºÃ¶Ô¸ß²¢·¢Ö§³ÖÒ²ºÜºÃ£¬×îºóÊǾµÏñ¹¹½¨Ä£¿é£¬Ê¹ÓõÄÊÇJenkins CI¡£
µ«ÊÇÎÒÃÇ·¢ÏÖÒ»¸öÎÊÌ⣺¾µÏñ¹¹½¨Ôڸ߲¢·¢ÏÂÆäʵ²¢²»¿ì¡£ ±ÈÈç×°Ò»¸öRPM°ü£¬SSH¿Ï¶¨»á±ÈÖØÐÂbuild¿ìµÃ¶à¡£ËùÒÔÎÒÃÇ×öÁ˺ܶàÓÅ»¯ÔÚ¾µÏñ¹¹½¨ÕâÒ»¿é£¬ÏÖÔÚ½á¹ûÊÇ100¸öÈÎÎñͬʱ¹¹½¨ÎÒÃÇÒ²ÄÜ´ïµ½ºÍ´«Í³¼¯Èº¹ÜÀíÈçPuppetÒ»ÑùµÄЧÂÊ¡£
DockOne¼¼Êõ·ÖÏí£¨Ê®°Ë£©£ºFlannel What&How
FlannelÊÇ CoreOS ÍŶÓÕë¶Ô Kubernetes Éè¼ÆµÄÒ»¸ö¸²¸ÇÍøÂ磨Overlay
Network£©¹¤¾ß£¬ÆäÄ¿µÄÔÚÓÚ°ïÖúÿһ¸öʹÓà Kuberentes µÄ CoreOS Ö÷»úÓµÓÐÒ»¸öÍêÕûµÄ×ÓÍø¡£Õâ´ÎµÄ·ÖÏíÄÚÈݽ«´ÓFlannelµÄ½éÉÜ¡¢¹¤×÷ÔÀí¼°°²×°ºÍÅäÖÃÈý·½ÃæÀ´½éÉÜÕâ¸ö¹¤¾ßµÄʹÓ÷½·¨¡£
µÚÒ»²¿·Ö£ºFlannel½éÉÜ
FlannelÊÇCoreOSÍŶÓÕë¶ÔKubernetesÉè¼ÆµÄÒ»¸öÍøÂç¹æ»®·þÎñ£¬¼òµ¥À´Ëµ£¬ËüµÄ¹¦ÄÜÊÇÈü¯ÈºÖеIJ»Í¬½ÚµãÖ÷»ú´´½¨µÄDockerÈÝÆ÷¶¼¾ßÓÐÈ«¼¯ÈºÎ¨Ò»µÄÐéÄâIPµØÖ·¡£
ÔÚKubernetesµÄÍøÂçÄ£ÐÍÖУ¬¼ÙÉèÁËÿ¸öÎïÀí½ÚµãÓ¦¸Ã¾ß±¸Ò»¶Î¡°ÊôÓÚͬһ¸öÄÚÍøIP¶ÎÄÚ¡±µÄ¡°×¨ÓõÄ×ÓÍøIP¡±¡£ÀýÈ磺
½ÚµãA£º10.0.1.0/24 ½ÚµãB£º10.0.2.0/24 ½ÚµãC£º10.0.3.0/24 |
µ«ÔÚĬÈϵÄDockerÅäÖÃÖУ¬Ã¿¸ö½ÚµãÉϵÄDocker·þÎñ»á·Ö±ð¸ºÔðËùÔÚ½ÚµãÈÝÆ÷µÄIP·ÖÅä¡£ÕâÑùµ¼ÖµÄÒ»¸öÎÊÌâÊÇ£¬²»Í¬½ÚµãÉÏÈÝÆ÷¿ÉÄÜ»ñµÃÏàͬµÄÄÚÍâIPµØÖ·¡£²¢Ê¹ÕâЩÈÝÆ÷Ö®¼äÄܹ»Ö®¼äͨ¹ýIPµØÖ·Ï໥ÕÒµ½£¬Ò²¾ÍÊÇÏ໥pingͨ¡£
FlannelµÄÉè¼ÆÄ¿µÄ¾ÍÊÇΪ¼¯ÈºÖеÄËùÓнڵãÖØÐ¹滮IPµØÖ·µÄʹÓùæÔò£¬´Ó¶øÊ¹µÃ²»Í¬½ÚµãÉϵÄÈÝÆ÷Äܹ»»ñµÃ¡°Í¬ÊôÒ»¸öÄÚÍø¡±ÇÒ¡±²»Öظ´µÄ¡±IPµØÖ·£¬²¢ÈÃÊôÓÚ²»Í¬½ÚµãÉϵÄÈÝÆ÷Äܹ»Ö±½Óͨ¹ýÄÚÍøIPͨÐÅ¡£
µÚ¶þ²¿·Ö£ºFlannelµÄ¹¤×÷ÔÀí
FlannelʵÖÊÉÏÊÇÒ»ÖÖ¡°¸²¸ÇÍøÂç(overlay network)¡±£¬Ò²¾ÍÊǽ«TCPÊý¾Ý°ü×°ÔÚÁíÒ»ÖÖÍøÂç°üÀïÃæ½øÐзÓÉת·¢ºÍͨÐÅ£¬Ä¿Ç°ÒѾ֧³ÖUDP¡¢VxLAN¡¢AWS
VPCºÍGCE·ÓɵÈÊý¾Ýת·¢·½Ê½¡£
ĬÈϵĽڵã¼äÊý¾ÝͨÐÅ·½Ê½ÊÇUDPת·¢£¬ÔÚFlannelµÄGitHubÒ³ÃæÓÐÈçϵÄÒ»ÕÅÔÀíͼ£º

ÕâÕÅͼµÄÐÅÏ¢Á¿ºÜÈ«£¬ÏÂÃæ¼òµ¥µÄ½â¶Áһϡ£
Êý¾Ý´ÓÔ´ÈÝÆ÷Öз¢³öºó£¬¾ÓÉËùÔÚÖ÷»úµÄdocker0ÐéÄâÍø¿¨×ª·¢µ½flannel0ÐéÄâÍø¿¨£¬ÕâÊǸöP2PµÄÐéÄâÍø¿¨£¬flanneld·þÎñ¼àÌýÔÚÍø¿¨µÄÁíÍâÒ»¶Ë¡£
Flannelͨ¹ýEtcd·þÎñά»¤ÁËÒ»ÕŽڵã¼äµÄ·ÓÉ±í£¬ÔÚÉÔºóµÄÅäÖò¿·ÖÎÒÃÇ»á½éÉÜÆäÖеÄÄÚÈÝ¡£
Ô´Ö÷»úµÄflanneld·þÎñ½«Ô±¾µÄÊý¾ÝÄÚÈÝUDP·â×°ºó¸ù¾Ý×Ô¼ºµÄ·ÓɱíͶµÝ¸øÄ¿µÄ½ÚµãµÄflanneld·þÎñ£¬Êý¾Ýµ½´ïÒÔºó±»½â°ü£¬È»ºóÖ±½Ó½øÈëÄ¿µÄ½ÚµãµÄflannel0ÐéÄâÍø¿¨£¬È»ºó±»×ª·¢µ½Ä¿µÄÖ÷»úµÄdocker0ÐéÄâÍø¿¨£¬×îºó¾ÍÏñ±¾»úÈÝÆ÷ͨÐÅһϵÄÓÐdocker0·Óɵ½´ïÄ¿±êÈÝÆ÷¡£
ÕâÑùÕû¸öÊý¾Ý°üµÄ´«µÝ¾ÍÍê³ÉÁË£¬ÕâÀïÐèÒª½âÊÍÈý¸öÎÊÌâ¡£
µÚÒ»¸öÎÊÌ⣬UDP·â×°ÊÇÔõôһ»ØÊ£¿
ÎÒÃÇÀ´¿´ÏÂÃæÕâ¸öͼ£¬ÕâÊÇÔÚÆäÖÐÒ»¸öͨÐŽڵãÉÏץȡµ½µÄpingÃüÁîͨÐÅÊý¾Ý°ü¡£¿ÉÒÔ¿´µ½ÔÚUDPµÄÊý¾ÝÄÚÈݲ¿·ÖÆäʵÊÇÁíÒ»¸öICMP£¨Ò²¾ÍÊÇpingÃüÁµÄÊý¾Ý°ü¡£

ÔʼÊý¾ÝÊÇÔÚÆðʼ½ÚµãµÄFlannel·þÎñÉϽøÐÐUDP·â×°µÄ£¬Í¶µÝµ½Ä¿µÄ½Úµãºó¾Í±»ÁíÒ»¶ËµÄFlannel·þÎñ»¹Ô³ÉÁËÔʼµÄÊý¾Ý°ü£¬Á½±ßµÄDocker·þÎñ¶¼¸Ð¾õ²»µ½Õâ¸ö¹ý³ÌµÄ´æÔÚ¡£
µÚ¶þ¸öÎÊÌ⣬Ϊʲôÿ¸ö½ÚµãÉϵÄDocker»áʹÓò»Í¬µÄIPµØÖ·¶Î£¿
Õâ¸öÊÂÇé¿´ÆðÀ´ºÜ¹îÒ죬µ«ÕæÏàÊ®·Ö¼òµ¥¡£ÆäʵֻÊǵ¥´¿µÄÒòΪFlannelͨ¹ýEtcd·ÖÅäÁËÿ¸ö½Úµã¿ÉÓõÄIPµØÖ·¶Îºó£¬ÍµÍµµÄÐÞ¸ÄÁËDockerµÄÆô¶¯²ÎÊý£¬¼ûÏÂͼ¡£

Õâ¸öÊÇÔÚÔËÐÐÁËFlannel·þÎñµÄ½ÚµãÉϲ鿴µ½µÄDocker·þÎñ½ø³ÌÔËÐвÎÊý¡£
×¢ÒâÆäÖеġ°--bip=172.17.18.1/24¡±Õâ¸ö²ÎÊý£¬ËüÏÞÖÆÁËËùÔÚ½ÚµãÈÝÆ÷»ñµÃµÄIP·¶Î§¡£
Õâ¸öIP·¶Î§ÊÇÓÉFlannel×Ô¶¯·ÖÅäµÄ£¬ÓÉFlannelͨ¹ý±£´æÔÚEtcd·þÎñÖеļǼȷ±£ËüÃDz»»áÖØ¸´¡£
µÚÈý¸öÎÊÌ⣬ΪʲôÔÚ·¢ËͽڵãÉϵÄÊý¾Ý»á´Ódocker0·Óɵ½flannel0ÐéÄâÍø¿¨£¬ÔÚÄ¿µÄ½Úµã»á´Óflannel0·Óɵ½docker0ÐéÄâÍø¿¨£¿
ÎÒÃÇÀ´¿´Ò»ÑÛ°²×°ÁËFlannelµÄ½ÚµãÉϵÄ·ÓÉ±í¡£ÏÂÃæÊÇÊý¾Ý·¢ËͽڵãµÄ·ÓÉ±í£º

Õâ¸öÊÇÊý¾Ý½ÓÊÕ½ÚµãµÄ·ÓÉ±í£º

ÀýÈçÏÖÔÚÓÐÒ»¸öÊý¾Ý°üÒª´ÓIPΪ172.17.18.2µÄÈÝÆ÷·¢µ½IPΪ172.17.46.2µÄÈÝÆ÷¡£¸ù¾ÝÊý¾Ý·¢ËͽڵãµÄ·ÓÉ±í£¬ËüÖ»Óë172.17.0.0/16Æ¥ÅäÕâÌõ¼Ç¼ƥÅ䣬Òò´ËÊý¾Ý´Ódocker0³öÀ´ÒÔºó¾Í±»Í¶µÝµ½ÁËflannel0¡£Í¬ÀíÔÚÄ¿±ê½Úµã£¬ÓÉÓÚͶµÝµÄµØÖ·ÊÇÒ»¸öÈÝÆ÷£¬Òò´ËÄ¿µÄµØÖ·Ò»¶¨»áÂäÔÚdocker0¶ÔÓÚµÄ172.17.46.0/24Õâ¸ö¼Ç¼ÉÏ£¬×ÔÈ»µÄ±»Í¶µÝµ½ÁËdocker0Íø¿¨¡£
µÚÈý²¿·Ö£ºFlannelµÄ°²×°ºÍÅäÖÃ
FlannelÊÇGolang±àдµÄ³ÌÐò£¬Òò´ËµÄ°²×°Ê®·Ö¼òµ¥¡£
´Óhttps://github.com/coreos/flannel/releasesºÍhttps://github.com/coreos/etcd/releases·Ö±ðÏÂÔØFlannelºÍEtcdµÄ×îа汾¶þ½øÖưü¡£
½âѹºó½«FlannelµÄ¶þ½øÖÆÎļþ¡°flanneld¡±ºÍ½Å±¾Îļþ¡°mk-docker-opts.sh¡±¡¢ÒÔ¼°EtcdµÄ¶þ½øÖÆÎļþ¡°etcd¡±ºÍ¡°etcdctl¡±·Åµ½ÏµÍ³µÄPATHĿ¼ÏÂÃæ°²×°¾ÍËãÍê³ÉÁË¡£
ÅäÖò¿·ÖÒª¸´ÔÓһЩ¡£
Ê×ÏÈÆô¶¯Etcd£¬²Î¿¼https://github.com/coreos/etcd ... overy¡£
·ÃÎÊÕâ¸öµØÖ·£ºhttps://discovery.etcd.io/new?size=3 »ñµÃÒ»¸ö¡°DiscoveryµØÖ·¡±
ÔÚÿ¸ö½ÚµãÉÏÔËÐÐÒÔÏÂÆô¶¯ÃüÁ
etcd -initial-advertise-peer-urls http://<µ±Ç°½ÚµãIP>:2380 -listen-peer-urls
http://<µ±Ç°½ÚµãIP>:2380 -listen-client-urls http://<µ±Ç°½ÚµãIP>:2379,
http://<µ±Ç°½ÚµãIP>:2379 -advertise-client-urls
http://<µ±Ç°½ÚµãIP>:2379 -discovery <¸Õ¸Õ»ñµÃµÄDiscoveryµØÖ·> & |
Æô¶¯ÍêEtcdÒԺ󣬾ͿÉÒÔÅäÖÃFlannelÁË¡£
FlannelµÄÅäÖÃÐÅϢȫ²¿ÔÚEtcdÀïÃæ¼Ç¼£¬ÍùEtcdÀïÃæÐ´ÈëÏÂÃæÕâ¸ö×î¼òµ¥µÄÅäÖã¬Ö»Ö¸¶¨FlannelÄÜÓÃÀ´·ÖÅä¸øÃ¿¸öDocker½ÚµãµÄÄâIPµØÖ·¶Î£º
etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }' |
È»ºóÔÚÿ¸ö½Úµã·Ö±ðÆô¶¯Flannel£º
×îºóÐèÒª¸øDocker¶¯Ò»µãÊֽţ¬ÐÞ¸ÄËüµÄÆô¶¯²ÎÊýºÍdocker0µØÖ·¡£
ÔÚÿ¸ö½ÚµãÉÏÖ´ÐУº
sudo mk-docker-opts.sh -i source /run/flannel/subnet.env sudo rm /var/run/docker.pid sudo ifconfig docker0 ${FLANNEL_SUBNET} |
ÖØÆô¶¯Ò»´Îdocker£¬ÕâÑùÅäÖþÍÍê³ÉÁË¡£
ÏÖÔÚÔÚÁ½¸ö½Úµã·Ö±ðÆô¶¯Ò»¸ödockerÈÝÆ÷£¬ËüÃÇÖ®¼äÒѾͨ¹ýIPµØÖ·Ö±½ÓÏ໥pingͨÁË¡£
µ½´Ë£¬Õû¸öFlannel¼¯ÈºÒ²¾ÍÕý³£ÔËÐÐÁË¡£
×îºó£¬Ç°Ãæ·´¸´Ìáµ½¹ýFlannelÓÐÒ»¸ö±£´æÔÚEtcdµÄ·ÓÉ±í£¬¿ÉÒÔÔÚEtcdÊý¾ÝÖÐÕÒµ½ÕâЩ·ÓɼǼ£¬ÈçÏÂͼ¡£

|