易燃物汇聚 YouTube 有声书与书评
Kubernetes网络权威指南:基础、原理与实践 封面

Kubernetes网络权威指南:基础、原理与实践

杜军

7997人在读
20.4万字总字数
¥67.28定价

内容简介

本书是容器与Kubernetes网络的基础和进阶书籍,旨在让更多人了解和学习云原生时代的底层网络模型与实现机制,指导企业在落地云原生时的网络方案选型。全书包括:容器网络虚拟化基础、Docker容器网络、Kubernetes网络和Istio网络4部分,共6章。第1章容器网络虚拟化基础将支撑容器网络的内核技术娓娓道来。第2章简单介绍了Docker原生的容器网络能力。Kubernetes网络分为3章,第3章介绍Kubernetes网络的基础概念和使用,第4章为读者剖析了Kubernetes网络的底层实现原理,第5章详解了业界主流的Kubernetes网络插件。Istio网络总共1章,重点解析Istio网络流量管控的背后机制。

读者书评

★★★★★

对于线上环境是使用kubernetes集群部署的,强烈推荐大家看看这本书,作者从最原始的namespace划分到veth pair,bridge,tunnel,overlay网络,再到docker的网络和kubernetes网络,以及k8s网络标准的演变之路,pod,service,ingress再到外界的lb负载均衡,还有把业务和网络剥离的service mesh,层层解剖整个kubernetes的网络世界,和选择它们的技术背后心路历程。既有垂直的深度(应用层到内核层),也有广度(kubernetes的网络世界非常的广泛,比如网络插件就有很多种选择,cni网络插件钩子),值得大家时不时地翻看和温习。相比于在网上看一下细枝末节的文章,我更喜欢看这类自成体系的书籍。感恩遇见。~

★★★★★

本来想通过此书来了解k8s的原理,结果作者一上来并没有按套路讲什么“办酒席,需要打包……”之内的容器抽象概念,而是从Linux内核的虚拟化说起,再逐层递进到虚拟设备-路由-封包-隧道…Docker-kubertets…,真正把容器基于Linux内核虚拟化技术的这个本质说了个透,作者不愧为业界大佬,分析问题一针见血、直击要害,其实对得起《Kubernetes网络权威指南》这个书名。美中不足的是有些核心点只是寥寥带过,并没有展开细说,比如BPF之类的程序,当然,每一个关键的知识点深入下去都是一门学问,路漫漫其修远兮,吾将上下而求索。

★★★★★

优点: 内容深度与广度足够,主要聚焦云原生的网络实现原理,比如基础层面的veth pair, tun/tap, netns, linux bridge, vxlan,ip tables。实现层面的flannel,calico等等。考虑到出版时间,基础层面的内容比实现层面更丰富反而是优点,因为变化不大。 缺点: 错误太多,尤其是实践相关的内容,比如截图与描述不符。实现层面的内容介绍包含具体的安装步骤,这些内容其实很容易变化,另外实现层面的内容多且抽象,难以面面俱到,所以更关注原理实现或者不依赖平台的实践示例可能会更好。 总的来说瑕不掩瑜,基础层面的内容更有价值

★★★★☆

对于linux网络虚拟化的章节看得很仔细,也做了一些实验去验证书中的理论。对于后面的章节内容看得比较快,基本走马观花。不过不妨碍这本书的作者对于kubernetes网络架构从前期引导到后期描述都很细致,值得今后多多翻阅参考。

★★★★★

非常好的技术讲解。基本上把容器网络技术的来龙去脉清清楚楚的梳理了一遍;这些技术基本上也是sdn的基础,值得反复揣摩; 因为软件组网的灵活性,将各种基础技术像积木一样组合排列,能实现许多传统硬件组网设备很难实现的功能,sdn的发展还大有可为

★★★★★

