先建立概念理解,再通过下一个活动进行检验。
虚拟机、容器与 VRF
三种多个事物共享一个事物的形式,以及各自真正隔离的是什么。
你将能够做到
- 通过各自包含的内容区分虚拟机与容器
- 解释虚拟机监控器的作用,以及虚拟交换机在其中的位置
- 描述 VRF 分隔了什么,以及它与 VLAN 的区别
- 说出每种隔离形式各自作用于哪一层
预备知识:你需要《广播域与 VLAN》中的 VLAN 和广播域知识,以及《路由器如何选择路径》中的路由表知识。
为什么重要:你遇到的几乎每一台服务器都是虚拟的,几乎每一台网络设备都在为不止一个逻辑网络承载流量。两门考试都会考察这些词汇,而那个有用的组织性问题——究竟是什么被隔离开了——恰好也是发生泄漏时最重要的问题。
虚拟化是同一个想法在不同层级上的应用:让一个物理事物表现得像若干个独立的事物。不同形式之间的差异在于分界线画在哪里,也因此决定了什么是真正被隔离的,什么只是被悄悄共享的。
服务器虚拟化
管理程序(hypervisor)向每个客户机呈现虚拟硬件,因此若干个完整的操作系统可以运行在一台物理机器上。每个客户机都以为自己拥有独立的处理器、内存、磁盘和网卡,彼此互不知晓。
| 类型 | 运行位置 | 典型用途 |
|---|---|---|
| 第 1 型,裸金属型 | 直接运行在硬件上 | 服务器——管理程序与机器之间没有任何中间层 |
| 第 2 型,托管型 | 运行在普通操作系统之上 | 桌面与实验环境——图的是方便而非效率 |
由于每个客户机都有一块虚拟网卡,宿主机需要有东西供这些网卡接入。这就是虚拟交换机,它的行为与物理交换机类似:学习 MAC 地址,能够承载 VLAN,也能够向物理网络做 Trunk。
容器
容器共享宿主机的内核,而不是虚拟化硬件。它把一个应用及其依赖打包在一起,隔离性来自内核特性,为它提供独立的文件系统视图、进程列表视图和网络视图——而不是来自模拟出的硬件。
| 属性 | 虚拟机 | 容器 |
|---|---|---|
| 包含操作系统内核 | 是,拥有自己的内核 | 否,共享宿主机的内核 |
| 启动时间 | 数秒到数分钟 | 远低于一秒 |
| 体积 | 数吉字节 | 数兆字节 |
| 隔离强度 | 更强——拥有独立内核 | 更弱——共享内核意味着共享攻击面 |
| 能否运行不同的操作系统内核 | 可以 | 不可以 |
两者并无绝对的优劣之分。容器启动更快、成本更低,正是因为它省去了操作系统;虚拟机隔离得更彻底,原因也恰恰在此。想要哪种取舍,取决于共享宿主机的这些事物之间是否互相信任。
这个平台是什么
你一直在运行的实验环境就是容器。每个节点都是一个拥有自己网络命名空间的进程,通过虚拟接口对与其他节点相连。这就是为什么一个实验能在几秒钟内启动——也是为什么这里没有物理层可能出故障,没有双工不匹配的问题,也没有无线需要配置,因为这些都没有被模拟出来。
VRF
VLAN 把一台交换机划分为若干个广播域。VRF(虚拟路由与转发实例)则在上一层做等价的事情:把一台路由器划分为若干个独立的路由表。
每个 VRF 都有自己的路由表、自己的接口和自己的路由。除非明确配置了路由泄漏,否则流量不会在它们之间流动,因此两个 VRF 可以在同一台设备上承载重叠的地址空间而不发生冲突。
| 机制 | 划分的对象 | 层级 | 两者能否共享重叠的地址范围 |
|---|---|---|---|
| VLAN | 把一台交换机划分为若干广播域 | 2 | 不能——它们是各自独立的域,而不是独立的表 |
| VRF | 把一台路由器划分为若干路由表 | 3 | 能 |
| 虚拟机 | 把一台物理服务器划分为若干完整的机器 | 在这一切之下的层级 | 能 |
仍然被共享的东西
每一种虚拟化形式都会共享某些东西,知道具体共享的是什么,才是这里真正有用的技能。
- 虚拟机共享物理宿主机——它的内存带宽、它的网卡,以及它的故障。
- 容器还额外共享内核,因此内核级别的入侵不会被容器隔离住。
- VRF 共享路由器——它的处理器,以及任何让路由表未能真正分开的代码缺陷。
- 无论配置上看起来分离得多彻底,它们都共享着同一条出站物理链路。
这就是为什么听到“这些是分离的”之后,还需要追问一句:这种分离究竟是靠什么实现的。逻辑隔离是真实且有用的,但它并不等同于两台设备之间根本没有线缆相连。
术语
- 管理程序
- 向客户机操作系统呈现虚拟硬件的软件。第 1 型运行在硬件上,第 2 型运行在宿主操作系统上。
- 虚拟交换机
- 宿主机内部的软件交换机,将客户机的网络接口彼此连接,并连接到物理网络。
- 容器
- 一个隔离的应用环境,共享宿主机内核,而不是虚拟化硬件。
- VRF
- 虚拟路由与转发——共享路由器上的一个独立路由表,允许地址空间重叠。
要点总结
- 虚拟机自带内核;容器共享宿主机的内核。
- 容器启动更快、隔离更弱,原因是同一个:省去了操作系统。
- 同一虚拟交换机上客户机之间的流量可能永远不会经过物理网络。
- VRF 把一台路由器划分为若干独立的路由表,正如 VLAN 把一台交换机划分为若干广播域。
- 两个 VRF 可以承载重叠的地址空间;同一交换机上的两个 VLAN 不可以。
- 每一种虚拟化形式都共享着某些东西——在称之为“隔离”之前,先问清楚共享的是什么。
准备好继续了吗?
创建免费账户,保存学习进度并进行知识检测。
