新書推薦:
《
行动中的理性
》
售價:NT$
440.0
《
礼制考古经典选读
》
售價:NT$
1340.0
《
MATLAB实用教程(第六版)
》
售價:NT$
695.0
《
中国思想的再发现(壹卷:近观系列,沟口雄三教授以其精湛的学术洞察力,旨在呈现一个全面而立体的中国思想图景)
》
售價:NT$
325.0
《
图以载道——传统绘画的图像叙事
》
售價:NT$
390.0
《
骨科康复学(第2版)
》
售價:NT$
1140.0
《
笔记启蒙 : 英国皇家学会与科学革命
》
售價:NT$
390.0
《
汉语副词研究论集(第六辑)
》
售價:NT$
490.0
|
編輯推薦: |
Kubernetes网络权威指南,云原生时代的底层网络模型、实现、企业落地选型必备!
|
內容簡介: |
本书是容器与Kubernetes网络的基础和进阶书籍,旨在让更多人了解和学习云原生时代的底层网络模型与实现机制,指导企业在落地云原生时的网络方案选型。全书包括:容器网络虚拟化基础、Docker容器网络、Kubernetes网络和Istio网络4部分,共6章。第1章容器网络虚拟化基础将支撑容器网络的内核技术娓娓道来。第2章简单介绍了Docker原生的容器网络能力。Kubernetes网络分为3章,第3章介绍Kubernetes网络的基础概念和使用,第4章为读者剖析了Kubernetes网络的底层实现原理,第5章详解了业界主流的Kubernetes网络插件。Istio网络总共1章,重点解析Istio网络流量管控的背后机制。本书适合作为高等院校计算机相关专业云计算课程的参考资料,也适合云计算从业者,特别是希望对云原生网络技术有较深入了解并希望将其应用到日常工作中的所有读者阅读。
|
關於作者: |
杜军,浙大SEL实验室硕士,曾任华为云架构师、咨询组专家,国内最早的容器技术布道师。开源社区自身贡献者与维护着,CNCF TOC Contributor,Kubernetes和Istio双科maintainer,对云计算技术演进与内在驱动力有深刻见解,主要研究方向为容器、微服务、DevOps、边缘计算。
|
目錄:
|
第1章夯实基础:Linux网络虚拟化 1
1.1 网络虚拟化基石:network namespace 1
1.1.1 初识network namespace2
1.1.2 配置network namespace3
1.1.3 network namespace API的使用6
1.1.4 小结 12
1.2 千呼万唤始出来:veth pair12
1.2.1 veth pair内核实现14
1.2.2 容器与host veth pair的关系15
1.2.3 小结 17
1.3 连接你我他:Linux bridge17
1.3.1 Linux bridge初体验17
1.3.2 把IP让给Linux bridge 21
1.3.3 将物理网卡添加到Linux bridge22
1.3.4 Linux bridge在网络虚拟化中的应用25
1.3.5 网络接口的混杂模式26
1.4 给用户态一个机会:tuntap设备28
1.4.1 tuntap设备的工作原理 28
1.4.2 利用tun设备部署一个VPN29
1.4.3 tun设备编程 31
1.5 iptables34
1.5.1 祖师爷netfilter34
1.5.2 iptables的三板斧:table、chain和rule36
1.5.3 iptables的常规武器39
1.6 初识 Linux 隧道:ipip45
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 物理网卡的分身术:Macvlan68
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的救护员:IPvlan75
1.9.1 IPvlan简介75
1.9.2 测试IPvlan77
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 查看容器IP85
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 如何用Kubernetes113
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的hostname121
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 特殊的无头Service151
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 为什么不推荐使用SNAT180
第 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. IPVS198
4.1.5 conntrack199
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 上位的CoreDNS212
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标准的胜出:从此江湖没有CNM229
5.2.1 CNI与CNM的转换 230
5.2.2 CNI的工作原理 231
5.2.3 为什么Kubernetes不使用Libnetwork 235
5.3 Kubernetes网络插件鼻祖flannel238
5.3.1 flannel简介 239
5.3.2 flannel安装配置241
5.3.3 flannel backend详解 244
5.3.4 flannel与etcd256
5.3.5 小结 257
5.4 全能大三层网络插件:Calico 257
5.4.1 Calico简介258
5.4.2 Calico的隧道模式 263
5.4.3 安装Calico263
5.4.4 Calico报文路径264
5.4.5 Calico使用指南267
5.4.6 为什么Calico网络选择BGP272
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-Genie299
5.7.1 为什么需要CNI-Genie 300
5.7.2 CNI-Genie功能速递 302
5.7.3 容器多IP303
第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 Mesh309
6.1.5 Service Mesh典型实现之Linkerd310
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 手工注入sidecar326
6.3.4 自动注入sidecar 327
6.3.5 从应用容器到sidecar代理的通信 329
6.4 不再为iptables脚本所困:Istio CNI插件330
6.5 除了微服务,Istio还能做更多 331
|
內容試閱:
|
自序
缘起
这些年来,我观察到每次 Linux 世界的重大技术创新都发源于内核,经过一层层面向用户的抽象和封装,演化出应用层的森罗万象。正所谓万变不离其宗!
我自认为是个old school(老派)的人,坚信维持这个世界运转的、最本质的那部分东西是不会轻易改变的。尽管新技术乱花渐欲迷人眼,但经历过时间锤炼的实用技术和工具总是历久弥新的。一个很好的例子便是传统的网络虚拟化和 BGP,它们就是在容器这个新瓶子里焕发第二春的。因此,当有时髦的新技术出现时,我的第一反应是这些新技术底层是怎么实现的,对那些看起来酷炫的功能反倒没有兴趣。正如 OpenStack 兴起的那些年,当大家都在谈论 nova、neutron 这类调度虚拟机和网络的组件时,我默默地翻读了内核虚拟机(KVM)的源码。至今,我对那种奇妙的感觉记忆犹新,恰如一个发烧级摄影爱好者走进暗房,欣喜若狂地亲自手洗一张可触摸的胶片影像。当我读懂了 KVM 时,再回过头来看 OpenStack 便有了一种会当凌绝顶,一览众山小的豁然贯通之感。
工作之余让心静下来,细细品味,认真思考技术的本质相信这是所有有激情、有梦想的工程师的共同追求。虽然在软件版本快速迭代的高压面前,这种良好的追求有时也会变成一种奢求,但是我坚信工程师不能只当一个使用者,而一定要理解当前正在使用的技术的底层实现机制。因此,在我的《云原生分布式存储基石:etcd 深入解析》一书中,开篇只字未提全书主角 etcd,而耗费将近 80 页的笔墨,从分布式系统的基本理论一直讲到一致性协议 Raft。尽管内容看似与这个高速发展、追求快节奏的社会格格不入,但我仍希望能够通过出版技术书这种本身就慢节奏且带仪式感的行为沉淀自己的思考。如果能够跟有缘的读者碰撞出思想的火花,则将是我人生的一大幸事!
我为什么写这本书
云计算的世界里,计算最基础,存储最重要,网络最复杂。在 Kubernetes 已经成为云原生代名词的今天,市面上介绍 Kubernetes 的书籍已经很多,然而限于篇幅或术业有专攻等诸多主客观因素,不少书籍对 Kubernetes 网络部分的讲解只是蜻蜓点水,甚至有些还存在专业性的错误。我经常在一些学习 Kubernetes 的论坛和群里看到有用户抱怨:传统网络架构都还没搞明白,又要理解容器网络。容器网络领域不但存在大量的术语,而且理解具体的方案需要不少前置知识,这无形中增加了学习的难度。计算机网络是我在大学里最喜欢,也是最擅长的一门课程。在我看来,计算机网络趣味性强,而且对逻辑性和动手能力要求较高。看到整个云原生网络领域正发生着激动人心的技术变革,意义不亚于上一次 SDN 兴起带来的冲击,我感觉这对传统网络工程师来说会是一次自我升级转型的契机。于是,我萌生了专门为 Docker、Kubernetes 的用户,以及传统网络工程师撰写一本云原生网络书籍的想法,破除他们学习过程中不识庐山真面目,只缘身在此山中的无力感。
关于本书
虽然书名是《Kubernetes 网络权威指南:基础、原理与实践》,但全书内容并不局限于Kubernetes。我对本书的定位是云原生领域的网络权威指南,企业落地方案的选型参考。按照我old school的思路,本书特别注重提供理解容器网络所必需的基础知识,会由浅入深地从架构、使用、实现原理等多方面展开,试图为读者呈现整个云原生网络的知识体系。
全书的脉络是:以 Linux 网络虚拟化基础作为暖场嘉宾,以 Docker 原生的容器网络承前启后,随后是主角 Kubernetes 网络粉墨登场,在各类 CNI 插件沙场点兵过后,以代表容器下半场的服务网格 Istio谢幕。
王安石在登上飞来峰后曾吟下不畏浮云遮望眼,自缘身在最高层这样的千古佳句。希望本书能够成为云计算 2.0 时代的弄潮儿们叩开网络大门的敲门砖,在解决各类场景下错综复杂的问题时能够做到口中有粮、心中不慌。不论是定位疑难杂症,还是技术选型,抑或是定制化开发都能轻松驾驭!
人生不止眼前的苟且,还有诗和远方的田野,愿更多的同路人加入。
杜军
2019 年 8 月于厦门鼓浪屿
|
|