Kubernetes 网络权威指南:基础、原理与实践
第1章夯实基础:Linux网络虚拟化 1
1.1 网络虚拟化基石:network namespace 1
1.1.1 初识network namespace 2
1.1.2 配置network namespace 3
1.1.3 network namespace API的使用 6
1.1.4 小结 12
1.2 千呼万唤始出来:veth pair 12
1.2.1 veth pair内核实现 14
1.2.2 容器与host veth pair的关系 15
1.2.3 小结 17
查看完整
1.1 网络虚拟化基石:network namespace 1
1.1.1 初识network namespace 2
1.1.2 配置network namespace 3
1.1.3 network namespace API的使用 6
1.1.4 小结 12
1.2 千呼万唤始出来:veth pair 12
1.2.1 veth pair内核实现 14
1.2.2 容器与host veth pair的关系 15
1.2.3 小结 17
查看完整
杜军,浙大SEL实验室硕士,曾任华为云架构师、咨询组专家,国内早的容器技术布道师。开源社区自身贡献者与维护着,CNCF TOC Contributor,Kubernetes和Istio双科maintainer,对云计算技术演进与内在驱动力有深刻见解,主要研究方向为容器、微服务、DevOps、边缘计算。
本书是容器与Kubernetes网络的基础和进阶书籍,旨在让更多人了解和学习云原生时代的底层网络模型与实现机制,指导企业在落地云原生时的网络方案选型。全书包括:容器网络虚拟化基础、Docker容器网络、Kubernetes网络和Istio网络4部分,共6章。第1章容器网络虚拟化基础将支撑容器网络的内核技术娓娓道来。第2章简单介绍了Docker原生的容器网络能力。Kubernetes网络分为3章,第3章介绍Kubernetes网络的基础概念和使用,第4章为读者剖析了Kubernetes网络的底层实现原理,第5章详解了业界主流的Kubernetes网络插件。Istio网络总共1章,重点解析Istio网络流量管控的背后机制。本书适合作为高等院校计算机相关专业云计算课程的参考资料,也适合云计算从业者,特别是希望对云原生网络技术有较深入了解并希望将其应用到日常工作中的所有读者阅读。
第1章夯实基础:Linux网络虚拟化 1
1.1 网络虚拟化基石:network namespace 1
1.1.1 初识network namespace 2
1.1.2 配置network namespace 3
1.1.3 network namespace API的使用 6
1.1.4 小结 12
1.2 千呼万唤始出来:veth pair 12
1.2.1 veth pair内核实现 14
1.2.2 容器与host veth pair的关系 15
1.2.3 小结 17
1.3 连接你我他:Linux bridge 17
1.3.1 Linux bridge初体验 17
1.3.2 把IP让给Linux bridge 21
1.3.3 将物理网卡添加到Linux bridge 22
1.3.4 Linux bridge在网络虚拟化中的应用 25
1.3.5 网络接口的混杂模式 26
1.4 给用户态一个机会:tun/tap设备 28
1.4.1 tun/tap设备的工作原理 28
1.4.2 利用tun设备部署一个VPN 29
1.4.3 tun设备编程 31
1.5 iptables 34
1.5.1 祖师爷netfilter 34
1.5.2 iptables的三板斧:table、chain和rule 36
1.5.3 iptables的常规武器 39
1.6 初识 Linux 隧道:ipip 45
1.6.1 测试ipip隧道 46
1.6.2 ipip隧道测试结果复盘 49
1.6.3 小结 50
1.7 Linux 隧道网络的代表:VXLAN 51
1.7.1 为什么需要VXLAN 51
1.7.2 VXLAN协议原理简介 52
1.7.3 VXLAN组网必要信息 54
1.7.4 VXLAN基本配置命令 55
1.7.5 VXLAN网络实践 56
1.7.6 分布式控制中心 63
1.7.7 自维护VTEP组 63
1.7.8 小结 68
1.8 物理网卡的分身术:Macvlan 68
1.8.1 Macvlan五大工作模式解析 68
1.8.2 测试使用Macvlan设备 72
1.8.3 Macvlan的跨机通信 73
1.8.4 Macvlan与overlay对比 74
1.8.5 小结 75
1.9 Macvlan的救护员:IPvlan 75
1.9.1 IPvlan简介 75
1.9.2 测试IPvlan 77
1.9.3 Docker IPvlan网络 78
1.9.4 小结 78
第2章 饮水思源:Docker网络模型简介 79
2.1 主角登场:Linux容器 79
2.1.1 容器是什么 79
2.1.2 容器与虚拟机对比 80
2.1.3 小结 81
2.2 打开万花筒:Docker的四大网络模式 81
2.2.1 bridge模式 82
2.2.2 host模式 83
2.2.3 container模式 84
2.2.4 none模式 85
2.3 常用的Docker网络技巧 85
2.3.1 查看容器IP 85
2.3.2 端口映射 86
2.3.3 访问外网 84
2.3.4 DNS和主机名 87
2.3.5 自定义网络 88
2.3.6 发布服务 90
2.3.7 docker link:两两互联 91
2.4 容器网络的个标准:CNM 93
2.4.1 CNM标准 93
2.4.2 体验CNM接口 94
2.4.3 Libnetwork 95
2.4.4 Libnetwork扩展 97
2.4.5 小结 98
2.5 天生不易:容器组网的挑战 99
2.5.1 容器网络挑战综述 99
2.5.2 Docker的解决方案 101
2.5.3 第三方容器网络插件 102
2.5.4 小结 103
2.6 如何做好技术选型:容器组网方案沙场点兵 103
2.6.1 隧道方案 104
2.6.2 路由方案 104
2.6.3 容器网络组网类型 106
2.6.4 关于容器网络标准接口 107
2.6.5 小结 108
第 3 章 标准的胜利:Kubernetes 网络原理与实践 109
3.1 容器基础设施的代言人:Kubernetes 109
3.1.1 Kubernetes简介 109
3.1.2 Kubernetes能做什么 111
3.1.3 如何用Kubernetes 113
3.1.4 Docker在Kubernetes中的角色 113
3.2 终于等到你:Kubernetes网络 114
3.2.1 Kubernetes网络基础 114
3.2.2 Kubernetes网络架构综述 115
3.2.3 Kubernetes主机内组网模型 117
3.2.4 Kubernetes跨节点组网模型 118
3.2.5 Pod的hosts文件 120
3.2.6 Pod的hostname 121
3.3 Pod的核心:pause容器 124
3.4 打通CNI与Kubernetes:Kubernetes网络驱动 131
3.4.1 即将完成历史使命:Kubenet 131
3.4.2 网络生态步:CNI 133
3.5 找到你并不容易:从集群内访问服务 139
3.5.1 Kubernetes Service详解 141
3.5.2 Service的三个port 145
3.5.3 你的服务适合哪种发布形式 146
3.5.4 Kubernetes Service发现 150
3.5.5 特殊的无头Service 151
3.5.6 怎么访问本地服务 153
3.6 找到你并不容易:从集群外访问服务 154
3.6.1 Kubernetes Ingress 155
3.6.2 小结 157
3.7 你的名字:通过域名访问服务 158
3.7.1 DNS服务基本框架 158
3.7.2 域名解析基本原理 159
3.7.3 DNS使用 161
3.7.4 调试DNS 166
3.8 Kubernetes网络策略:为你的应用保驾护航 167
3.8.1 网络策略应用举例 168
3.8.2 小结 172
3.9 前方高能:Kubernetes网络故障定位指南 173
3.9.1 IP转发和桥接 173
3.9.2 Pod CIDR冲突 175
3.9.3 hairpin 176
3.9.4 查看Pod IP地址 176
3.9.5 故障排查工具 178
3.9.6 为什么不推荐使用SNAT 180
第 4 章 刨根问底:Kubernetes网络实现机制 183
4.1 岂止iptables:Kubernetes Service官方实现细节探秘 183
4.1.1 userspace模式 184
4.1.2 iptables模式 186
4.1.3 IPVS模式 191
4.1.4 iptables VS. IPVS 198
4.1.5 conntrack 199
4.1.6 小结 200
4.2 Kubernetes极客们的日常:DIY一个Ingress Controller 201
4.2.1 Ingress Controller的通用框架 202
4.2.2 Nginx Ingress Controller详解 202
4.2.3 小结 209
4.3 沧海桑田:Kubernetes DNS架构演进之路 209
4.3.1 Kube-dns的工作原理 209
4.3.2 上位的CoreDNS 212
4.3.3 Kube-dns VS. CoreDNS 217
4.3.4 小结 220
4.4 你的安全我负责:使用Calico提供Kubernetes网络策略 220
4.4.1 部署一个带Calico的Kubernetes集群 221
4.4.2 测试Calico网络策略 225
第5章 百花齐放:Kubernetes网络插件生态 228
5.1 从入门到放弃:Docker原生网络的不足 228
5.2 CNI标准的胜出:从此江湖没有CNM 229
5.2.1 CNI与CNM的转换 230
5.2.2 CNI的工作原理 231
5.2.3 为什么Kubernetes不使用Libnetwork 235
5.3 Kubernetes网络插件鼻祖flannel 238
5.3.1 flannel简介 239
5.3.2 flannel安装配置 241
5.3.3 flannel backend详解 244
5.3.4 flannel与etcd 256
5.3.5 小结 257
5.4 全能大三层网络插件:Calico 257
5.4.1 Calico简介 258
5.4.2 Calico的隧道模式 263
5.4.3 安装Calico 263
5.4.4 Calico报文路径 264
5.4.5 Calico使用指南 267
5.4.6 为什么Calico网络选择BGP 272
5.4.7 小结 274
5.5 Weave:支持数据加密的网络插件 276
5.5.1 Weave简介 276
5.5.2 Weave实现原理 277
5.5.3 Weave安装 278
5.5.4 Weave网络通信模型 280
5.5.5 Weave的应用示例 282
5.5.6 小结 288
5.6 Cilium:为微服务网络连接安全而生 288
5.6.1 为什么使用Cilium 289
5.6.2 以API为中心的微服务安全 294
5.6.3 BPF优化的数据平面性能 295
5.6.4 试用Cilium:网络策略 297
5.6.5 小结 299
5.7 Kubernetes多网络的先行者:CNI-Genie 299
5.7.1 为什么需要CNI-Genie 300
5.7.2 CNI-Genie功能速递 302
5.7.3 容器多IP 303
第6章 Kubernetes网络下半场:Istio 305
6.1 微服务架构的大地震:sidecar模式 305
6.1.1 你真的需要 Service Mesh吗 306
6.1.2 sidecar模式 307
6.1.3 Service Mesh与sidecar 307
6.1.4 Kubernetes Service VS. Service Mesh 309
6.1.5 Service Mesh典型实现之Linkerd 310
6.2 Istio:引领新一代微服务架构潮流 312
6.2.1 Istio简介 312
6.2.2 Istio安装 313
6.2.3 Istio路由规则的实现 317
6.3 一切尽在不言中:Istio sidecar透明注入 319
6.3.1 Init容器 319
6.3.2 sideca注入示例 319
6.3.3 手工注入sidecar 326
6.3.4 自动注入sidecar 327
6.3.5 从应用容器到sidecar代理的通信 329
6.4 不再为iptables脚本所困:Istio CNI插件 330
6.5 除了微服务,Istio还能做更多 331
^ 收 起
1.1 网络虚拟化基石:network namespace 1
1.1.1 初识network namespace 2
1.1.2 配置network namespace 3
1.1.3 network namespace API的使用 6
1.1.4 小结 12
1.2 千呼万唤始出来:veth pair 12
1.2.1 veth pair内核实现 14
1.2.2 容器与host veth pair的关系 15
1.2.3 小结 17
1.3 连接你我他:Linux bridge 17
1.3.1 Linux bridge初体验 17
1.3.2 把IP让给Linux bridge 21
1.3.3 将物理网卡添加到Linux bridge 22
1.3.4 Linux bridge在网络虚拟化中的应用 25
1.3.5 网络接口的混杂模式 26
1.4 给用户态一个机会:tun/tap设备 28
1.4.1 tun/tap设备的工作原理 28
1.4.2 利用tun设备部署一个VPN 29
1.4.3 tun设备编程 31
1.5 iptables 34
1.5.1 祖师爷netfilter 34
1.5.2 iptables的三板斧:table、chain和rule 36
1.5.3 iptables的常规武器 39
1.6 初识 Linux 隧道:ipip 45
1.6.1 测试ipip隧道 46
1.6.2 ipip隧道测试结果复盘 49
1.6.3 小结 50
1.7 Linux 隧道网络的代表:VXLAN 51
1.7.1 为什么需要VXLAN 51
1.7.2 VXLAN协议原理简介 52
1.7.3 VXLAN组网必要信息 54
1.7.4 VXLAN基本配置命令 55
1.7.5 VXLAN网络实践 56
1.7.6 分布式控制中心 63
1.7.7 自维护VTEP组 63
1.7.8 小结 68
1.8 物理网卡的分身术:Macvlan 68
1.8.1 Macvlan五大工作模式解析 68
1.8.2 测试使用Macvlan设备 72
1.8.3 Macvlan的跨机通信 73
1.8.4 Macvlan与overlay对比 74
1.8.5 小结 75
1.9 Macvlan的救护员:IPvlan 75
1.9.1 IPvlan简介 75
1.9.2 测试IPvlan 77
1.9.3 Docker IPvlan网络 78
1.9.4 小结 78
第2章 饮水思源:Docker网络模型简介 79
2.1 主角登场:Linux容器 79
2.1.1 容器是什么 79
2.1.2 容器与虚拟机对比 80
2.1.3 小结 81
2.2 打开万花筒:Docker的四大网络模式 81
2.2.1 bridge模式 82
2.2.2 host模式 83
2.2.3 container模式 84
2.2.4 none模式 85
2.3 常用的Docker网络技巧 85
2.3.1 查看容器IP 85
2.3.2 端口映射 86
2.3.3 访问外网 84
2.3.4 DNS和主机名 87
2.3.5 自定义网络 88
2.3.6 发布服务 90
2.3.7 docker link:两两互联 91
2.4 容器网络的个标准:CNM 93
2.4.1 CNM标准 93
2.4.2 体验CNM接口 94
2.4.3 Libnetwork 95
2.4.4 Libnetwork扩展 97
2.4.5 小结 98
2.5 天生不易:容器组网的挑战 99
2.5.1 容器网络挑战综述 99
2.5.2 Docker的解决方案 101
2.5.3 第三方容器网络插件 102
2.5.4 小结 103
2.6 如何做好技术选型:容器组网方案沙场点兵 103
2.6.1 隧道方案 104
2.6.2 路由方案 104
2.6.3 容器网络组网类型 106
2.6.4 关于容器网络标准接口 107
2.6.5 小结 108
第 3 章 标准的胜利:Kubernetes 网络原理与实践 109
3.1 容器基础设施的代言人:Kubernetes 109
3.1.1 Kubernetes简介 109
3.1.2 Kubernetes能做什么 111
3.1.3 如何用Kubernetes 113
3.1.4 Docker在Kubernetes中的角色 113
3.2 终于等到你:Kubernetes网络 114
3.2.1 Kubernetes网络基础 114
3.2.2 Kubernetes网络架构综述 115
3.2.3 Kubernetes主机内组网模型 117
3.2.4 Kubernetes跨节点组网模型 118
3.2.5 Pod的hosts文件 120
3.2.6 Pod的hostname 121
3.3 Pod的核心:pause容器 124
3.4 打通CNI与Kubernetes:Kubernetes网络驱动 131
3.4.1 即将完成历史使命:Kubenet 131
3.4.2 网络生态步:CNI 133
3.5 找到你并不容易:从集群内访问服务 139
3.5.1 Kubernetes Service详解 141
3.5.2 Service的三个port 145
3.5.3 你的服务适合哪种发布形式 146
3.5.4 Kubernetes Service发现 150
3.5.5 特殊的无头Service 151
3.5.6 怎么访问本地服务 153
3.6 找到你并不容易:从集群外访问服务 154
3.6.1 Kubernetes Ingress 155
3.6.2 小结 157
3.7 你的名字:通过域名访问服务 158
3.7.1 DNS服务基本框架 158
3.7.2 域名解析基本原理 159
3.7.3 DNS使用 161
3.7.4 调试DNS 166
3.8 Kubernetes网络策略:为你的应用保驾护航 167
3.8.1 网络策略应用举例 168
3.8.2 小结 172
3.9 前方高能:Kubernetes网络故障定位指南 173
3.9.1 IP转发和桥接 173
3.9.2 Pod CIDR冲突 175
3.9.3 hairpin 176
3.9.4 查看Pod IP地址 176
3.9.5 故障排查工具 178
3.9.6 为什么不推荐使用SNAT 180
第 4 章 刨根问底:Kubernetes网络实现机制 183
4.1 岂止iptables:Kubernetes Service官方实现细节探秘 183
4.1.1 userspace模式 184
4.1.2 iptables模式 186
4.1.3 IPVS模式 191
4.1.4 iptables VS. IPVS 198
4.1.5 conntrack 199
4.1.6 小结 200
4.2 Kubernetes极客们的日常:DIY一个Ingress Controller 201
4.2.1 Ingress Controller的通用框架 202
4.2.2 Nginx Ingress Controller详解 202
4.2.3 小结 209
4.3 沧海桑田:Kubernetes DNS架构演进之路 209
4.3.1 Kube-dns的工作原理 209
4.3.2 上位的CoreDNS 212
4.3.3 Kube-dns VS. CoreDNS 217
4.3.4 小结 220
4.4 你的安全我负责:使用Calico提供Kubernetes网络策略 220
4.4.1 部署一个带Calico的Kubernetes集群 221
4.4.2 测试Calico网络策略 225
第5章 百花齐放:Kubernetes网络插件生态 228
5.1 从入门到放弃:Docker原生网络的不足 228
5.2 CNI标准的胜出:从此江湖没有CNM 229
5.2.1 CNI与CNM的转换 230
5.2.2 CNI的工作原理 231
5.2.3 为什么Kubernetes不使用Libnetwork 235
5.3 Kubernetes网络插件鼻祖flannel 238
5.3.1 flannel简介 239
5.3.2 flannel安装配置 241
5.3.3 flannel backend详解 244
5.3.4 flannel与etcd 256
5.3.5 小结 257
5.4 全能大三层网络插件:Calico 257
5.4.1 Calico简介 258
5.4.2 Calico的隧道模式 263
5.4.3 安装Calico 263
5.4.4 Calico报文路径 264
5.4.5 Calico使用指南 267
5.4.6 为什么Calico网络选择BGP 272
5.4.7 小结 274
5.5 Weave:支持数据加密的网络插件 276
5.5.1 Weave简介 276
5.5.2 Weave实现原理 277
5.5.3 Weave安装 278
5.5.4 Weave网络通信模型 280
5.5.5 Weave的应用示例 282
5.5.6 小结 288
5.6 Cilium:为微服务网络连接安全而生 288
5.6.1 为什么使用Cilium 289
5.6.2 以API为中心的微服务安全 294
5.6.3 BPF优化的数据平面性能 295
5.6.4 试用Cilium:网络策略 297
5.6.5 小结 299
5.7 Kubernetes多网络的先行者:CNI-Genie 299
5.7.1 为什么需要CNI-Genie 300
5.7.2 CNI-Genie功能速递 302
5.7.3 容器多IP 303
第6章 Kubernetes网络下半场:Istio 305
6.1 微服务架构的大地震:sidecar模式 305
6.1.1 你真的需要 Service Mesh吗 306
6.1.2 sidecar模式 307
6.1.3 Service Mesh与sidecar 307
6.1.4 Kubernetes Service VS. Service Mesh 309
6.1.5 Service Mesh典型实现之Linkerd 310
6.2 Istio:引领新一代微服务架构潮流 312
6.2.1 Istio简介 312
6.2.2 Istio安装 313
6.2.3 Istio路由规则的实现 317
6.3 一切尽在不言中:Istio sidecar透明注入 319
6.3.1 Init容器 319
6.3.2 sideca注入示例 319
6.3.3 手工注入sidecar 326
6.3.4 自动注入sidecar 327
6.3.5 从应用容器到sidecar代理的通信 329
6.4 不再为iptables脚本所困:Istio CNI插件 330
6.5 除了微服务,Istio还能做更多 331
^ 收 起
杜军,浙大SEL实验室硕士,曾任华为云架构师、咨询组专家,国内早的容器技术布道师。开源社区自身贡献者与维护着,CNCF TOC Contributor,Kubernetes和Istio双科maintainer,对云计算技术演进与内在驱动力有深刻见解,主要研究方向为容器、微服务、DevOps、边缘计算。
本书是容器与Kubernetes网络的基础和进阶书籍,旨在让更多人了解和学习云原生时代的底层网络模型与实现机制,指导企业在落地云原生时的网络方案选型。全书包括:容器网络虚拟化基础、Docker容器网络、Kubernetes网络和Istio网络4部分,共6章。第1章容器网络虚拟化基础将支撑容器网络的内核技术娓娓道来。第2章简单介绍了Docker原生的容器网络能力。Kubernetes网络分为3章,第3章介绍Kubernetes网络的基础概念和使用,第4章为读者剖析了Kubernetes网络的底层实现原理,第5章详解了业界主流的Kubernetes网络插件。Istio网络总共1章,重点解析Istio网络流量管控的背后机制。本书适合作为高等院校计算机相关专业云计算课程的参考资料,也适合云计算从业者,特别是希望对云原生网络技术有较深入了解并希望将其应用到日常工作中的所有读者阅读。
比价列表
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