作者功底深厚,一看就是从一线做起,又写书,书从底层讲起,深入浅出,完全可以当成一本工具书,先浅显的读一遍,以后具体实施的过程中需要某一部分知识,再来回回顾。 摘抄段落: 1、虽然在软件版本快速迭代的高压面前,这种良好的追求有时也会变成一种奢求,但是我坚信工程师不能只当一个使用者,而一定要理解当前正在使用的技术的底层实现机制。 2、Docker容器作为一项轻量级的虚拟化技术,它的隔离能力来自Linux内核的namespace技术。 3、network namespace #创建一个namespace ip netns add netns1 #进入命令空间 ip netns exec netns1 ip link list #列出命名空间 ip netns list #删除命令空间 ip netns delete netns1 #启用回环接口 (lo) ip netns exec netns1 ip link set lo up #创建一对虚拟的以太网卡 ip link add veth0 type veth peer name veth1 #把 veth pair的一端放到netns1 network namespace上 ip link set veth1 netns netns1 #此是veth0跟veth1之间还不能通信,需要绑定ip,并设置为启动 ip netns exec netns1 ifconfig veth1 10.1.1.1/24 up ifconfig veth0 10.1.1.2/24 up #这样在主机上就可以ping通了 [root@k8s-node2 ~]# ping 10.1.1.1 PING 10.1.1.1 (10.1.1.1) 56(84) bytes of data. 64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.071 ms #再进入 netns1 也可以ping通 10.1.1.2了 [root@k8s-node2 ~]# ip netns exec netns1 ping 10.1.1.2 PING 10.1.1.2 (10.1.1.2) 56(84) bytes of data. 64 bytes from 10.1.1.2: icmp_seq=1 ttl=64 time=0.072 ms 64 bytes from 10.1.1.2: icmp_seq=2 ttl=64 time=0.046 ms #不同network namespace之间的路由表和防火墙规则等也是隔离的,因为进入netns1查路由表和iptables规则发现空空如也 [root@k8s-node2 ~]# ip netns exec netns1 route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 veth1 [root@k8s-node2 ~]# ip netns exec netns1 iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 4、Linux的network namespace技术可以自定义一个独立的网络栈,简单到只有loopback设备,复杂到具备系统完整的网络能力,这就使得network namespace成为Linux网络虚拟化技术的基石——不论是虚拟机还是容器时代。 5、tun/tap设备就像是埋在用户程序空间的一个钩子,我们可以很方便地将对网络包的处理程序挂在这个钩子上,OpenVPN、Vtun、flannel都是基于它实现隧道包封装的。 6、容器是进程级别的隔离技术,因此相比虚拟机有启动快、占用资源少、体积小等优点。 7、查看主机上有多少个docker network,可以使用以下命令:docker network ls 8、如果希望删除某个网络,则只需使用network rm子命令: docker network rm <id> 9、每个Pod内的第一个系统容器pause的作用就是占用一个Linux的network namespace。 10、Kubernetes主机内容器的默认组网方案是bridge。flannel、Calico这些第三方插件解决容器之间的跨机通信问题,典型的跨机通信解决方案有bridge和overlay等。 11、Service具有稳定的IP地址(区别于容器不固定的IP地址)和端口,并会在一组匹配的后端Pod之间提供负载均衡,匹配的条件就是Service的Label Selector与Pod的Labels相匹配。 12、Ingress的作用就是在边界路由处开个口子,放外部流量进来。因此,Ingress是建立在Service之上的L7访问入口,它支持通过URL的方式将Service暴露到k8s集群外 13、Kubernetes Master存储了所有Service的定义和更新 14、问个开放性问题,Kubernetes为什么要发明Ingress这个概念呢?笔者认为,其中一个重要的原因便是服务动态发现和负载均衡。 15、Calico的slogan:为容器和虚拟机工作负载提供一个安全的网络连接。 16、总结Calico网络使用BGP的原因有: (1)BGP是一种简单的路由协议。 (2)拥有当前行业的最佳实践。 (3)唯一能够支撑Calico网络规模的协议。

★★★★★

K8s 网络说简单也简单,从使用角度来说;说复杂也很复杂,从异构网络的问题排查角度来说。K8s 集群所在的环境只有想不到,还没有做不到的,所以就更需要从业者从底层了解 Pod 网络,不论是运维人员还是研发人员。 书中由浅入深,介绍了 K8s 当前网络架构的演进,当然也带着读者一步步深入学习相关的网络知识。但是个人看完后,觉得最后的部分讲得太少了,只能去找其他书籍了。 看完本书后的感觉就是书如其名,应当作为 K8s 从业者必备的一本书。

★★★★★

从内容安排非常合理,对初学者很友好。 内容的深度和广度都是逐步递进的,从linux网络,到单机容器网络,到集群网络,再到网络插件和mesh,虽然有点虎头蛇尾,但是前半部分确实做到了深入浅出,可以在学习完k8s基本用法之后通过这本书继续了解容器网络方面的底层和细节内容,非常推荐。

★★★★★

个人觉得比较适合我现在这个阶段看,我现在的阶段应该是处于,基本会用,又知道一丢丢的原理,但不系统不深入,所以这本书算是给我,在会用到原理的方向前进了一步,当然前路漫漫,还有很长的路要走。所以对于我来说,还是挺不错的一本书。不过这本书,有些地方写错了,在举例子说明的时候,把ip给搞混了,文字的ip和图上的ip对不上。

★★★☆☆

错误有点多,学到了东西但是书本读起来还是需要自己查不少资料,就感觉有的地方写的还挺丰富有些就随便丢一个名词就过去了,比如bgp

书籍信息

作者杜军
出版社电子工业出版社
出版时间2019-10-01
ISBN9787121373398
分类计算机-计算机综合
格式EPUB
完结状态连载中
章节数46