±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÎÄÕÂÖ÷Òª½éÉÜÁ˶àÍøÂçÆ½ÃæµÄ¸ÅÄIstioÔÚ¶àÍøÂçÆ½Ãæ³¡¾°ÏµÄһЩÎÊÌâÒÔ¼°Istio¶àÍøÂçÆ½Ãæ½â¾ö·½°¸µÈ£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£
|
|
Istio 1.0°æ±¾Ö»Ö§³ÖÔÚµ¥¸öÍøÂ磬¼´MeshÖеķþÎñÖ»ÄÜÁ¬½ÓÔÚÒ»¸öÍøÂçÉÏ¡£ËäÈ»Ôڼܹ¹Éè¼ÆÉÏÊÇ¿ª·ÅµÄ£¬µ«´ÓĿǰµÄ´úÂëÀ´¿´£¬IstioµÄÄÚ²¿ÊµÏÖ»¹ÊǺÍKubernetes¸ß¶È¼¯³ÉµÄ¡£ÓÉÓÚKubernetes¼¯ÈºÖÐPodȱʡֻ֧³ÖÒ»¸öÍøÂç½Ó¿Ú£¬Òò´ËIstioÒ²´æÔÚ¸ÃÏÞÖÆ²¢²»ÈÃÈËÒâÍâ¡£
Ëæ×ÅKubernetesÔÚNFVÁìÓòÖеÄÖð½¥Ó¦Óã¬ÒѾ³öÏÖ¶à¸öKubernetesµÄ¶àÍøÂçÆ½Ãæ½â¾ö·½°¸£¬IstioÒ²ÐèÒª¿¼ÂÇÖ§³Ö¶àÍøÂçÆ½Ãæ£¬ÒÔΪ5GµÄ΢·þÎñ»¯¼Ü¹¹Ìṩ·þÎñͨѶºÍ¹Ü¿ØµÄ»ù´¡ÉèÊ©¡£
ʲôÊǶàÍøÂçÆ½Ãæ£¿
¶àÍøÂçÆ½ÃæÊÇÒ»¸öµçÐÅÐÐÒµµÄ³£ÓÃÊõÓ¼´½«Ò»¸öµçÐÅÉ豸»òÕßϵͳͬʱÁ¬½Óµ½¶à¸öÍøÂçÉÏ¡£¼ò¶øÑÔÖ®£¬¾ÍÊÇÒ»¸öÖ÷»úÉÏÓжà¸öÎïÀí»òÕßÐéÄâµÄÍøÂç½Ó¿Ú£¬ÕâЩ½Ó¿Ú·Ö±ðÁ¬½Óµ½²»Í¬µÄÍøÂ磬ÕâÐ©ÍøÂçÖ®¼äÒ»°ãÊÇÏ໥¶ÀÁ¢µÄ¡£ÓÉÓÚµçÐÅϵͳ¶Ô¿É¿¿ÐÔµÄÒªÇó·Ç³£¸ß£¬Òò´Ëϵͳ»áͨ¹ýÅäÖöàÍøÂçÆ½ÃæÀ´±ÜÃâ²»Í¬ÍøÂçÁ÷Á¿µÄÏ໥ӰÏ죬Ìá¸ßϵͳµÄ½¡×³ÐÔ¡£
ΪʲôÐèÒª¶àÍøÂçÆ½Ãæ£¿
µ«ÔÚһЩӦÓó¡¾°Ï£¬¶àÍøÂçÆ½ÃæÊÇÒ»¸ö±ØÐëÖ§³ÖµÄÖØÒªÌØÐÔ¡£ÀýÈçÔÚµçÐÅϵͳÖУ¬Ò»°ã¶¼ÊÇÓжà¸öÍøÂçÆ½ÃæµÄ£¬µçÐÅϵͳÖÐʹÓöà¸öÍøÂçÆ½ÃæµÄÔÒòÈçÏ£º
°´¹¦ÄܶԲ»Í¬ÍøÂç½øÐиôÀ룬ÒÔ±ÜÃâÏ໥ӰÏì¡£ÀýÈç¹ÜÀíÁ÷Á¿£¬¿ØÖÆÁ÷Á¿ºÍÊý¾ÝÁ÷Á¿·Ö±ð²ÉÓò»Í¬µÄÍøÂçÆ½Ãæ¡£
ͨ¹ý¶à¸öÍøÂçµÄ»ã¾Û/°ó¶¨£¬Ìá¹©ÍøÂçÉè¼ÆÈßÓ࣬ÔöǿϵͳµÄÍøÂ罡׳ÐÔ¡£
Ö§³Ö°´ÕÕ²»Í¬µÄÍøÂçÌṩ²»Í¬µÄSLA£¨·þÎñµÈ¼¶£©£¬ÀýÈçÓïÒô(µÍÑÓ³Ù)ºÍÊÓÆµÁ÷Á¿£¨¸ß´ø¿í£©¾ßÓв»Í¬µÄÌØµã£¬ÐèÒª·Ö±ð¶Ô´ý¡£
ͨ¹ýÍøÂç¸ôÀëÌá¸ßϵͳµÄ°²È«ÐÔ£¬ÀýÈçΪ²»Í¬µÄ×â»§·ÖÅ䲻ͬµÄÍøÂç¡£
ÔÚµ¥¸öÍøÂç´ø¿íÓÐÏÞµÄÇé¿öÏ£¬Í¨¹ý¶à¸öÍøÂç½Ó¿ÚÔö¼ÓÍøÂçµÄϵͳ´ø¿í¡£
ÔÚµçÐŵÄNFV£¨ÍøÂ繦ÄÜÐéÄ⻯£©ÁìÓòÖУ¬ÒѾÓжà¸öÕë¶ÔKubernetesµÄ¶àÍøÂçÆ½Ãæ½â¾ö·½°¸¡£ÆäÖÐÒ»¸öKubernetesÍÆ¼öµÄ·½°¸ÊÇÖÐÐËͨѶÌṩµÄKnitter¿ªÔ´ÊµÏÖ¡£ÏÂͼչʾÁËKnitterÊÇÈçºÎʵÏÖKubernetesµÄ¶àÍøÂçÆ½ÃæÖ§³ÖµÄ¡£

