前言
Kubernetes(简称K8s)发布至今已经被越来越多的公司所接纳,其受欢迎程度更是超过了人们的想象,已逐渐成为很多公司的标配,尤为重要的是掌握Kubernetes几乎成为所有互联网技术人员必备的一项技能。
Kubernetes的诞生象征着下一代云计算的时代已经来临,它的出现让很多应用和架构逐步实现了统一化、标准化、简单化,降低了公司因为架构设计不合理带来的问题,而且也大大减少了运维成本,使用Kubernetes可以轻轻松松管理上千台服务器、上万个容器节点。虽然Kubernetes给我们带来了诸多便利,减少了超过半数的应用运维工作,但是迄今为止学习Kubernetes依旧是一件很困难的事情。首先是它的核心概念颇多,学习起来比较乏味,而且部分概念难以理解,从而导致学习成本甚高;其次Kubernetes涉及的领域也比较广泛,了解过CNCF的读者可能知道,以Kubernetes为中心展开的周边云原生的生态是多么宏伟且庞大的一张蓝图。由此看来,学习Kubernetes并不是一件容易的事情,也并非是一项两三天就能掌握的技术,但这些并不意味着Kubernetes是一艘不可驾驶的“船舶”,我们只需要找到方向由浅入深,系统地学习Kubernetes的设计理念及周边比较重要且常用的知识,这样下来无论公司有什么样的需求场景,无论今后再学习什么样的周边生态,都不再是一件困难的事情。而本书的出发点就是为了解决上述问题,让读者更加清晰明了、全面、系统地学习Kubernetes知识及周边的一些常用工具的使用,从而成为一位合格的Kubernetes全栈工程师及DevOps工程师。
本书根据不同的知识结构将内容划分为7个板块,共18章,分别为安装篇、基础篇、进阶篇、高级篇、运维篇、DevOps篇和拓展篇。
第1、2章为安装篇,主要介绍Kubernetes集群高可用安装,让读者掌握如何高效地搭建一套高可用的Kubernetes集群并应用于企业实践,当然对于Kubernetes的安装不仅限于书中的版本(本书使用的Kubernetes版本为1.22),其他版本的安装步骤与此类似。
第3~7章为基础篇,将着重介绍本书的主角Kubernetes,同时也会介绍Docker的基础和镜像的制作优化等。Kubernetes部分包含Kubernetes的基础概念(Master、Node和Pod)、核心调度资源(Deployment、StatefulSet、DaemonSet、CronJob)、服务发布(Service和Ingress)和配置管理(ConfigMap和Secret)。
第8~11章为进阶篇,主要介绍Kubernetes的持久化存储、动态存储、CSI、高级调度(容忍、污点和亲和力)、服务质量、权限管理、Kubernetes资源配额管理。
第12、13章为高级篇,主要介绍云原生存储、中间件容器化、Operator和Helm的使用。
第14~16章为运维篇,主要介绍针对Kubernetes的日志收集(EFK)、监控告警(Prometheus和Grafana)、生产级服务发布Ingress实践。
第17章为DevOps篇,主要介绍基于Kubernetes、Jenkins、Harbor、GitLab等工具建设生产级的DevOps平台,实现开发、测试、UAT、生产环境的流水线设计。
第18章为拓展篇,主要介绍云原生基石——服务网格Istio的使用,实现对Kubernetes内部服务的细粒度流量管理。
综上,本书不仅介绍了Kubernetes生产级高可用架构、Kubernetes基础及进阶知识、高级调度、服务发布以及稍复杂的Kubernetes持久化及权限管理、包管理工具Helm和Operator的使用,同时也介绍了基于Prometheus的监控告警、基于Jenkins+Harbor+GitLab+Kubernetes实现DevOps平台建设,还介绍了Kubernetes周边一些CNCF孵化的项目等,涵盖了大部分技术人员都会遇到的Kubernetes技术难点及企业中一些比较常见的技术方案。特别是,书中的案例都来自于生产一线,并经过多次验证,可以直接用于生产环境。
本书既适合从零开始的读者,也适合运维人员、开发人员和架构师使用。
本书还配备了完整的命令代码,请扫描以下二维码获取:
读者如果在使用本书的过程中遇到问题,可登录GitHub(https://github.com/dotbalo/kubernetesguidebook)寻求解答或发邮件到booksaga@126.com,邮件主题为“云原生Kubernetes全栈架构师实战”。
限于笔者水平,书中难免出现疏漏,敬请业界高手与专家不吝指教。
杜宽
2022.1.1