新書推薦:
《
收尸人
》
售價:HK$
74.8
《
大模型应用开发:RAG入门与实战
》
售價:HK$
91.8
《
不挨饿快速瘦的减脂餐
》
售價:HK$
68.8
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:HK$
113.6
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:HK$
135.7
《
化妆品学原理
》
售價:HK$
57.3
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:HK$
48.3
《
爱你,是我做过最好的事
》
售價:HK$
57.3
|
編輯推薦: |
1)马哥教育CEO马哥(马永亮)撰写,渐进式铺陈,适合入门与进阶
2)涵盖Kubernetes架构、部署、核心自定义资源、扩缩容、存储卷、网络插件与策略、安全、调度策略、监控、日志等话题
3)渐进式讲解,手把手示范,大量实操案例,随时动手验证
|
內容簡介: |
全书分为3篇。第壹篇详细讲解Kubernetes系统基础架构及核心概述,并提供一个Kubernetes快速部署和应用的入门指南。第二篇剖析分Kubernetes系统的核心组件,对Pod、Controller、Service、Network Policy、Volume、ConfigMap和Secret等都有着深入讲解。第三篇主要关注实际应用,以DevOps为主线讲解Kubernetes在企业落地应用的解决方案示例。
|
目錄:
|
前言
第1章Kubernetes系统基础1
1.1容器技术概述1
1.1.1容器技术的功用2
1.1.2容器简史3
1.1.3Docker的功能限制4
1.2Kubernetes概述4
1.2.1Kubernetes简史4
1.2.2Kubernetes特性5
1.2.3Kubernetes概念和术语6
1.3Kubernetes集群组件10
1.3.1Master组件10
1.3.2Node组件12
1.3.3核心附件13
1.4Kubernetes网络模型基础13
1.4.1网络模型概述13
1.4.2集群上的网络通信15
1.5本章小结16
第2章Kubernetes快速入门17
2.1Kubernetes的核心对象17
2.1.1Pod资源对象18
2.1.2Controller19
2.1.3Service20
2.1.4部署应用程序的主体过程21
2.2部署Kubernetes集群22
2.2.1kubeadm部署工具22
2.2.2集群运行模式24
2.2.3准备用于实践操作的集群环境25
2.2.4获取集群环境相关的信息26
2.3kubectl使用基础与示例26
2.4命令式容器应用编排29
2.4.1部署应用(Pod)30
2.4.2探查Pod及应用详情33
2.4.3部署Service对象36
2.4.4扩容和缩容38
2.4.5修改及删除对象40
2.5本章小结41
第3章资源管理基础42
3.1资源对象及API群组42
3.1.1Kubernetes的资源对象43
3.1.2资源及其在API中的组织形式46
3.1.3访问Kubernetes REST API48
3.2对象类资源格式49
3.2.1资源配置清单50
3.2.2metadata嵌套字段51
3.2.3spec和status字段52
3.2.4资源配置清单格式文档53
3.2.5资源对象管理方式54
3.3kubectl命令与资源管理56
3.3.1资源管理操作概述56
3.3.2kubectl的基本用法57
3.4管理名称空间资源59
3.4.1查看名称空间及其资源对象60
3.4.2管理Namespace资源61
3.5Pod资源的基础管理操作61
3.5.1陈述式对象配置管理方式62
3.5.2声明式对象配置管理方式64
3.6本章小结65
第4章管理Pod资源对象66
4.1容器与Pod资源对象66
4.2管理Pod对象的容器68
4.2.1镜像及其获取策略69
4.2.2暴露端口70
4.2.3自定义运行的容器化应用71
4.2.4环境变量72
4.2.5共享节点的网络名称空间73
4.2.6设置Pod对象的安全上下文74
4.3标签与标签选择器75
4.3.1标签概述75
4.3.2管理资源标签77
4.3.3标签选择器78
4.3.4Pod节点选择器nodeSelector79
4.4资源注解80
4.4.1查看资源注解81
4.4.2管理资源注解82
4.5Pod对象的生命周期82
4.5.1Pod的相位82
4.5.2Pod的创建过程83
4.5.3Pod生命周期中的重要行为84
4.5.4容器的重启策略87
4.5.5Pod的终止过程87
4.6Pod存活性探测88
4.6.1设置exec探针89
4.6.2设置HTTP探针90
4.6.3设置TCP探针92
4.6.4存活性探测行为属性93
4.7Pod就绪性探测94
4.8资源需求及资源限制96
4.8.1资源需求96
4.8.2资源限制98
4.8.3容器的可见资源99
4.8.4Pod的服务质量类别100
4.9本章小结101
第5章Pod控制器103
5.1关于Pod控制器103
5.1.1Pod控制器概述104
5.1.2控制器与Pod对象105
5.1.3Pod模板资源106
5.2ReplicaSet控制器106
5.2.1ReplicaSet概述107
5.2.2创建ReplicaSet108
5.2.3ReplicaSet管控下的Pod对象109
5.2.4更新ReplicaSet控制器111
5.2.5删除ReplicaSet控制器资源114
5.3Deployment控制器114
5.3.1创建Deployment115
5.3.2更新策略116
5.3.3升级Deployment119
5.3.4金丝雀发布121
5.3.5回滚Deployment控制器下的应用发布123
5.3.6扩容和缩容123
5.4DaemonSet控制器124
5.4.1创建DaemonSet资源对象124
5.4.2更新DaemonSet对象126
5.5Job控制器127
5.5.1创建Job对象128
5.5.2并行式Job129
5.5.3Job扩容130
5.5.4删除Job130
5.6CronJob控制器131
5.6.1创建CronJob对象131
5.6.2CronJob的控制机制132
5.7ReplicationController133
5.8Pod中断预算133
5.9本章小结134
第6章Service和Ingress136
6.1Service资源及其实现模型136
6.1.1Service资源概述136
6.1.2虚拟IP和服务代理138
6.2Service资源的基础应用140
6.2.1创建Service资源140
6.2.2向Service对象请求服务141
6.2.3Service会话粘性142
6.3服务发现143
6.3.1服务发现概述143
6.3.2服务发现方式:环境变量145
6.3.3ClusterDNS和服务发现146
6.3.4服务发现方式:DNS146
6.4服务暴露147
6.4.1Service类型147
6.4.2NodePort类型的Service资源149
6.4.3LoadBalancer类型的Service资源150
6.4.4ExternalName Service151
6.5Headless类型的Service资源152
6.5.1创建Headless Service资源153
6.5.2Pod资源发现153
6.6Ingress资源154
6.6.1Ingress和Ingress Controller154
6.6.2创建Ingress资源155
6.6.3Ingress资源类型157
6.6.4部署Ingress控制器(Nginx)159
6.7案例:使用Ingress发布tomcat161
6.7.1准备名称空间161
6.7.2部署tomcat实例162
6.7.3创建Service资源163
6.7.4创建Ingress资源164
6.
|
內容試閱:
|
为什么要写这本书
作为置身于IT技术领域多年的实践者和教育者,我们一直盼望着行业迎来这样一个时刻:异构的IT基础设施环境所造成的开发和部署系统应用纷繁复杂的局面终于迎来了终结者,开发人员无须再考虑复杂多样的运行环境下软件程序的移植问题,运维人员不用再手动解决运行环境中组件间的依赖关系等,从而让各自的核心职责都回归到开发和保证系统稳定运行本身。终于,以Docker为首的容器技术为此带来了基础保障,并在容器编排技术的支撑下尘埃落定,甚至连IT管理者心心念念多年的DevOps文化运动也借此找到了易于落地的实现方案。于是,系统运行割据多年的局面终于将走向天下一统。
尽管距Kubernetes 1.0的发布不过三四年的光景,但其如今的影响力在IT技术领域完全算得上空前绝后,目前,一众大小公司都在使用或正筹划使用这一IT技术发展史上可能最为成功的开源项目。Linux软件基金会的常务董事Jim Zemlin在Google Cloud Next 17大会上曾表示,Kubernetes是“云时代的Linux”。的确,Kubernetes应该是开源世界有史以来迭代最快的项目,而且在几乎所有需要采用容器技术的场景里成为占统治地位的解决方案,其发展速度恐怕也仅有Linux内核项目可堪匹敌。2018年3月,Kubernetes成为CNCF旗下“毕业”的第一个项目,并荣获2018年 OSCON最具影响力奖项。
目前,Kubernetes保持着每年发布四个重要版本的节奏,版本的每次更新都会引入数个新特性。这种快速迭代的机制在为用户不断带来惊喜的同时,也给他们在学习和使用上造成了一些困扰:相关领域的可参考书籍仍不丰富,互联网上可以得到的众多文档并非源于同一个版本,以及厘清脉络拼凑成完整的知识框架所需的时间成本较大。因此,我在课程以及直接或间接参与生产或测试环境的交付之余便萌生了撰写一本Kubernetes入门、进阶与实战的书籍的想法,将自己学习和使用的经验总结、沉淀并分享给更多有此需求的技术同行,帮助大家快速找到入门路径,降低时间成本,并迅速投入测试和生产之用。
的确,在写作过程中,Kubernetes这种快速迭代的机制,以及每每引入的新特性,在小惊喜之余带给笔者更多的却是真真切切的梦魇般的恐惧感:在一年多的写作时间里,许多章节几易其稿,却也依然无法确保能够涵盖即将成为核心功能的特性,于是沮丧感几度如影随形,直到自我安慰着“基础的核心特性基本不会发生大的变动,只要能帮助读者弄清楚Kubernetes系统的基础架构及核心工作逻辑就算工夫没有白费”之后方才释然。于是便有了这本力图尽量多地包罗Kubernetes系统目前主流特性及实践路径的入门和进阶之书、工具之书。
本书特色
本书致力于帮助容器编排技术的初级和中级用户循序渐进地理解与使用Kubernetes系统,因此本书的编写充分考虑到初学者进入新知识领域时的茫然,采用由浅入深、提纲挈领、再由点到面的方式讲解每一个知识细节。对于每个知识点,不仅介绍了其概念和用法,还分析了为什么要有这个概念,实现的方式是什么,背后的逻辑为何,等等,使读者不仅能知其然,还能知其所以然。
本书不仅要带领读者入门,更是一本可以随时动手加以验证的实践手册,而且对于部分重要的内容还会专门一步步地给出具体的实操案例,帮助读者在实践中升华对概念的理解。本书几乎涵盖了应用Kubernetes系统的所有主流知识点,它甚至可以作为计划考取CKA认证的读者的配套参考图书。
读者对象
云计算工程师
运维工程师
系统开发工程师
程序架构师
计划考取CKA认证的人员
其他对容器编排感兴趣的人员
如何阅读本书
阅读使用本书之前,读者需要具备Docker容器技术的基础使用能力。本书逻辑上共分为五大部分,15章。
第一部分(第1~2章),介绍Kubernetes系统的基础概念及其基本应用。
第1章介绍容器编排系统出现的背景,以及Kubernetes系统的功能、特性、核心概念、系统组件及应用模型。
第2章讲解Kubernetes的核心对象,以及直接使用命令管理资源对象的快速入门技巧。
第二部分(第3~6章),介绍核心资源类型及其应用。
第3章介绍资源管理模型、陈述式与声明式资源管理接口,并通过命令对比说明两种操作方式的不同之处。
第4章介绍Pod资源的常用配置、生命周期、存储状态和就绪状态检测,以及计算资源的需求及限制等。
第5章介绍Pod控制器资源类型,重点讲解了控制无状态应用的ReplicaSet、Deployment、DaemonSet控制器,并介绍了Job和CronJob控制器。
第6章介绍Service和Ingress资源类型,涵盖Service类型、功用及其实现,以及Ingress控制器、Ingress资源的种类及其实现,并通过案例详细说明了Ingress资源的具体使用方式。
第三部分(第7~9章),介绍存储卷及StatefulSet控制器。
第7章主要介绍存储卷类型及常见存储卷的使用方式、PV和PVC出现的原因及应用,以及存储类资源的应用和存储卷的动态供给。
第8章介绍使用一等资源类型Conf?igMap和Secret为容器应用提供配置及敏感信息的方式。
第9章主要介绍有状态应用的Pod控制器资源StatefulSet,包括基础应用、动态扩缩容及更新机制等。
第四部分(第10~11章),介绍安全相关的话题,主要涉及认证、授权、准入控制、网络模型与网络策略。
第10章重点讲解认证方式、Service Account和TLS认证、授权插件类型及RBAC,并于章节的最后介绍LimitRanger、ResourceQuota和PodSecurityPolicy三种类型的准入控制器及相关的资源类型。
第11章主要介绍网络插件基础及f?lannel的三种后端实现与应用、借助Canal插件实现网络策略的方式,以及Calico网络插件的基础使用。
第五部分(第12~15章),介绍Kubernetes系统的高级话题。
第12章介绍Pod资源的调度策略及高级调度方式的应用,包括节点亲和、Pod资源亲和以及基于污点和容忍度的调度。
第13章介绍系统资源的扩展方式,包括自定义资源类型、自定义资源对象、自定义API及控制器、Master节点的高可用、基于Kubernetes的PaaS系统等话题。
第14章介绍资源指标、自定义指标、监控系统及HPA控制器的应用。
第15章介绍简化应用管理的工具Helm,并基于Helm介绍如何为Kubernetes系统提供统一的日志收集与管理工具栈EFK。
有一定Kubernetes使用经验的读者可以挑选感兴趣的章节阅读。而对于初学者,建议从基础部分逐章阅读,但构建在Kubernetes系统之上的应用多数都要求读者能熟练使用相关领域的知识和技能,如果对某些内容的理解比较困难,那么可能是由于相关知识欠缺,建议读者通过其他资料补充学习相关知识后再阅读本书。编撰本书的主要意图是为初学者提供一个循序渐进的实操手册,不过,任何读者也都可以将它作为一本案头的工具书随时进行查阅。
排版约定
本书中所有的命令都附带了或长格式或短格式的命令提示符,以便读者区分文中正常使用的“#”和“$”,命令提示格式为“~]#”或“~]$”,较长的命令使用了“\”为续行符,且命令及其输出使用了有别于正文的字体。
更多内容和附带代码
本书相关的配置清单等都放置于https:github.comikubernetes的相关仓库中,在实践中需要时可直接克隆至本地实验环境中使用。
勘误和支持
尽管进行授课及技术写作已十数年,但动笔著书尚属首次,考虑到排版印刷后的表述无可更改,整个写作过程战战兢兢、如履薄冰。进行每一个关键话题的表述之前都查阅了大量资料,并且反复斟酌,既期望能够将知识点清晰、准确地加以描述,也试图避免因自己的理解偏差而误导读者。尽管如此,由于笔者水平有限,加之编写时间仓促,书中难免存在不妥之处,恳请读者批评指正。如果读者有更多的宝贵意见,请通过邮箱mage@magedu.com联系我,期待能够得到你们的真挚反馈,在技术之路上互勉共进。另外,本书的勘误将会发布在笔者的博客(http:www.ilinux.io)或本书专用的GitHub主页(https:github.comikubernetes)上,欢迎读者朋友们关注并留言讨论。
参考资料
对于具有不同知识基础和结构的读者来说,仅凭一本书的内容根本不足以获取所需的全部信息,大家还可以通过以下信息获取关于Kubernetes系统的更多资料,本书在写作期间也从这些参考资料中获得了很大的帮助。
Kubernetes Documentation和Kubernetes API Reference,这是提供Kubernetes领域相关知识最全面、最深入和最准确的参考材料。
《Kubernetes in Action》,本书的谋篇布局及写作理念与此书不谋而合,因此笔者在本书中对许多概念的理解和验证也以此书为素材,并且在写作之时有多处概念的描述也借鉴了此书的内容。
Red Hat Openshift Documentation,Red Hat公司的产品文档规范、权威、细致且条理清晰,是不可多得的参考材料。
The New Stack的技术文章及调研报告是了解Kubernetes系统技术细节和行业应用现状及趋势的不可多得的优秀资源。
Bitnami及Heptio站点上的博客文章提供了深入了解和学习Kubernetes系统某个特定技术细节的可靠资料。
另外,本书还大量借鉴了通过搜索引擎所获取到的不少技术文章和参考文档,在这里一并向这些书籍和文章的作者表示深深的谢意!
致谢
感谢Kubernetes社区创造性的劳动成果和辛苦付出,我们因此有了学习和使用如此优秀的开源系统的可能性,这也是本书得以编撰的基石。
感谢我的同事们在我写作期间给予的支持和理解,他们的努力让我拥有了得以放心写作的时间和精力。感谢提供了相关行业信息并促使我下定决心开始编写此书的张常安和张士杰先生,本书的写作过程中也得到了他们支援的宝贵素材。
感谢参加了我的课程(马哥教育)的学员朋友们,大家的学习热情及工作中源源不断反馈而来的信息与需求在不同程度上帮助我一直保持着对技术的追求和热忱,教学相长在此得到了充分的体现。
感谢机械工业出版社华章公司高婧雅女士对本书写作的悉心指导,以及对我本人的包容和理解。
最后要特别感谢我的家人,为写作这本书,我牺牲了很多陪伴他们的时间,也正因为他们在生活中的关怀和鼓励才使我能够踏踏实实地完成本书内容的编写。
马永亮
2018年10月
|
|