Kubernetes¶àÍøÂçÆ½Ãæ¿ªÔ´ÏîÄ¿Knitter
³ýÁËNFVµÄÓ¦Óó¡¾°£¬IstioÒ²Ö§³Ö³ýKubernetesÖ®ÍâµÄÆäËû²¿Êð»·¾³£¬ÀýÈçÐé»úºÍÂã½ðÊô²¿Êð¡£ÔÚÕâЩ³¡¾°Ï£¬Ò»¸öHost¾ßÓжà¸öÍøÂç½Ó¿ÚµÄ³¡¾°Ò²ÊǺܳ£¼ûµÄ£¬ÀýÈçͬʱÐèÒª±»ÄÚ²¿ºÍÍâ²¿ÍøÂç·ÃÎʵÄHost¾Í»áÓÐÁ½¸öÍøÂç½Ó¿Ú¡£
IstioÔÚ¶àÍøÂçÆ½ÃæÏµÄÎÊÌâ
ÔÚ1.0°æ±¾ÖУ¬PilotÔÚ´´½¨Inbound listenerʱδ¿¼ÂǶàÍøÂçÆ½ÃæµÄÇé¿ö£¬Òò´ËÔÚEnvoyËùÔÚ½Úµã´æÔÚ¶à¸öIPʱµÄ´¦ÀíÂß¼´æÔÚÎÊÌâ¡£
ÏÂͼÃèÊöÁËÔÚ¶àÍøÂçÆ½Ãæ³¡¾°ÏÂIstio 1.1´æÔÚµÄÎÊÌâ¡£

IstioÔÚ¶àÍøÂçÆ½Ãæ³¡¾°ÏµÄÎÊÌâ
·þÎñ×¢²á
EnvoyËùÔÚ½Úµã´æÔÚÁ½¸öÍøÂç½Ó¿Ú£¬·Ö±ðÁ¬½Óµ½10.75.8.0/24ºÍ192.168.10.0/24Á½¸öÍøÂçÉÏ¡£
Service A±»×¢²áµ½Service RegistryÖУ¬Ê¹ÓõÄÊǵڶþ¸öÍøÂç½Ó¿ÚµÄIP£¬¼´10.75.8.101¡£
Envoy³õʼ»¯
Envoyͨ¹ýxDS½Ó¿ÚÏòPilot»ñÈ¡ÅäÖÃÐÅÏ¢¡£
EnvoyÔÚxDSÇëÇóÖÐЯ´øÁ˵ÚÒ»¸öÍøÂç½Ó¿ÚµÄIP£¬¼´192.168.10.63¡£
Pilot´ÓxDSÇëÇóÖнâÎö³öEnvoyËùÔÚ½ÚµãµÄIP£¬¼´192.168.10.63¡£
PilotÓÃEnvoy½ÚµãIPÀ´ºÍService RegistryÖÐËùÓÐService InstanceµÄIP½øÐжԱȡ£
ÓÉÓÚService AµÄ×¢²áIP10.75.8.101ºÍ½ÚµãIP192.168.10.63²»Ò»Ö£¬Pilot´íÎóÅжϸýڵãÉÏûÓÐService
AµÄInstance£¬ÎªService A´´½¨ÁËÒ»¸öOutbound Listener¡£
·þÎñÇëÇó
½ÚµãµÄÍøÂç½Ó¿Ú10.75.8.101ÉÏÊÕµ½Ò»¸öÀ´×ÔdownstreamµÄÇëÇ󣬱»Öض¨Ïòµ½Envoy¡£
EnvoyÔÚ15001¶Ë¿ÚÉÏÊÕµ½¸ÃÇëÇó£¬ÒªÇó·ÃÎÊService A¡£
EnvoyPilotÏ·¢µÄÅäÖý«¸ÃÇëÇó½»ÓÉÔÚService A¶Ë¿ÚµÄOutbound Listener£¬¸ÃListener½«ÇëÇó·Ö·¢µ½Service
AµÄOutbound ClusterÉÏ£¬¶ÔÓ¦IPµØÖ·Îª10.75.8.101¡£
Envoy½«ÇëÇó·¢Ë͵½10.75.8.101£¬¾¹ýTCP/IPÐÒéÕ»´¦Àíºó£¬½øÈëµÚ¶þ¸öÍøÂç½Ó¿Ú£¬±»IptableÀ¹½Ø£¬Ôٴα»×÷ΪÈëÏòÇëÇóת·¢µ½EnvoyµÄ15001¶Ë¿Ú¡£
ÉÏÊöÁ÷³ÌÐγÉÁËÒ»¸öËÀÑ»·£¬×îÖÕµ¼ÖÂEnvoyÓÉÓÚÎļþÃèÊö·û±»Óù⠶øcrash¡£
ÈçºÎÖ§³Ö¶àÍøÂçÆ½Ãæ
´ÓÉÏÃæµÄÃèÊö¿ÉÒÔ¿´µ½£¬ÒªÖ§³Ö¶àÍøÂçÆ½Ãæ£¬IstioÐèÒªÐÞ¸ÄPilotÉú³ÉOutbound ListenerµÄ´úÂëʵÏÖ£¬ÏÂͼÃèÊöÁËÐ޸ĺóµÄ´¦ÀíÂß¼¡£

