总体评价

本书前十二章内容适合刚接触 K8S 的小白做入门学习,后面几章内容略显仓促收尾。作为一本 K8S 的入门书籍,还是不错的。

小白学习,一定要记得练习。

读书笔记

2021/02/27 chap. 第1章 先把Kubernetes跑起来

本书偏入门,第一章主要是通过 minikube 来体验 K8S 的功能,学一项新技术,首先需要跑起来。

2021/02/28 chap. 第2章 重要概念

本章内容主要是介绍 K8S 中的一些名词概念以及各个组件在 K8S 中的职责。

2021/03/01 chap. 至第4章 Kubernetes架构

学习了如何通过 kubeadm 部署三节点的 K8S 集群,同时学习了 K8S 的架构以及 Master 和 Node 节点分别跑哪些组件和服务。

PS:因个人资源与网络环境问题,个人使用 k3d+k3s 实践。

2021/03/02 chap. 第5章 运行应用

学习了 K8S 中不同类型 Controller 的作用以及如何通过 yaml 文件去部署这些 Controller 应用。

2021/03/03 chap. 至第7章 Rolling Update

K8S 里应用是通过 Service 关联一组 Pod 同时对外提供访问机制。K8S 提供了多种 Service 类型:

  • ClusterIP:默认类型,Service 通过 Cluster 内部的 IP 对外提供服务,只有 Cluster 内的节点和 Pod 可访问。
  • NodePort:Service 通过 Cluster 节点的静态端口对外提供服务。Cluster 外部可以通过 <NodeIP>:<NodePort> 访问 Service。这种方式下存在几个 Port 的概念,注意不要搞混。
    • nodePort 是节点上监听的端口。
    • port 是 ClusterIP 上监听的端口。
    • targetPort 是 Pod 监听的端口。
  • LoadBalancer

K8S 提供了 2 个参数 maxSurge 和 maxUnavailable 来精细控制 Pod 滚动更新时的替换数量,默认是 1。通过在 apply -f xxx.yaml --record 可以将当前命令记录到 K8S 的reversion 记录中,此时就可以通过 rollout undo 去回滚到某个版本了。

2021/03/04 chap. 至第9章 数据管理

健康检查是 K8S 中一个非常重要的功能,可以通过配置 liveness 和 readiness 实现精细化的健康检查。

  • liveness:主要用于判断容器是否正常运行,如果不正常,则会重启容器。
  • readiness:主要用于判断容器是否可以正常对外提供服务,如果不正常,则不会加入到 Service 的负载均衡中。

通过 Volume 对 K8S 中的容器提供存储能力,同时学习了 PV 和 PVC 的作用,以及通过 StorageClass 进行动态分配 PV。最后实践了一个小例子,通过对 MySQL 数据库提供持久化存储,模拟节点宕机,保证服务可用且数据完好。

2021/03/05 chap. 至第11章 Helm——Kubernetes的包管理器

K8S 中可以通过 Secret 传递密文配置,通过 ConfigMap 传递明文参数,Secret & ConfigMap 均可以通过 Volume 进行挂载,此时配置信息会进行动态更新,同时 Secret & ConfigMap 也支持通过环境变量的形式,但是与 Volume 不同的是,环境变量的方式引用配置不会被动态更新。

Helm 有 2 个重要概念:chart、release。

  • chart 是一个 K8S 应用的信息集合,包括配置模板、参数定义、依赖关系、文档说明等内容。
  • release 是 chart 的运行实例,当 chart 被安装到 K8S 集群中,就相当于生成了一个 release。

chart 目录结构:

  1. Chart.yaml,用于描述 chart 的元数据信息(其中 name、version 必填)。
  2. README.md,相当于该 chart 的使用手册(可选)。
  3. LICENSE(可选)。
  4. requirement.yaml,定义当前 chart 的依赖关系,安装过程中,依赖的 chart 也会被一起安装。
  5. values.yaml,当前 chart 的配置参数
  6. templates 目录,里面存放了描述各类 K8S 资源的配置模板文件,Helm 会将 values.yaml 文件中的配置参数注入进去,生成标准的 YAML 配置文件。

PS:书中关于 Helm 的介绍其实是 v2 的版本,据说 V3 版本有些变更,这个待后续再去官网研究一下 ChangeLog。

2021/03/06 chap. 至结束

学习了 K8S 中的网络模型,以及如何通过 Canal 来实现 Network Policy。后面了解一下 Dashboard 应用,同时介绍了 K8S 如何实现集群监控和日志管理。