½üÁ½Ä꣬ÈÝÆ÷ÒÑ¾Ëæ×Å
Docker ¼¼ÊõµÄ´«²¥»ð±éÈ«Çò£¬ÏÖÔÚÒѾÓÐÔ½À´Ô½¶àµÄÆóÒµÓû§ÔÚ¿ª·¢¡¢²âÊÔÉõÖÁÉú²ú»·¾³ÖпªÊ¼²ÉÓà Docker
µÈÈÝÆ÷¼¼Êõ¡£
È»¶ø£¬Ä¿Ç°Ö÷Á÷µÄ Docker ¹ÜÀíÆ½Ì¨£¬±ÈÈç K8S£¬µ±ÆóÒµÏë¹¹½¨Ò»Ì×ÍøÂç·½°¸£¬ÐèÒª¾«Í¨ Linux
ÌṩµÄ¸÷Öָ߼¶ÍøÂ繦ÄÜ£¬Õâ¸ö¼¼ÊõÃż÷Ì«¸ßÁË¡£ÌرðÊǶÔרעÓÚÒµÎñ¿ª·¢µÄ Docker Óû§¶øÑÔ£¬ÕâÀà²Ù×÷ÍùÍùÏԵùýÓÚ¸´ÔÓ¡£
¶øÇÒ£¬ÓÉÓÚÔÚÐé»úÖв¿ÊðÈÝÆ÷£¬ÔÆÆ½Ì¨ºÍ Docker ƽ̨¶¼ÓÐ×Ô¼ºµÄÐéÄâ»¯ÍøÂçʵÏÖ·½°¸£¬¶þÕß¹¦ÄÜÖØµþ£¬Ê¹ÓÃʱ»áÏ໥ǶÌ×£¬µ¼ÖÂµÄÆäÍøÂçÐÔÄÜËðºÄ·Ç³£ÑÏÖØ£¬ÉõÖÁ´ïµ½
80%¡£
ËùÒÔ£¬ËäÈ»ÈÝÆ÷¼¼ÊõÕýÔÚÖð²½±»´ó¼ÒÈÏ¿ÉÓëÓ¦Ó㬵«ÆäÍøÂçÐÔÄÜÒÔ¼°ÅäÖõĸ´Ôӳ̶ÈÒ»Ö±¶¼ÔÚ±»´ó¼ÒËùÚ¸²¡¡£½ñÌìµÄÄÚÈÝ£¬½«»á¸ø´ó¼Ò½éÉÜÒ»ÖÖÈÝÆ÷²¿Êð·½°¸£¬°ïÖú´ó¼Ò½â¾öÍøÂçÕâ¸öÄÑÌâ¡£
DockerµÄÍøÂçÄ£Ðͼܹ¹
Ê×ÏÈ£¬ÎÒÃÇÏÈ¿´¿´ Docker ÌṩÁËÄÄÐ©ÍøÂ繦ÄÜ£¬Docker µÄÍøÂçÄ£ÐÍÊÇÕâÑùµÄ:

Docker µÄÍøÂç½á¹¹·ÖΪ 3 ¸ö²ã´Î£ºNetwork¡¢Endpoint ºÍ Container¡£¶Ô±Èµ½ÎïÀíÉ豸¿ÉÒÔÕâôÀí½â£ºNetwork
Êǽ»»»»ú£¬Endpoint ÊÇÍø¿¨£¬Container ¾ÍÊÇ·þÎñÆ÷¡£
¾ö¶¨ Network Õâ¸ö½»»»»úµÄ¹¤×÷·½Ê½µÄ×é¼þ£¬¾ÍÊÇ Network Driver¡£³£ÓÃµÄ Driver
ÓÐÁ½¸ö£º
1.Bridge
2.Overlay
Bridge Driver
Bridge Driver ÊÇÖֱȽÏÖ±½ÓµÄ·½Ê½£ºBridge Ö¸µÄÊÇ Linux Kernel ʵÏÖµÄÐé»ú½»»»»ú¡£Ã¿¸öÍøÂçÔÚËÞÖ÷»úÉÏÓÐÒ»¸ö
Bridge ʵÀý£¬Ä¬ÈÏÊÇ Docker0£¬ÓжÔÓ¦µÄ IP µØÖ·ºÍÍø¶Î£¬Ã¿¸ö Docker ʵÀý´ÓÍø¶ÎÀïÃæ·ÖÅäÒ»¸öµØÖ·¡£½á¹¹ÈçÏ£º