Istio¶àÍøÂçÆ½Ãæ½â¾ö·½°¸
·þÎñ×¢²á£¨Á÷³Ì²»±ä£©
EnvoyËùÔÚ½Úµã´æÔÚÁ½¸öÍøÂç½Ó¿Ú£¬·Ö±ðÁ¬½Óµ½10.75.8.0/24ºÍ192.168.10.0/24Á½¸öÍøÂçÉÏ¡£
Service A±»×¢²áµ½Service RegistryÖУ¬Ê¹ÓõÄÊǵڶþ¸öÍøÂç½Ó¿ÚµÄIP£¬¼´10.75.8.101¡£
Envoy³õʼ»¯£¨Ôö¼Ó¶àÍøÂçÆ½Ãæ´¦ÀíÂß¼£©
Envoyͨ¹ýxDS½Ó¿ÚÏòPilot»ñÈ¡ÅäÖÃÐÅÏ¢¡£
EnvoyÔÚxDSÇëÇóÖÐЯ´øËùÔÚ½ÚµãÉϵÄËùÓÐÍøÂç½Ó¿ÚµÄIP£¬ÔÚ±¾ÀýÖм´192.168.10.63ºÍ10.75.8.101¡£
Pilot´ÓxDSÇëÇóÖнâÎö³öEnvoyËùÔÚ½ÚµãµÄËùÓÐIP£¬ÔÚ±¾ÀýÖм´192.168.10.63ºÍ10.75.8.101¡£
PilotÓÃEnvoy½ÚµãIPÀ´ºÍService RegistryÖÐËùÓÐService InstanceµÄIP½øÐжԱȡ£
ÓÉÓÚService AµÄ×¢²áIP 10.75.8.101ºÍ½ÚµãµÄÁ½¸öIPÖ®Ò»Ïàͬ£¬PilotÅжϸýڵãÉÏ´æÔÚService
AµÄInstance£¬ÎªService A´´½¨ÁËÒ»¸öInbound Listener¡£
·þÎñÇëÇó
½ÚµãµÄÍøÂç½Ó¿Ú10.75.8.101ÉÏÊÕµ½Ò»¸öÀ´×ÔdownstreamµÄÇëÇ󣬱»Öض¨Ïòµ½Envoy¡£
EnvoyÔÚ15001¶Ë¿ÚÉÏÊÕµ½¸ÃÇëÇó£¬ÒªÇó·ÃÎÊService A¡£
Envoy¸ù¾ÝPilotÏ·¢µÄÅäÖý«¸ÃÇëÇó½»ÓÉÔÚService A¶Ë¿ÚµÄInbound Listener£¬¸ÃListener½«ÇëÇó·Ö·¢µ½Service
AµÄInbound ClusterÉÏ£¬¶ÔÓ¦IPµØÖ·Îª127.0.0¡£1¡£
Envoy½«ÇëÇó·¢Ë͵½127.0.0.1µÄService A½ø³ÌµÄ·þÎñ¶Ë¿ÚÉϽøÐд¦Àí¡£
¸ÃÐ޸ķ½°¸ÒÑʵÏÖ²¢Ìá½»PRºÏÈëµ½Istio ´úÂëÖУ¬ÔÚ1Ô·ݷ¢²¼µÄIstio 1.1 ReleaseÖн«»áÕýʽ֧³Ö¡£
RP£ºhttps://github.com/istio/istio/pull/9688
Issue£ºhttps://github.com/istio/istio/issues/9441 |