kubernetes读书笔记



What is Kubernetes?

官方解释

Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
翻译成大白话就是:“K8S 负责自动化运维管理多个 Docker 程序的集群”。

Why is Kubernetes?

试想下传统的后端部署办法:把程序包(包括可执行二进制文件、配置文件等)放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。
有问题吗?显然有!最大的一个问题在于:如果服务的请求量上来,已部署的服务响应不过来怎么办?传统的做法往往是,如果请求量、内存、CPU 超过阈值做了告警,运维马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力。
问题出现了:从监控告警到部署服务,中间需要人力介入!那么,有没有办法自动完成服务的部署、更新、卸载和扩容、缩容呢?这,就是 K8S 要做的事情:自动化运维管理 Docker(容器化)程序。

软件开发70年历史,软件工程发展了近50年,互联网从出现到现在的蓬勃发展二十多年。软件开发的模型从最早的瀑布模型,到敏捷开发,再到现在的DevOps理念。软件的形态从物理扎线,到打孔编程,再到大机,到微机,到网络时代的C/S、B/S、再到移动互联网时代App。架构的演变经过几十年的进化,在硬件、网络、信息的认知、用户数等都达到条件后,再才发展出了微服务,然后进而才出现了Kubernetes的框架。

绝大部分的人认为Kubernetes只是一个基础平台。但实际大部分人都想不明白,为什么为出现Kubernetes这样的平台。物理机不能跑微服务吗,虚拟机不能跑微服务吗?你想不明白这个问题,你就没法入门Kubernetes,遗憾的是,这一点也是绝大多数Kubernetes所没有关注到的。

Kubernetes的出现是大型互联网公司(Google)在非常庞大的微服务体系下,为了降低维护成本,为了提高维护效率,提高交付效率,更重要是为了服务自治不断思考和实践才开发出来的。IT行业的技术革新,总是会有先驱者为我们艰辛的躺平道路,然后我们再站在巨人的肩膀上借得更高的视野,但是现在很多人都被眼前的树叶给遮挡了,比如目前互联网浮躁的就业环境。

正题:Kubernetes读书笔记

1,《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》

1.jpg
这本书或者说Kubernetes,对于当时的我来说,非常的有魔力,现在回想起来,也能不禁笑出声来。
2.png
非常适合小白入门,但是也仅限于入门,与其说是权威指南,不如说是入门指南。
里面的内容,几乎涵盖了Kubernetes运维相关的的方方面面,广度有余,而深度不足。

或许是因为书名起的调太高,亦或是Kubernetes涉及的知识点过于庞杂,导致内容的翔实层度以及前置知识对于小白的友好程度,并不能十分匹配权威二字。
虽然如此,但是我还是非常推荐选择这本书作为入门教材。
但是,如果想仅凭这本书就入门Kubernetes的话,你至少还需要以下前置知识:

  • 微服务架构,及微服务能解决的问题
  • 对应微服务的语言生态,如JAVA、GO、Python等
  • 基础的软件配置管理,如代码管理、CI/CD、版本管理
  • 基础的生产维护管理,如变更管理、流程管理、监控、成本管理等
  • 其它运维知识,如基础网络、中间件、运维工具等
看山是山,看水是水
如果没有足够上述前置知识,读第一遍,对所有Kubernetes涉及到概念的理解,只会停留在表面。同时,有心的读者还会配合B站上相关的X天入门k8s的教程食用,学完之后会有一种,原来Kubernetes就是这啊,已被我拿下的错觉。
看山不是山,看水不是水
读第二遍,你会发现,已经不仅仅是温故而知新了,原来你发现了很多第一遍没有关注到的知识点,当时根本没有深入的思考,于是,第二遍读完之后,你会有种Kubernetes到底是个啥的困惑,这种困惑甚至会让你对自己产生怀疑。
看山还是山,看水还是水
如果,第二遍的困惑能激发你的求知欲,带着问题去由点到面的去完成各个支线任务,那么,再回来读第三遍,你会发现:

Kubernetes是什么?它不是简单的master/worker,controller/apiserver/etcd/scheduler等等一些二进制及配置文件。
也不仅仅是pod/deployment/service/daemonset等等一些部署单元,也更不是一个简单的PAAS平台。
它是一个体系,包含了软件工程管理、软件开发模型和理念、项目管理、架构设计、运维管理、交付管理等等,除此之外才是一个类PAAS平台。

原来,Kubernetes确实就像它的简介那样,直接,神奇,而又令人兴奋。

对于运维而言,这本书涉及到的内容,入门已经够了,然而在实际的维护过程中只能算一个操作工,必须参照手册或者由高级工程师指导才能干活。
除此之外,对于开发而言,还远远不够,甚至连入门都算不上。
正是由于以上这些原因,很多公司并没有足够的技术和人员储备,所以,对上Kubernetes显得尤为谨慎,甚至有些谈K色变。

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

3.png
阅读上一本书的时候,网络部分的内容几乎是一笔带过,对于网络方面比较薄弱的开发者来说,理解起来比较困难,所以就由点到面的展开,找到了这本书,恶补网络相关的内容。
这本书也带有权威二字,如果说上一本书权威成色不足的话,那这本书就完全是有辱权威二字了。
云计算的世界里,计算最基础,存储最重要,网络最复杂。对于这么复杂的一个领域,输出一本错误百出、大面积抄袭博客的书籍,实在是对读者的不负责。
如果你有Kubernetes网络方面的疑惑,建议你有一定的甄别能力之后,再来读这本书,只有这样,才能去糟取精。

3,《深入剖析Kubernetes》

5.jpg
这本书我没有读过,但是这本书的内容取自同一作者的极客时间的《深入剖析Kubernetes》课程,这个课程我是读过的,作者是张磊,2021年CNCF基金会TOC名单中国内唯一的入选者。CNCF基金会TOC名单,基本上就已经决定了这本书的含金量,
唯一的不足,可能是重理论而缺少实践,对于还没有入门的读者来说,非常的不友好,更适合有一定理论和开发基础的读者。

4,《Kubernetes生产化实践之路》

6.jpeg

未完,待续…