容器核心技术及 SDN 实践 田琪 & 闫国旗
Agenda SDN 实践 容器核心技术
Part 1
Agenda 内核 Namespace 介绍 内核 CGroup 介绍 Docker 存储驱动选择 京东镜像存储系统
内核 Namespace 机制 提供进程级别的资源隔离 为进程提供不同的命名空间视图 无 hypervisor 层,区别于 KVM,Xen 等虚拟化技术 从 Kernel 2.4 版本引入 mnt namespace~3.8 引入 user namespace 仍然持续发展中
Namespace 概念及当前支持的种类 user (UIDS) mnt (Mount points) pid (Processes) net (Network stack) ipc (System V IPC) uts (Hostname)
Namespace 使用接口 创建新进程及 namespace 改变当前进程的 namespace 加入当前进程到新建 namespace 中
CGroups 资源管理 提供进程的资源管理功能 CGroups 提供通用框架,各子系统负责实现 管理功能通过 VFS 接口暴露 不依赖于 Namespace ,可单独使用 资源管理主要涉及内存,CPU,IO 等
CGroups 文件系统
cgroup 及 ns 的问题 ns 的隔离性不完整 – buffer io 无法准确控制 – 通用限流策略缺少弹性 – 带宽控制只能 CFQ 调度器,不适合高速硬件 cgroup IO 控制方面问题较多 – 需要更多种类的命名空间
docker 镜像驱动选择 需要系统提供 CoW 文件系统层 – btrfs 叠合文件系统 块设备层 – aufs,overlayfs – device mapper
overlayfs 内核 dentry 的游戏 大文件的 copy up 会比较慢 – merged/ – work/ – lower/ – upper/
JD Image Store
小结
Part 2
需求 网络隔离 网络拓朴自定义 IP 资源动态管理与分配 网络流量的精细化运营 业务和基础网络的融合
面临的问题 项目周期紧迫 落地经验不足 传统网络架构的平滑过渡 技术的实现
基本原则 充分利用已有资源 大系统小做,快速迭代 避免过度依赖硬件设备 方案设计要冗余
基础组件
一些技术点 控制平面和数据平台分离 – 计算节点即网络节点 – L2 over L3 Overlay Network – 集中控制,统一调度 优化东西 、南北流量路径 – 避免虚拟网络的广播流入承载网 优化广播
拓扑 - 概览
拓扑 - 节点内部
拓扑 - 内部网络 Container1~N: 计算实例 vRouter: 虚拟路由实例 Inner vSwitch: 虚拟二层交换机支持 Openflow 协议
拓扑 - 虚拟路由 QoS: 带宽、速率限制 Firewall: 按自定义规则过滤上行及下行流量 NAT: 源地址、目标地址转换 Router: IP 包转发
拓扑 – ARP Agent Receive ARP Request: 响应内部虚拟交换机上所有的 ARP 广播请求 Send ARP Reply: 根据广播请求的内容,返回正确的 IP/MAC 映射信 息
拓扑 - Tunnel Tunnel Port: 虚拟端口、用于对数据包进行隧道封装 VxLAN: Virtual Extensible LAN(supported) GRE: Generic Routing Encapsulation(supported) Geneve: Generic Network Virtualization Encapsulation(3.18) STT: Stateless Transport Tunneling(patch)
拓扑 – Multiple Host
控制器 - 架构
控制器 - 性能测试
现在进行时 – IBG IBG: 内部边界网关 Zone1~N: 二层隔离的网络 ( 例如 VLAN 等 ) OSPF: Equal-cost multi-path routing Quagga: 路由软件,支持 OSPF, RIP, BGP 等路由协议
现在进行时 – vRouter 将 vRouter 的功能以 Openflow Controller 应用进行交付,统一对网络操 作的业务模型。
小结
Q&A