ÔÚͬһ¸ö Bridge Ï嵀 Endpoint ÊÇÒ»¸ö¶þ²ãÍøÂ磬ҪʵÏÖ¿çËÞÖ÷»úµÄ Endpoint Ö®¼äͨÐÅ£¬Ö»ÄÜ×ßÈý²ãÍøÂ磬Ҳ¾ÍÊÇͨ¹ý·ÓÉת·¢¹ýÈ¥¡£Òª¶ÔÍâÌṩ·þÎñ£¬»¹ÐèÒª¶ÔËÞÖ÷»úµÄ
IP ¶Ë¿Ú×öת»»(Nat)¡£ÕâÖÖÇé¿öÏÂÖ÷ÒªÍøÂçÐÔÄÜËðʧ·¢ÉúÔÚ¶Ë¿Úת»»(Nat)ºÍ·ÓÉÉÏÃæ¡£
ͬʱÕâÒ²ºÍÇàÔÆ SDN 1.0 ÀïÃæµÄ»ù´¡ÍøÂçʵÏÖ·½Ê½ÊÇÍêȫһÑù£¬ÓŵãÊǽṹ¼òµ¥¿É¿¿£¬È±µãÒ²ºÜÃ÷ÏÔ:
²»ÄܰѶà¸öËÞÖ÷»úÁ¬³ÉÒ»¸ö¶þ²ãÍøÂç¡£Õâ¸öÎÊÌâ»áµ¼Ö Docker ʵÀýµÄ IP µØÖ·£¬±ØÐë¸úµ±Ç°ËÞÖ÷»ú¶¨ÒåµÄÍø¶ÎÒ»Ö¡£Èç¹ûÆô¶¯µ½±ðµÄËÞÖ÷»úÉÏ£¬IP
¾ÍÐèÒª¸ü»»¡£
Overlay Driver
Overlay Driver µÄ×÷ÓÃÊǰÑλÓÚ¶à¸öËÞÖ÷»úµÄ Docker ʵÀýÁ¬½ÓÔÚÒ»¸öÐéÄâµÄ¶þ²ãÍøÂçÀïÃæ¡£Ïà±È
Bridge£¬ÔÚ¹¦ÄÜÉÏÓÐÒ»¶¨½ø²½£¬±¾ÖÊÉÏÊÇÒ»¸ö·Ö²¼Ê½µÄÐéÄâ½»»»»ú¡£
¾Ù¸öËÍ¿ìµÝµÄÀý×Ó£¬·½±ã´ó¼ÒÀí½â£ºÓеĹ«Ë¾¶ÔÔ±¹¤ÌṩÄÚ²¿ÓʼþµÄ·þÎñ£¬Î»ÓÚ²»Í¬Ð´×ÖÂ¥µÄÔ±¹¤¿ÉÒÔÓù¤Î»ºÅ»¥·¢Óʼþ¡£¹«Ë¾µÄÊÕ·¢ÊÒÄõ½Óʼþºó£¬»áÖØÐÂÔÙ´ò¸ö°ü£¬ÉÏÃæÐ´×ÅË«·½Ð´×ÖÂ¥µÄµØÖ·£¬½»¸øÕæÕýµÄ¿ìµÝ¹«Ë¾È¥Í¶µÝ¡£ÊÕ¼þ·½µÄÊÕ·¢ÊÒ»áÄõ½Óʼþºó£¬»á²ðµôÍâÃæµÄÐŷ⣬°ÑÀïÃæµÄÓʼþ°´¹¤Î»ºÅË͸øÊÕ¼þµÄÔ±¹¤¡£
ÕâÀý×ÓÀïÃæ£¬¹¤Î»ºÅ¾ÍÊÇ Underlay µÄµØÖ·£¬ д×ÖÂ¥µÄµØÖ·ÊÇ Overlay µÄµØÖ·¡£Docker
µÄÕâ¸öÐéÄâ¶þ²ãÍøÂ磬¾ÍÊÇÆóÒµÄÚ²¿Óʼþ£¬µ«ÊÇÕæÕýÅɼþµÄ»¹ÊÇ¿ìµÝ¹«Ë¾¡£¸úÆÕͨ¿ìµÝÏà±È£¬¶àÁ˸ö»·½Ú£ºÊÕ·¢ÊÒ¶ÔÓʼþÖØÐ°ü×°£¬²»½ö´ò°ü·Ñʱ¼ä£¬¶àµÄ°ü×°Ò²Õ¼ÁËÖØÁ¿£¬Ò²¾Í´øÀ´Á˶îÍâµÄÐÔÄÜËðʧ¡£
Ŀǰ£¬Overlay ģʽµÄÐéÄâÍøÂçÓ¦ÓÃÒѾºÜÆÕ±é£¬ÇàÔÆ¸øÓû§ÌṩµÄÐéÄâ¶þ²ãÍøÂçÒ²ÊÇÏàͬµÄ¹¤×÷ÔÀí¡£
ÈÝÆ÷µÄ²¿Êð·½Ê½
Docker ĿǰÓÐÁ½ÖÖ·½Ê½²¿Êð£º
1.˽Óл·¾³ÎïÀí»ú²¿Êð
2.¹«ÓÐÔÆÐéÄâ»ú²¿Êð
½ñÌìºÍ´ó¼Ò·ÖÏíµÄ¾ÍÊÇΪʲôҪÔÚÔÆÆ½Ì¨Éϲ¿Êð Docker¡£
ËäÈ»¿´ÆðÀ´ÔÚ¹«ÓÐÔÆµÄÐéÄâ»ú²¿Êð Docker µÄ×ö·¨±È½ÏÆæÝ⣬ĿǰҲûÓй«ÓÐÔÆÄÜÈÃÓû§Ö±½Ó²¿Êð Docker
ÔÚÎïÀí»úÉÏ£¬µ±È»£¬Softlayer ÕâÖÖÎïÀí»úÍйܵÄÔÆ³ýÍâ¡£
ÒòΪ Docker ±¾ÉíµÄ°²È«ÐÔ»¹²»¹»ÈÃÈË·ÅÐÄ¡£ËäÈ» Docker ÒѾÓи÷ÖÖ°²È«±£»¤£¬°üÀ¨ Namespace
ÌṩµÄ¸ôÀë»úÖÆ¡¢Selinux¡¢Apparmor µÈ°²È«»úÖÆ£¬ÒÔ¼°×î½ü²ÅÓеÄUnprivileged Container
¹¦ÄÜÀ´¿ØÖÆ Docker ʵÀýÔÚËÞÖ÷»úÉϵÄÓû§È¨ÏÞ£¬µ«ÊÇÓÉÓÚÈÝÆ÷µÄ±¾ÖÊÊǸúËÞÖ÷»ú¹²ÓÃͬһ¸ö Linux
Kernel£¬Ò»µ© Kernel ±¾ÉíÓа²È«Â©¶´£¬¾ÍÓпÉÄܱ» Docker Óû§ÀûÓã¬ÇÖÈëµ½ÔÆÆ½Ì¨µÄÎïÀí»ú¡£
±ÈÈ缸¸öÔÂǰ·¢ÏÖµÄ COW ©¶´£¬¾ÍÓпÉÄÜÈà Docker ʵÀý»ñµÃÎïÀí»úµÄ Root ȨÏÞ£¬ÊµÏÖÈÝÆ÷µÄ¡°Ô½Óü¡±¡£Õâ¸ö©¶´´æÔÚÁËÊ®¼¸Äê²Å±»ÈË·¢ÏÖ£¬ÍêÈ«ÓпÉÄÜ»¹ÓкܶàÀàËÆÂ©¶´´æÔÚ£¬Ö»ÊÇûÓб»¹«¿ª¶øÒÑ¡£
ËùÒÔ£¬¹«ÓÐÔÆÖ±½ÓÈÃÓû§ÔÚ¶à×â»§µÄÎïÀí»úÉÏÔËÐÐ Docker£¬ÊǼ«²»°²È«µÄ×ö·¨¡£
Òò´Ë£¬ÒªÔÚ¹«ÓÐÔÆÊ¹Óà Docker£¬¾ÍÖ»ÓÐÔÚÐéÄâ»úÀïÃæÔËÐÐ Docker ÕâÒ»¸öÑ¡Ôñ¡£ÄÇôÔÚ¹«ÓÐÔÆÉϲ¿Êð
Docker ÒµÎñ£¬´æÔÚÄÄЩÎÊÌâÄØ£¿Æäʵ£¬Ö÷Òª»¹ÊÇÐÔÄܺ͹¦ÄÜÁ½·½Ãæ¡£
ÍøÂçÐÔÄÜ
ÍøÂçÐéÄ⻯µÄ±¾ÖÊÊÇÓÃÈí¼þʵÏÖÎïÀíÍø¿¨ºÍ½»»»»úµÄ¹¦ÄÜ£¬Òò´ËÐéÄâÍøÂçÖеÄËùÓÐÁ÷Á¿¶¼»áÏûºÄ CPU ×ÊÔ´¡£
Linux ÔÚ´¦ÀíÍøÂçÁ÷Á¿Ê±£¬Óм¸¸ö·½Ãæ»áÏûºÄ CPU£º
1.µØÖ·×ª»»£¨Nat£©£»
2.Èý²ã·ÓÉת·¢£»
3.Vxlan ·â×°£»
4.¶þ²ãת·¢£»
5.ÐéÄâ»úµÄ Kernel ºÍËÞÖ÷»ú Kernel Ö®¼äµÄת·¢¡£
ÆäÖÐ 1 ºÍ 2 Õ¼µÄ CPU ÏûºÄ½Ï¸ß£¬ÕâÊÇÒòΪµØÖ·×ª»»ºÍ·Óɶ¼»á¶ÔÊý¾Ý°üµÄ°üÍ·×öÐ޸쬲¢ÖØÐ¼ÆËã Checksum£¬
¶øÇÒµØÖ·×ª»»»¹ÐèÒª²éѯ Conntrack µÄÁ¬½Ó±íºÍ IPtables µÄµØÖ·×ª»»¹æÔò£¬ÕâЩ¹¦Äܶ¼ÊÇÈ«¿¿ËÞÖ÷»úµÄ
CPU Íê³É¡£
ÔÆÆ½Ì¨ÌṩµÄ SDN ÍøÂ磬ÊǵÚÒ»²ãÍøÂçÐéÄ⻯£¬ÒÑÔì³ÉÒ»¶¨µÄÐÔÄÜËðʧ¡£µ«ÊÇ¿ÉÒÔͨ¹ýÀûÓÃÎïÀíÍø¿¨µÄÓ²Ð¶ÔØ¹¦ÄÜ£¬±ÈÈç
Vxlan Offload£¬ ¾ßÌå°üÀ¨ Gso¡¢Gro¡¢Rx Checksum µÈÔÚÕâÒ»²ã¼õÉÙÐéÄ⻯´øÀ´µÄ²¿·ÖÐÔÄÜËðʧ¡£
ËäÈ»ÈÝÆ÷±¾ÉíÓÉÓÚ¸úËÞÖ÷»ú¹²Ïí Kernel µÄÕâ¸öÌØÐÔ£¬Ïà±È VM ÍøÂçÐÔÄܸüºÃ£¬Ã»ÓÐ µÚ 5 ÌõµÄËðʧ£¬µ«ÊÇ
Docker ´î½¨µÄÐéÄâÍøÂ磬ÈÔÈ»»á´øÀ´ÏÔÖøµÄÐÔÄÜËðʧ¡£
ͬʱ£¬ÓÉÓÚµÚ¶þ²ãÐéÄ⻯ÎÞ·¨ÀûÓÃÓ²Ð¶ÔØ¹¦ÄÜ£¬ËùÒÔÐÔÄÜËðʧͨ³£»á¸ßÓÚµÚÒ»²ã¡£Á½²ãÍøÂçÐéÄ⻯´øÀ´µÄÐÔÄÜËðºÄÏàµþ¼Ó£¬½«ÏÔÖøÓ°ÏìÍøÂçÐÔÄÜ¡£
¾Ù¸öÀý×Ó£º
ÔÚÉϺ£Ò»Çø£¨SH1A£©£¬Ê¹Óà IPerf -C ÃüÁî½øÐеĻù±¾ÐÔÄܲâÊÔ (¹Ø±ÕÔÆÆ½Ì¨µÄÍøÂçÏÞËÙ)½á¹ûÈçÏ£º ÐéÄâÖ÷»úÖ®¼ä£º´ø¿í 9Gbps£» ÐéÄâÖ÷»úÄÚ£ºÊ¹Óà Docker Overlay ²å¼þµÄ Docker ʵÀýÖ®¼ä´ø¿íϽµÎª 2.3 Gbps¡£
|
Óɴ˿ɼû£¬ÕâÖÖʹÓà Docker Overlay µÄ·½°¸»á´øÀ´½ü 3/4 µÄÐÔÄÜËðºÄ¡£¶øÈç¹ûËãÉ϶ÔÍâÌṩ·þÎñËùÐèÒªµÄµØÖ·×ª»»´øÀ´µÄÐÔÄÜËðʧ£¬ÕûÌåÐÔÄÜËðʧ½«¸üΪ¾Þ´ó¡£
ÅäÖø´ÔÓ
Ê×ÏÈ£¬Docker ×ÔÉíµÄÍøÂ縴ÔÓ¡£Bridge ºÍ Overlay ¶¼ÐèÒªÅäºÏµØÖ·×ª»»¹¦ÄÜʹÓ㬶øµØÖ·×ª»»µÄ¹æÔò²»½ö¶à£¬¶øÇÒ¸´ÔÓ¡£
ÎÒ×î½üÓöµ½¸ö˽ÓÐÔÆ¿Í»§£¬ÆäÔÚÔÆÆ½Ì¨ÉÏÃæ²¿Êð»ùÓÚ K8S µÄÒµÎñϵͳ¡£ËûÃÇÓöµ½Ò»¸öÎÊÌ⣬ͬһ¸öËÞÖ÷»úµÄ
Docker ʵÀýÖ®¼ä£¬Óà K8S ÌṩµÄÒµÎñ IP ÎÞ·¨·ÃÎÊ£¬¶ø²»Í¬ËÞÖ÷»úÖ®¼äÓÃÏàͬµÄ IP ·ÃÎÊÕý³£¡£
Õâ¸ö¿ª·¢ÍŶӣ¬Í¨Ïü¼Ó°àºÃ¼¸Ì죬Ҳû¸ãÇå³þÔõô»ØÊ£¬À´ÕÒÎÒ°ïæ½â¾ö¡£Õâ¸öÎÊÌâʵ¼ÊÉÏÊÇÒòΪ K8S ÉÙÏ·¢ÁËÒ»Ìõ
IPtables ¹æÔò£¬Ã»ÓжÔͬËÞÖ÷»úµÄÕâÖÖÇé¿ö×öÔ´µØÖ·×ª»»¡£
Õâ¸öÎÊÌâ¶ÔÊìϤ Linux ÍøÂ繦ÄܵÄÈËÀ´Ëµ£¬²»ÊÇʲôÄÑÌ⣬µ«ÊǶÔרעÓÚÒµÎñ¿ª·¢µÄ Docker Óû§¶øÑÔ£¬¿É¾ÍºÜÄѽâ¾öÁË¡£
ÎÒ˵Õâ¸öÀý×ÓµÄÄ¿µØ¾ÍÊÇҪ˵Ã÷£¬ÅäÖà Docker ÐéÄâÍøÂçÊǼþÄѶȺܸߵÄÊÂÇé¡£
ÁíÒ»·½Ã棬ҪÔÚÔÆÆ½Ì¨ÉÏÃæ£¬Ê¹Óà Docker ¶ÔÍâÌṩ·þÎñ£¬»¹ÐèÒª¸úÔÆÆ½Ì¨µÄÍøÂç×öÕûºÏ¡£
ͨ³£ÊÇÔÚÔÆÆ½Ì¨µÄ IP ºÍ Docker µÄ IP Ö®¼ä×öµØÖ·×ª»»¡£±¾Éí Docker ʵÏÖÕâЩ¹¦ÄܾͱȽϸ´ÔÓ£¬¶øÔÚ´Ë»ù´¡ÉÏ£¬ÔÙ×öÒ»²ãµØÖ·×ª»»£¬»á´øÀ´¶îÍâµÄ¸´ÔÓ¶È¡£
ʹÓà Docker ¹ÜÀíÆ½Ì¨µÄ³õÖÔÊǼò»¯²úÆ·²¿Ê𣬶øÍ¨¹ýÕâÑùµÄ·½Ê½¸úÔÆÆ½Ì¨ÕûºÏ£¬È´ÓëÕâÒ»·½Ïò±³µÀ¶ø³Û¡£
ÈçºÎ½â¾öÈÝÆ÷ÍøÂçÐÔÄܼ°¸´ÔÓÍøÂ粿ÊðµÄÎÊÌâ
ÐÔÄÜÎÊÌâµÄ¸ùÔ´ÔÚÓÚÔÆÆ½Ì¨ºÍ Docker ƽ̨¶¼ÓÐ×Ô¼ºµÄÐéÄâ»¯ÍøÂ磬¶þÕß¹¦ÄÜÖØµþ£¬Ê¹ÓÃʱÏ໥ǶÌס£¶øÅäÖø´ÔÓµÄÄѶÈÒ»¸öÊÇ
Docker ×ÔÉíÍøÂ縴ÔÓ£¬ÁíÒ»¸ö·½ÃæÊǸúÔÆÆ½Ì¨µÄÍøÂçÕûºÏÒ²¸´ÔÓ¡£
ĿǰÇàÔÆµÄ SDN ֱͨ·½°¸Í¨¹ýÈà Docker ʵÀý¹ÒÔØÔÆÆ½Ì¨ÌṩµÄÐéÄâÍø¿¨µÄ·½Ê½£¬Èà Docker
ʵÀýÖ±½ÓʹÓÃÔÆÆ½Ì¨µÄ SDN ¹¦ÄÜ£¬´úÌæ Docker µÄÐéÄâÍøÂç¡£
Ò»·½Ãæ¼õÉÙÁ˵ڶþ²ãÐéÄâÍøÂçµÄÐÔÄÜËðʧ£»ÁíÒ»·½Ãæ£¬ÔÆÆ½Ì¨µÄ SDN ÊÇͨ¹ý API ºÍ¿ØÖÆÌ¨·â×°ºÃµÄ·þÎñ£¬Docker
Ö±½ÓʹÓþͿÉÒÔÁË£¬²»ÐèÒª×Ô¼ºÔÙÅäÖà Docker µÄÍøÂ磬ËùÒÔ´ó·ù½µµÍÁËʹÓÃÄѶȡ£
SDN ÍøÂçֱͨ·½°¸°üº¬Á½¸ö·½Ã棺
1.ÔÆÆ½Ì¨Íø¿¨¹ÜÀí£ºÍ¨¹ýÌá¹©Íø¿¨½Ó¿Ú£¬ÈÃÐéÄâÖ÷»úÄܹ»¹ÒÔØ¶à¸öÍø¿¨¡£ÕâÐ©Íø¿¨¿ÉÒÔÊôÓÚÏàͬ»òÕß²»Í¬µÄÍøÂ磬ͬʱÿ¸öÍø¿¨Äܹ»¹ÜÀí×Ô¼ºµÄË½Íø
IP¡¢¹«Íø IP¡¢¸ºÔؾùºâÆ÷ºÍ·À»ðǽµÈ¹¦ÄÜ¡£
2.²å¼þ£ºÕâÊÇÇàÔÆQingcloud ×ÔÖ÷¿ª·¢µÄÒ»¿î Docker ÍøÂç²å¼þ¡£ÔÚÆô¶¯
Docker ʵÀýµÄʱºò£¬Í¨¹ý¸Ã²å¼þ£¬¿ÉÒÔ½«ÐéÄâÖ÷»úÉϵİ󶨵Ķà¸öÍø¿¨Ò»Ò»¹ÒÔØµ½ Docker ʵÀýÉÏ,
²¢¿ÉÒÔÅäÖà IP µØÖ·ºÍ·ÓÉ¡£Æô¶¯Ö®ºó£¬Docker ʵÀý¾Í¼ÓÈëÁËÔÆÆ½Ì¨ SDN ÌṩµÄÍøÂ磬Äܹ»Ê¹ÓÃÔÆÆ½Ì¨ËùÓеÄÍøÂ繦ÄÜ¡£
²å¼þÒѾ¿ªÔ´£¬µØÖ·ÊÇ https://Github.Com/Yunify/Docker-Plugin-Hostnic
ÕâÊÇÇàÔÆQingcloud ×ÔÖ÷¿ª·¢µÄÒ»¿î Docker ÍøÂç²å¼þ¡£ÔÚÆô¶¯ Docker ʵÀýµÄʱºò£¬Í¨¹ý¸Ã²å¼þ£¬¿ÉÒÔ½«ÐéÄâÖ÷»úÉϵİ󶨵Ķà¸öÍø¿¨Ò»Ò»¹ÒÔØµ½
Docker ʵÀýÉÏ, ²¢¿ÉÒÔÅäÖà IP µØÖ·ºÍ·ÓÉ¡£
Æô¶¯Ö®ºó£¬Docker ʵÀý¾Í¼ÓÈëÁËÔÆÆ½Ì¨ SDN ÌṩµÄÍøÂ磬Äܹ»Ê¹ÓÃÔÆÆ½Ì¨ËùÓеÄÍøÂ繦ÄÜ¡£ÔÆÆ½Ì¨Íø¿¨¹ÜÀí£¬¾ÍÊÇÄܹ»ÈÃÐéÄâÖ÷»ú¹ÒÔØ¶à¸öÍø¿¨¡£Íø¿¨¶ÔÓ¦µ½
Docker µÄÍøÂç×é¼þ£¬¾ÍÊÇEndpoint£¬Õâ¸öÉ豸ÊÜÔÆÆ½Ì¨¹ÜÀí£¬µ×²ãÓÉ SDN ÄÚ²¿µÄ¿ØÖÆÆ÷Ï·¢¹æÔò£¬¿ÉÒÔʹÓÃ
DHCP ¹ÜÀí IP µØÖ·£¬²¢½ÓÈëËùÓÐÔÆÆ½Ì¨µÄÍøÂçÄ£¿é¡£
Ïà±È Docker µÄÍøÂ繦ÄÜ£¬ÇàÔÆµÄÍø¿¨¿ÉÒÔÌṩ¸ü¶àµÄ¹¦ÄÜ:
VPC
Ç°ÃæËµ¹ý£¬Docker µÄ Overlay ÍøÂçʵ¼ÊÉÏÊÇÐéÄâµÄ¶þ²ãÍø£¬¶ø VPC ÌṩµÄÊÇÒ»¸öÐéÄâµÄÈý²ãÍø¡£¿ÉÒÔÀí½âΪһ¸ö·Ö²¼Ê½µÄºËÐĽ»»»»ú¡£ÇàÔÆµÄ
VPC ×î¶à¿ÉÒÔ´´½¨ 252 ¸öÐéÄâÍøÂ磬ÈÝÄɳ¬¹ý 6 Íǫ̀ÐéÄâÖ÷»ú¡£
¾Í¼¼ÊõÉÏÀ´¿´£¬ÐéÄâ¶þ²ãÍøÊ¹Óà Vxlan ʵÏÖ£¬ÊÇÏÖÔڽϳÉÊìµÄ¼¼Êõ¡£¶øÐéÄâµÄÈý²ãÍø£¬ÊÇ SDN ¼¼ÊõµÄÒ»¸ö¹Ø¼üµã£¬ÒòΪËü±³ºóÐèÒªÓиö·Ö²¼Ê½Íø¹Ø²ÅÄÜ×öµ½ÐéÄâ»úÊýÁ¿Ôö¼Óʱ£¬VPC
ÕûÌåÍøÂçÐÔÄܲ»±ä¡£
Ŀǰ SDN ³§É̺ͼ¼ÊõºÃµÄÔÆ¼ÆË㹫˾¶¼Óи÷×ÔµÄʵÏÖ£¬»¹Ã»Óп´µ½¿¿Æ×µÄ¿ªÔ´²úÆ·Äܹ»×öµ½¡£
µ± Docker ¹ÒÔØÉÏÇàÔÆµÄÍø¿¨Ê±£¬¾Í¼ÓÈëÁ˶ÔÓ¦µÄ VPC£¬¸úÆäËûʵÀýÁ¬ÔÚÁËÒ»Æð¡£Óû§¿ÉÒÔ¸ù¾ÝÍø¿¨¶ÔÓ¦µÄÍøÂçÀ´¶¨ÒåʵÀý¼äÊǶþ²ã»¹ÊÇÈý²ãÁªÍ¨¡£
¹«Íø IP
ÿ¸öÍø¿¨¿ÉÒÔ°ó¶¨×Ô¼º¶ÀÏíµÄ¹«Íø IP£¬Ò²¿ÉÒÔʹÓà VPC ¹²ÏíµÄ¹«Íø IP ¶ÔÍâÌṩ·þÎñ¡£¹«ÍøºÍË½ÍøµØÖ·µÄת»»£¬ÓÉÔÆÆ½Ì¨µÄ·Ö²¼Ê½Íø¹ØÀ´×ö£¬²»ÐèÒª
Docker ÅäÖÃÈκΠIPtables ¹æÔò¡£
¸ºÔؾùºâÆ÷
Íø¿¨¿ÉÒÔ×÷Ϊ¸ºÔؾùºâÆ÷µÄºó¶Ë£¬ÒÔ¼¯ÈºµÄ·½Ê½£¬¶ÔÍâÌṩ¸ß¿ÉÓú͸ßÐÔÄܵķþÎñ¡£Ïà±È Docker µÄ¸ºÔؾùºâÆ÷£¬ÇàÔÆµÄ¸ºÔؾùºâÆ÷ÓÐÐí¶àÓŵã:
1.4²ã/7²ãȫ͸Ã÷£¬ºó¶Ë·þÎñÆ÷ÄÜÖ±½ÓÄõ½¿Í»§¶ËµÄÔ´ IP µØÖ·¡£Õâ¸ö¹¦ÄÜÊÇÎÒÔÚÇàÔÆ×öµÄµÚÒ»¸öÏîÄ¿£¬µ½Ä¿Ç°£¬ÔÚÔÆ¼ÆËãµÄ¸ºÔؾùºâÆ÷·þÎñÖÐÈÔÈ»ÊǶÀÓеŦÄÜ£¬ÊÀ½çÉϱðµÄ¹«ÓÐÔÆ¶¼Ã»ÓÐ×öµ½¡£
2.ˮƽÀ©Õ¹ÄÜÁ¦£¬Óû§¿ÉÒÔͨ¹ýÐ޸ļ¯Èº½ÚµãÊýÁ¿£¬À©Õ¹ÍøÂç´ø¿íºÍ HTTPS
Ð¶ÔØÄÜÁ¦¡£
3.HTTPS ת·¢²ßÂԵȵȺܶàÅäÖÃÑ¡ÏҪ±È Docker »òÕß K8S
ʵÏֵĸºÔؾùºâÆ÷µÄÑ¡Ïî·á¸»ºÜ¶à¡£
4.·À»ðǽ¡£Ã¿¸öÍø¿¨¶¼¿ÉÒÔ¶ÀÁ¢ÅäÖÃ×Ô¼ºµÄ·À»ðǽ¹ýÂ˹æÔò£¬Õâ¸ö¹¦ÄÜÔÚ Docker
ÉÏ»¹Ã»¼ûµ½¡£
¸øÐéÄâÖ÷»ú¹ÒÔØÍø¿¨Ö®ºó£¬ÐèҪʹÓõ½ Hostnic ²å¼þ£¬ÓÐ 3 ²½£º
1.Docker-Plugin-Hostnic ÊǸö Docker Ïñ£¬°ÑËüÆô¶¯³É
Docker ʵÀý£¬Ð§¹û¾ÍÊǼÓÔØÁËÒ»¸ö½Ð Hostnic µÄ Docker ÍøÂç²å¼þ£»
2.´´½¨ Docker ÍøÂç¡£±ÈÈ磺Docker Network Create
-D Hostnic ¨CSubnet=192.168.1.0/24 ¨CGateway 192.168.1.1
Hostnic£¬ÆäÖÐÍø¶ÎºÍÍø¹ØÊÇÍø¿¨ÔÚ VPC ¶ÔÓ¦µÄÍøÂçµÄÊôÐÔ£»
3.Æô¶¯ Docker ʵÀý£¬´«ÈëÍø¿¨¶ÔÓ¦µÄ Mac ºÍ IP µØÖ·¡£±ÈÈç:
Docker Run -It ¨CIp 192.168.1.5 ¨CMac-Address 52:54:0E:E5:00:F7
¨CNetwork Hostnic Ubuntu:14.04 Bash¡£
ÕâÑù¾ÍÍê³ÉÁË¶Ô Docker ʵÀýÍøÂçµÄËùÓй¦ÄÜÅäÖá£
Ç°ÃæËµµÄ¹«Íø IP¡¢¸ºÔؾùºâÆ÷ºÍ·À»ðǽ£¬¶¼¿ÉÒÔͨ¹ýÇàÔÆ¿ØÖÆÌ¨¡¢SDK¡¢ CLI »òÕß API µÄ·½Ê½È¥µ¥¶ÀÅäÖ᣶ÔÕâЩ¹¦ÄÜʹÓÃÉÏÓÐÒÉÎʵϰ£¬¿ÉÒÔͨ¹ý¹¤µ¥¸úÎÒÃǵŤ³Ìʦ¹µÍ¨£¬²»±ØÔÚËÀ¿Ä
Docker ÄÇЩ¸´ÔÓµÄÍøÂçÅäÖá£
³ýÁËÇàÔÆ×Ô¼ºÑз¢µÄ Hostnic£¬ÏÖÔÚÒѾÓÐÁíÍâÒ»¿î Docker ²å¼þÖ§³ÖÇàÔÆ SDN ֱͨ¡£ÊÇÏ£ÔÆCsphere ¿ª·¢µÄ Qingcloud-Docker-Network£¬Í¬ÑùÒ²ÒѾ¿ªÔ´£º Https://Github.Com/Nicescale/Qingcloud-Docker-Network ¡£
|
¸ú Hostnic Ïà±È£¬Õâ¿î²å¼þÕûºÏÁËÇàÔÆ API£¬Äܹ»ÔÚÆô¶¯ Docker ʵÀýʱ£¬×Ô¶¯´´½¨£¬²¢°ó¶¨Íø¿¨£¬Ê¹ÓÃÆðÀ´¸ü·½±ãһЩ¡£
¶ÔÓÚ¹«ÓÐÔÆ£¬Ä¿Ç°Ö»ÄÜÑ¡ÔñÔÚÐéÄâÖ÷»úÀïÃæÊ¹Óà Docker£¬µ«ÊǶÔÓÚ˽ÓÐÔÆ£¬¿ÉÒÔÔÚÇàÔÆÌṩµÄÈÝÆ÷Ö÷»úÀïÃæ²¿Êð
Docker¡£
ÈÝÆ÷Ö÷»úµÄ¹¤×÷ÔÀí¸ú Docker Ò»Ñù£¬¶¼ÊÇÓõ½ÁË Linux Kernel µÄÈÝÆ÷¼¼Êõ£¬µ«ÊÇÓÃÆðÀ´¸ü½Ó½üÐéÄâÖ÷»ú£¬ÓÐ׿¸ºõÏàͬµÄ¹¦ÄÜ£¬±ÈÈ磺¹ÒÔØ
SSH ÃÜÔ¿¡¢Web Terminal¡¢¾µÏñÖÆ×÷¡¢±¸·ÝµÈ¹¦ÄÜ£¬¸úÐéÄâÖ÷»ú¾µÏñÈ«¼æÈÝ£¬»¹ÄÜ×öµ½ÔÚÏßÀ©ÈÝ CPU¡¢Äڴ桢ϵͳӲÅÌ¡£
Ò²¾ÍÊÇ˵£¬¶ÔÓÚ˽ÓÐÔÆÓû§£¬¿ÉÒÔʹÓøú¹«ÓÐÔÆÐéÄâÖ÷»úÍêȫһÑùµÄ²Ù×÷·½Ê½£¬ÔÚÈÝÆ÷Ö÷»úÀïÃæ²¿Êð Docker£¬´Ó¶ø¼õÉÙ
KVM ÐéÄ⻯ÕâÒ»²ãÔÚÐÔÄÜÉϵÄËðʧ£¬ÄÜ´ïµ½½Ó½üÎïÀí»úµÄÐÔÄÜ¡£
¸úÖ±½ÓÔÚÎïÀí»úÉϲ¿Êð Docker Ïà±È£¬Ê¹ÓÃÈÝÆ÷Ö÷»ú¿ÉÒÔÓÐÔÆÆ½Ì¨±ã½ÝµÄ¹¦ÄÜ£¬±ÈÈçÃë¼¶´´½¨»òÕßÏû»ÙÒ»¸öÈÝÆ÷Ö÷»ú¡£ÔÆÆ½Ì¨µÄ¸±±¾¿ÉÒÔ±£Ö¤ÎïÀí»úå´»úºó£¬Í¨¹ýÀëÏßÇ¨ÒÆ£¬Ñ¸ËÙ»Ö¸´ÒµÎñ¡£ÔÙ¼ÓÉÏÇ°ÃæËµµÄÕâÐ©ÔÆÆ½Ì¨µÄÍøÂ繦ÄÜ£¬Îª¹¹½¨Óû§ÒµÎñ¼¯Èº£¬½ÚÊ¡´óÁ¿Ê±¼ä¡£Í¬Ê±ÇàÔÆµÄ
SDN ÍøÂçÔÚ Linux Kernel ÉÏÓÐÉî¶ÈÓÅ»¯£¬Ïà±ÈÖ±½ÓÔÚÎïÀí»úÉÏʹÓà Docker µÄ Overlay
ÍøÂçÐÔÄÜ»¹»áºÃ²»ÉÙ¡£ |