容器网络最佳实践.docx

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
容器网络最佳实践我在博客中经常讨论关于容器的事情,是因为我在工作中一直在关注着它们。对于这些新奇容器的东西,最难理解的实际是关于容器的网络问题。虽然有很多不同的方式来解决容器网络互连问题,并且介绍这方面的文档也很多,但是有些用起来很糟糕。我对这些非常的困惑,因此我试图在这篇博客当中用非专业术语的方式来理清这个问题。(我不喜欢夸夸其谈,但是我对于容器网络文档当前状态真的很沮丧。)到底容器网络是什么呢?当我们在容器中运行程序时,你将有两个主要的操作:在主机网络命名空间上运行该程序。这是正常的容器网络方式——如果你在8282端口上运行的程序,那么他将在本地计算机的8282端口上运行。这很正常。在容器自身的网络命名空间上运行该程序。如果你将程序运行在其自身所在容器网络命名空间上(假如是在9382端口),那么在其他计算机上的其它程序将要通过网络连接来与此程序通信。起初我想:“这能复杂到哪去,将两个程序连接在一起很简单,不是吗?”就像说这个问题只有一种解决方式吗?而事实上对于容器中的程序网络互联问题有着成百上千的解决办法。接下来让我们去看看都有哪些方式。每个容器都有个IP如果你经常关注容器,你应该听说过Kubernetes?。Kubernetes 是一个可以使得你的容器可以自行决定其应该在哪一台机器上运行的系统(当然还有其它功能)。Kubernetes 的核心需求之一(当你刚刚开始用它的时候)就是每个容器要分配IP地址,于是在集群当中的其它应用程序可以通过容器对应的IP地址与之通信。这也就意味着在一台计算机上,你可能会拥有成百上千的容器以及对应的成百上千个IP地址(而不是一个IP地址和一堆端口)。当我第一次听到“每个容器都有一个IP地址”的概念,我很困惑和担心。这个怎么可能行得通?!我的计算机也仅仅只有一个IP地址!这个听起来像是难以理解的魔法一样。事实证明,幸运的是,与大多数计算机的东西类似,这是完全可以理解的。“每一个容器具有一个IP地址“这个问题正是我写这篇博客想要说清楚的问题。虽然有很多解决容器网络的方法,但是从现在开始这里只解释上述的这一种方式。而且我讲的是针对AWS来解决容器网络问题。如果你有自己的物理数据中心,那么将有更多的选择。我们的目标你有一台计算机(AWS instance),这个计算机有一个IP地址(比如)。你想要你的容器也有一个IP地址(比如)。我们将要学习在这台计算机上如果将一个数据包发送给。在AWS上是非常容易实现的—AWS上具有这项功能叫做 “VPC Route Tables”,你可以直接的告诉它“请为10.4.4.*发送数据包到”,这样AWS将为你完成这件事。但是这个规则的限制是最多只能有50个,如果你想要的容器集群数目超过50个实例,那么你需要回到对容器网络困惑的原点。一些网络基础:IP地址、MAC地址、本地网络为了更好的理解怎样在一台物理机上拥有成百个IP地址,我们需要懂得一些计算机网络的基本概念。我将说一些你理所应当懂得的东西:在计算机网络当中,程序是通过发送数据包来进行互相交互通信的每一个数据包(大部分的)都有一个IP地址包含在内在Linux中,内核来完成大部分的网络协议工作一点有关子网概念:子网/24指的是“从到55的每一个IP”。我有的时候会写成10.4.4.*来代替。接下来我会尽全力去解释。网络数据包的组成一个网络数据包有很多个部分组成(经常被称为“layers”)。网络数据包的种类也有很多种,但是让我们只谈最常见的HTTP请求(像GET /)。组成部分有:数据包将被发送到的MAC地址(“Layer 2”)源IP地址和目标IP地址(“Layer 3”)端口和其它的TCP/UDP信息(“Layer 4”)HTTP数据包的具体数据内容像GET /?(“Layer 7”)?本地网络 VS 远端网络当你直接将一个数据包发给一台计算机(在同一个本地网络当中),过程如下。数据包被MAC地址标记,我的MAC地址是3c:97:ae:44:b3:7f;我通过运行ifconfig命令:bork@kiwi~?ifconfigenp0s25???Link?encap:Ethernet??HWaddr?3c:97:ae:44:b3:7f如果发送一个数据包给我,任意的一台本地计算机都可以将?3c:97:ae:44:b3:7f写在数据包上,然后将它发送到我这里。在AWS上,“本地网络”意味着“可用区域”。如果两个实例在同一个AWS的可用区域中,它们只需写上目标的MAC地址,然后数据包会被传送到止指定的目标计算机,无所谓数据包上写的哪个IP地址。OK,那么如果我的计算机和目标计算机不在同一个本地网络/可用区域中呢?然后呢?然后中间路由器就会查看数据包上的IP地址,然后将它送达指定的地址。路由器的工作原理还有很多内容,但是现在

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档