tttttttttKUBERNETES 网络权威指南:基础.原理与实践
作 者:杜军 著
定 价:89
出 版 社:电子工业出版社
出版日期:2019年10月01日
页 数:348
装 帧:简装
ISBN:9787121373398
●目录第 1 章 夯实基础:Linux 网络虚拟化 11.1 网络虚拟化基石:network namespace ············································.11.1.1 初识 network namespace ··················································.21.1.2 配置 network namespace ··················································.31.1.3 network namespace API 的使用 ···········································.61.1.4 小结 ·······································································.121.2 千呼万唤始出来:veth pair ·······················································.121.2.1 veth pair 内核实现·························································.141.2.2 容器与 host veth pair 的关系 ··············································.151.2.3 小结 ·······································································.171.3 连接你我他:Linux bridge ························································.171.3.1 Linux bridge 初体验 ·······················································.171.3.2 把 IP 让给 Linux bridge ···················································.211.3.3 将物理网卡添加到 Linux bridge ··········································.221.3.4 Linux bridge 在网络虚拟化中的应用 ·····································.251.3.5 网络接口的混杂模式 ·····················································.261.4 给用户态一个机会:tun/tap 设备·················································.281.4.1 tun/tap 设备的工作原理···················································.281.4.2 利用 tun 设备部署一个 VPN··············································.291.4.3 tun 设备编程 ······························································.311.5 iptables·············································································.341.5.1 祖师爷 netfilter ····························································.341.5.2 iptables 的三板斧:table、chain 和 rule ··································.361.5.3 iptables 的常规武器 ·······················································.391.6 初识 Linux 隧道:ipip ····························································.451.6.1 测试 ipip 隧道 ·····························································.461.6.2 ipip 隧道测试结果复盘 ···················································.491.6.3 小结 ·······································································.501.7 Linux 隧道网络的代表:VXLAN ················································.511.7.1 为什么需要 VXLAN ······················································.511.7.2 VXLAN 协议原理简介 ···················································.521.7.3 VXLAN 组网必要信息 ···················································.541.7.4 VXLAN 基本配置命令 ···················································.551.7.5 VXLAN 网络实践·························································.561.7.6 分布式控制中心 ··························································.631.7.7 自维护 VTEP 组 ··························································.631.7.8 小结 ·······································································.681.8 物理网卡的分身术:Macvlan·····················································.681.8.1 Macvlan 五大工作模式解析 ··············································.681.8.2 测试使用 Macvlan 设备 ···················································.721.8.3 Macvlan 的跨机通信 ······················································.731.8.4 Macvlan 与 overlay 对比 ··················································.741.8.5 小结 ·······································································.751.9 Macvlan 的救护员:IPvlan························································.751.9.1 IPvlan 简介 ································································.751.9.2 测试 IPvlan ································································.771.9.3 Docker IPvlan 网络 ························································.781.9.4 小结 ·······································································.78第 2 章 饮水思源:Docker 网络模型简介 792.1 主角登场:Linux 容器 ····························································.792.1.1 容器是什么································································.792.1.2 容器与虚拟机对比 ························································.802.1.3 小结 ·······································································.812.2 打开万花筒:Docker 的四大网络模式 ···········································.812.2.1 bridge 模式 ································································.822.2.2 host 模式 ··································································.832.2.3 container 模式 ·····························································.842.2.4 none 模式··································································.852.3 最常用的 Docker 网络技巧 ·······················································.852.3.1 查看容器 IP ·······························································.852.3.2 端口映射 ··································································.862.3.3 访问外网 ··································································.872.3.4 DNS 和主机名 ····························································.872.3.5 自定义网络································································.882.3.6 发布服务 ··································································.902.3.7 docker link:两两互联 ····················································.912.4 容器网络的个标准:CNM···················································.932.4.1 CNM 标准 ·································································.932.4.2 体验 CNM 接口 ···························································.942.4.3 Libnetwork·································································.952.4.4 Libnetwork 扩展···························································.972.4.5 小结 ·······································································.982.5 天生不易:容器组网的挑战 ······················································.992.5.1 容器网络挑战综述 ························································.992.5.2 Docker 的解决方案 ·······················································.1012.5.3 第三方容器网络插件 ·····················································.1022.5.4 小结 ·······································································.1032.6 如何做好技术选型:容器组网方案沙场点兵 ····································.1032.6.1 隧道方案 ··································································.1042.6.2 路由方案 ··································································.1042.6.3 容器网络组网类型 ························································.1062.6.4 关于容器网络标准接口···················································.1072.6.5 小结 ·······································································.108第 3 章 标准的胜利:Kubernetes 网络原理与实践 1093.1 容器基础设施的代言人:Kubernetes·············································.1093.1.1 Kubernetes 简介 ···························································.1093.1.2 Kubernetes 能做什么 ······················································.1113.1.3 如何用 Kubernetes ························································.1133.1.4 Docker 在 Kubernetes 中的角色 ··········································.1133.2 终于等到你:Kubernetes 网络 ····················································.1143.2.1 Kubernetes 网络基础 ······················································.1143.2.2 Kubernetes 网络架构综述·················································.1153.2.3 Kubernetes 主机内组网模型 ··············································.1173.2.4 Kubernetes 跨节点组网模型 ··············································.1183.2.5 Pod 的 hosts 文件··························································.1203.2.6 Pod 的 hostname ···························································.1213.3 Pod 的核心:pause 容器 ··························································.1243.4 打通 CNI 与 Kubernetes:Kubernetes 网络驱动··································.1313.4.1 即将完成历史使命:Kubenet·············································.1313.4.2 网络生态步:CNI ···················································.1333.5 找到你并不容易:从集群内访问服务············································.1393.5.1 Kubernetes Service 详解···················································.1413.5.2 Service 的三个 port························································.1453.5.3 你的服务适合哪种发布形式··············································.1463.5.4 Kubernetes Service 发现···················································.1503.5.5 特殊的无头 Service ·······················································.1513.5.6 怎么访问本地服务 ························································.1533.6 找到你并不容易:从集群外访问服务············································.1543.6.1 Kubernetes Ingress·························································.1553.6.2 小结 ·······································································.1573.7 你的名字:通过域名访问服务 ···················································.1583.7.1 DNS 服务基本框架 ·······················································.1583.7.2 域名解析基本原理 ························································.1593.7.3 DNS 使用··································································.1613.7.4 调试 DNS··································································.1663.8 Kubernetes 网络策略:为你的应用保驾护航 ····································.1673.8.1 网络策略应用举例 ························································.1683.8.2 小结 ·······································································.1723.9 前方高能:Kubernetes 网络故障定位指南 ·······································.1733.9.1 IP 转发和桥接·····························································.1733.9.2 Pod CIDR 冲突 ····························································.1753.9.3 hairpin ·····································································.1763.9.4 查看 Pod IP 地址 ··························································.1763.9.5 故障排查工具 ·····························································.1783.9.6 为什么不推荐使用 SNAT ·················································.180第 4 章 刨根问底:Kubernetes 网络实现机制 1834.1 岂止 iptables:Kubernetes Service 官方实现细节探秘 ···························.1834.1.1 userspace 模式·····························································.1844.1.2 iptables 模式·······························································.1864.1.3 IPVS 模式 ·································································.1914.1.4 iptables VS. IPVS ··························································.1984.1.5 conntrack ··································································.1994.1.6 小结 ·······································································.2004.2 Kubernetes 极客们的日常:DIY 一个 Ingress Controller·························.2014.2.1 Ingress Controller 的通用框架 ············································.2024.2.2 Nginx Ingress Controller 详解 ·············································.2024.2.3 小结 ·······································································.2094.3 沧海桑田:Kubernetes DNS 架构演进之路 ······································.2094.3.1 Kube-dns 的工作原理 ·····················································.2094.3.2 上位的 CoreDNS ··························································.2124.3.3 Kube-dns VS. CoreDNS ···················································.2174.3.4 小结 ·······································································.2204.4 你的安全我负责:使用 Calico 提供 Kubernetes 网络策略·······················.2204.4.1 部署一个带 Calico 的 Kubernetes 集群 ···································.2214.4.2 测试 Calico 网络策略 ·····················································.225第 5 章 百花齐放:Kubernetes 网络插件生态 2285.1 从入门到放弃:Docker 原生网络的不足·········································.2285.2 CNI 标准的胜出:从此江湖没有 CNM ··········································.2295.2.1 CNI 与 CNM 的转换 ······················································.2305.2.2 CNI 的工作原理···························································.2315.2.3 为什么 Kubernetes 不使用 Libnetwork ···································.2355.3 Kubernetes 网络插件鼻祖 flannel ·················································.2385.3.1 flannel 简介································································.2395.3.2 flannel 安装配置 ··························································.2415.3.3 flannel backend 详解 ······················································.2445.3.4 flannel 与 etcd ·····························································.2565.3.5 小结 ·······································································.2575.4 全能大三层网络插件:Calico ····················································.2575.4.1 Calico 简介 ································································.2585.4.2 Calico 的隧道模式 ························································.2635.4.3 安装 Calico ································································.2635.4.4 Calico 报文路径 ···························································.2645.4.5 Calico 使用指南 ···························································.2675.4.6 为什么 Calico 网络选择 BGP ·············································.2725.4.7 小结 ·······································································.2745.5 Weave:支持数据加密的网络插件 ···············································.2765.5.1 Weave 简介································································.2765.5.2 Weave 实现原理···························································.2775.5.3 Weave 安装································································.2785.5.4 Weave 网络通信模型 ·····················································.2805.5.5 Weave 的应用示例 ························································.2825.5.6 小结 ·······································································.2885.6 Cilium:为微服务网络连接安全而生 ············································.2885.6.1 为什么使用 Cilium ························································.2895.6.2 以 API 为中心的微服务安全 ·············································.2945.6.3 BPF 优化的数据平面性能 ················································.2955.6.4 试用 Cilium:网络策略···················································.2975.6.5 小结 ·······································································.2995.7 Kubernetes 多网络的先行者:CNI-Genie ········································.2995.7.1 为什么需要 CNI-Genie····················································.3005.7.2 CNI-Genie 功能速递 ······················································.3025.7.3 容器多 IP ··································································.303第 6 章 Kubernetes 网络下半场:Istio 3056.1 微服务架构的大地震:sidecar 模式 ··············································.3056.1.1 你真的需要 Service Mesh 吗··············································.3066.1.2 sidecar 模式 ·······························································.3076.1.3 Service Mesh 与 sidecar ···················································.3076.1.4 Kubernetes Service VS. Service Mesh ·····································.3096.1.5 Service Mesh 典型实现之 Linkerd ········································.3106.2 Istio:引领新一代微服务架构潮流···············································.3126.2.1 Istio 简介 ··································································.3126.2.2 Istio 安装 ··································································.3136.2.3 Istio 路由规则的实现 ·····················································.3176.3 一切尽在不言中:Istio sidecar 透明注入·········································.3196.3.1 Init 容器 ···································································.3196.3.2 sidecar 注入示例 ··························································.3196.3.3 手工注入 sidecar ··························································.3266.3.4 自动注入 sidecar ··························································.3276.3.5 从应用容器到 sidecar 代理的通信········································.3296.4 不再为 iptables 脚本所困:Istio CNI 插件 ·······································.3306.5 除了微服务,Istio 还能做更多 ···················································.331
内容简介
本书是容器与Kubernetes网络的基础和进阶书籍,旨在让更多人了解和学习云原生时代的底层网络模型与实现机制,指导企业在落地云原生时的网络方案选型。全书包括:容器网络虚拟化基础、Docker容器网络、Kubernetes网络和Istio网络4部分,共6章。章容器网络虚拟化基础将支撑容器网络的内核技术娓娓道来。第2章简单介绍了Docker原生的容器网络能力。Kubernetes网络分为3章,第3章介绍Kubernetes网络的基础概念和使用,第4章为读者剖析了Kubernetes网络的底层实现原理,第5章详解了业界主流的Kubernetes网络插件。Istio网络总共1章,重点解析Istio网络流量管控的背后机制。本书适合作为高等院校计算机相关专业云计算课程的参考资料,也适合云计算从业者,特别是希望对云原生网络技术有较深入了解并希望将其应用到日常工作中的所有读者阅读。
"自序缘起这些年来,我观察到每次 Linux 世界的重大技术创新都发源于内核,经过一层层面向用户的抽象和封装,演化出应用层的森罗万象。正所谓万变不离其宗!我自认为是个“old school”(老派)的人,坚信维持这个世界运转的、最本质的那部分东西是不会轻易改变的。尽管新技术“乱花渐欲迷人眼”,但经历过时间锤炼的实用技术和工具总是历久弥新的。一个很好的例子便是传统的网络虚拟化和 BGP,它们就是在容器这个新瓶子里焕发第二春的。因此,当有时髦的新技术出现时,我的反应是这些新技术底层是怎么实现的,对那些看起来酷炫的功能反倒没有兴趣。正如 OpenStack 兴起的那些年,当大家都在谈论 nova、neutron 这类调度虚拟机和网络的组件时,我默默地翻读了内核虚拟机(KVM)的源码。至今,我对那种奇妙的感觉记忆犹新,恰如一个发烧级摄影爱好者走进暗房,欣喜若狂地亲自手洗一张可触摸的胶片......
评论晒单