加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Windows容器网络

发布时间:2020-12-15 04:57:56 所属栏目:安全 来源:网络整理
导读:《Windows容器网络》要点: 本文介绍了Windows容器网络,希望对您有用。如果有疑问,可以联系我们。 前言: 下面请允许我激动的介绍Windows容器以及微软和Docker的合作.我们团队投入大量资源研发出Windows Server Technical Preview 5容器网络堆栈,除借鉴Doc

《Windows容器网络》要点:
本文介绍了Windows容器网络,希望对您有用。如果有疑问,可以联系我们。

前言:下面请允许我激动的介绍Windows容器以及微软和Docker的合作.我们团队投入大量资源研发出Windows Server Technical Preview 5容器网络堆栈,除借鉴Docker的管理经验外,还研发出Windows容器特有的功能和特性.本文将围绕Windows容器的网络堆栈,讲述如何使用Docker让容器网络连通,以及微软如何使容器成为基于Microsoft Azure Stack所构建的现代数据中心的一阶对象.

简介

Windows容器可应用在不同类型的应用场景下,从运行Node.js的Web服务器到数据库,再到视频流.这些应用都需要通过网络连接实现服务发布.那么Windows容器的网络堆栈是什么样子的呢?如何为一个容器分配IP地址或将容器Endpoint连接到网络?以及如何设置最大网络带宽和ACL规则等网络高级策略呢?

下面通过这张容器网络堆栈图(图1)帮助我们加深理解.

Windows容器网络

图1 Windows容器网络堆栈

所有运行容器的宿主机可以是一台物理服务器、一个Windows客户端、或者一台虚拟机.假如容器宿主已经通过一张NIC卡接入WiFi或以太网实现了网络连接,并需将网络连接扩展到容器自身.容器宿主可使用Hyper-V虚拟交换机实现宿主机到容器的连接,并通过Host vNIC(Windows服务器容器)或Synthetic VM NIC (Hyper-V 容器)两种方式实现容器到vSwitch之间的连接.相比于此,Linux容器技术使用bridge设备而非Hyper-V虚拟交换机,使用veth 偶对而非 vNICs / vmNICs来提供容器间的基础2层(以太网)连接.

Hyper-V虚拟交换机本身并不允许外网访问运行在容器内的网络服务.我们需要3层(IP)连接性来确保数据包能正确路由到目的地.除IP外还需支持更高层的网络协议,如TCP和UDP协议,通过特定端口号寻址到容器中运行的服务(例如,TCP端口80通常用来访问WEB服务).为了让容器更有用,还需在容器中提供4~7层服务,如DNS、DHCP、 HTTP、SMB等.所有以上特性均会在Windows容器网络中得到支持.

Docker网络配置和管理堆栈

Windows Server Technical Preview 5(TP5)提供了通过Docker客户端及Dockers引擎RESTful API接口两种方式安装容器网络.网络配置根据设置的范围,既可在容器网络创建时配置也可在容器创建时配置.相关MDSN文章可提供更详细的信息.

Windows容器网络管理堆栈使用Docker作为管理入口,并将 Windows宿主网络服务(Host Network Service,HNS)作为服务层,用来创建下层网络(如,vSwitch,WinNAT等)中的“管道”.Docker引擎通过一个网络插件(libnetwork)实现同HNS的通信.请参考图2了解管理堆栈.

Windows容器网络

 

图2 管理堆栈

管理堆栈使Docker网络通过HNS实现同Windows网络层的插件式对接.因为创建过程的自动化,用户无需自己设置静态端口映射或防火墙策略(如NAT转换).

举例:通过Docker创建静态端口映射

注意:NetNatStaticMapping (及防火墙策略)都将自创创建

Windows容器网络

网络模式

Windows容器的网络连接有四种不同的网络模式(或驱动).不同模式的选择取决于容器如何被外网客户端访问,IP地址如何分配,网络策略如何执行等因素.

每种网络模式都将使用内部或外部虚拟交换机(由HNS自动创建)来打通容器到容器宿主的物理(或虚拟)网络.下面就四种模式以下给出使用建议.关于每种模式的详细信息请到MDSN文章(https://msdn.microsoft.com/virtualization/windowscontainers/management/container_networking)中查找.

  • NAT –默认模式,连接容器到私有IP子网,此模式可方便快捷的应用到任何环境;
  • Transparent –此模式不经过任何网络转换,直接连接容器到物理网络.当一台宿主机上运行过多容器时,请小心使用此模式,可能会快速导致物理网络问题;
  • L2 Bridge / L2 Tunnel –这两种模式通常用在公有云或私有云环境中,以租用虚拟机运行容器的场景下.

注: Windows Server 2016 或者Windows 10 客户端不再支持NAT 虚拟交换模式创建.NAT容器网络可通过在Docker中设定nat驱动或者在PowerShell环境下运行NAT模式来创建.

举例:创建Docker ‘NAT’网络

请注意虚拟交换和NetNat如何被自动创建.

Windows容器网络

 

容器网络+软件定义网络(SDN)

容器逐步成为数据中心和企业的一阶实体,同虚拟机相提并论.而IaaS云租户或企业业务部门需要同时支持虚拟网卡和容器Endpoint两种模式下,程序化地定义网络策略(如ACLs、QoS、负载均衡等).Windows Server 2016 版本的软件定义的网络(SDN)堆栈支持客户在Windows Network Controller使用PowerShell 脚本、SCVMM或微软 Azure Stack新出的Azure Portal 为容器Endpoint 定义网络策略.

在虚拟化环境下,容器宿主可以是一台物理服务器上的虚拟机.Network Controller通过标准的SouthBound 通道(如OVSDB)发送策略给运行在物理服务器上的宿主Agent,宿主Agent将策略传入物理服务器的vSwitch的VFP进行执行.由于网络策略是特定于具体某个IP地址(如,容器Endpoint)的,当多个容器Endpoint被连接到同一张容器宿主网卡时,网络策略仍然可以被细粒度地定义.

L2 Tunnel网络模式下,所有容器宿主虚拟机的网络流量都将通过物理服务器的vSwitch收发,vSwitch 上的VFP转发扩展将会执行从Network Controller 以及Azure Stack中的高层组件(如Network Resource Provider、Azure Resource Manager、Azure Portal)接收到的网络策略.堆栈架构请参考图3.

Windows容器网络

图3 容器实现同SDN叠加虚拟网的连接

这样容器可以加入由独立云租户创建的叠加虚拟网(如,VxLAN),实现跨节点集群内的通信以及同其他虚拟机的通信,还可以接收网络策略.

美好未来

未来我们不仅会在Windows操作系统上不断创新,更会贡献更多的代码到GitHub的Docker 开源项目上.我们希望Windows的容器使用者可以使用到更加丰富的网络策略,并通过容器客户端来创建网络策略.我们也希望将网络策略的执行尽可能的更靠近容器Endpoint,来缩减数据路径,提升网络吞吐,降低网络时延.

感谢滕启明对文章的审校.

译/Chilly

原文出处——Docker微信公众号

 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读