经过一个阶段的准备,视频版本的 《Kubernetes 完全教程》出炉了。

课程一共分为七节,另外有一节 Docker 预备课,每节课大约一个多小时。目标是让从没接触过 Kubernetes 的同学也能通过这个课程掌握 Kubernetes。

为什么要学习 Kubernetes

在介绍课程之前,先说说为什么要学习 Kubernetes 以及什么人需要学习 Kubernetes。

记得一次我在微博上说 OpenStack 主力公司 Mirantis 公开承认 OpenStack 衰败,转投 Kubernetes 阵营,然后引起很多人讨论。有人说还好没入 OpenStack 的坑,也有人说,看来对 Kubernetes 也要谨慎,不能跟风搞,说不定火一段时间也就偃旗息鼓了。

大家的担心也是有道理的,技术人学一门技术其实是一项投资,投资就肯定期望能有长期受益。但每一项技术都有其历史使命,学习的收益取决于其技术生命周期的长短和适用范围。很多技术在开始的时候是很难评估其生命周期的,投资肯定有风险。当然,不学习,不投资,是没有了直接的投资风险,但更大的风险是机会风险,错失了技术变革带来的机会。所以技术人评估是否要学习一项新技术,最好持开放心态,如果都不试图去理解一下新技术到底要解决什么问题,也更没办法做进一步的评估。

好吧,理性的分析就到这里,我的角色转换为 Kubernetes 布道师了,开始王婆卖瓜。

Kubernetes 本身是容器掀起的服务器端应用标准化趋势下的产物(虽然 Kubernetes 本身是源自 Google 的 Borg 和 Omega,但它能被业界接受,是依赖于容器的广泛普及的,这个在 《The State of the Kubernetes Ecosystem》这本书里也有提到。),所以如果你自己或者所在企业已经接受了容器,肯定需要进一步考虑容器的编排,这时候学习一下 Kubernetes,至少有助于最后做选型。

如果你是系统运维人员,那恭喜你,Kubernetes 的首要目标用户就是系统运维人员。Kubernetes 接过了 OpenStack 的棒,继续实现运维人员那个把机器和应用当牲畜而不是宠物的梦想。利用 Kubernetes 可以实现运维人员一直在努力实现的部署标准化,滚动升级,自动伸缩,监控日志标准化。哪怕最后不采用 Kubernetes,学下 Kubernetes 了解下它是怎么做的也肯定有帮助。

如果你是服务端开发人员,以前的基础设施变更可能和你关系不是太大,OpenStack 把物理机变成虚拟机,你的程序还是按原来的写法弄。但 Kubernetes 时代不同了,一方面 Kubernetes 提供的能力可以协助你简化应用开发,另外一方面,要享受 Kubernetes 带来的标准化的好处,就需要让渡一部分程序的能力出去。所以你的程序不可能不受 Kubernetes 的影响,你要学习下如何开发 Kubernetes Native Application。

如果你是服务器端测试人员,是不是天天为了各种测试环境和开发,运维撕扯?拥抱 Kubernetes 吧,一键搭建整个系统不是梦。何况 Kubernetes 之上的自动化接口测试,性能测试工具还大有可为。

如果你是服务器端架构师或者基础研发人员,研发了各种基础框架,性能追踪工具,却很难推动业务应用升级?可以了解下 Kubernetes 上的 Service Mesh 是如何将这种基础组件作为可独立升级的模块的。如果你正在研发一个分布式调度系统,来解决应用的调度以及任务分发,更应该了解下 Kubernetes 的状态控制器的架构思路。

如果你是客户端开发人员,好吧,你可以不用关心。不过如果你想做全栈工程师,耗子叔都说了,只学 javascript 肯定不够的,再学学 Kubernetes,至少多了一栈。

课程介绍

  • 预备课:Docker 以及 Docker 网络

    这节课是为没有 Docker 基础的同学准备的,用通俗的方式讲解了容器和 Docker 的价值和目标,并通过 shell 脚本手动组装了一个自定义的 “Docker” — Xocker,通过这个例子理解 Linux 容器技术, chroot/namespace/cgroups 以及容器网络。

  • 第一课:Kubernetes 架构概述

    这节课先讲解了 Kubernetes 的由来以及它和 Borg, Mesos, Omega 的关系和差异,然后整体分析了它的部署架构和逻辑架构,以及和传统的分布式调度机制实现的运维或调度系统的差异,最后分析了为什么说 Kubernetes 的架构是一种面向未来的架构。

  • 第二课:Kubernetes 的安装和运维

    通过演示手动搭建 Kubernetes,逐个讲解了 Kubernetes 的组件以及配置参数。然后讲解 Kubernetes 的高可用实现方案以及 selfhosting。

  • 第三课:Kubernetes 的网络和存储

    这节课首先讲解了 Kubernetes 的网络,主要包含两部分:

    1. Kubernetes 的 Service ClusterIP 机制是如何实现的。
    2. Pod 之间的网络方案,以 Flannel 为例进行讲解。

    然后讲解了 Kubernetes 的 Volume 机制,以及PersistentVolume,PersistentVolumeClaim,StorageClass 是要解决什么场景的问题。

    最后演示了手动通过创建一个跨主机网络的方案。

  • 第四课:Kubernetes 的 API Spec 以及安全机制 这节课主要讲 Kubernetes 的 API Spec,Service/ReplicaSet/Deployment/DaemonSet/StatefulSet 等 API Object 主要用来解决问题的场景是什么。 然后讲 Kubernetes 1.7 带来的 RBAC(Role-Based Access Control) 授权以及 ServiceAccount 机制。

  • 第五课:Kubernetes 的应用管理(案例) 这节课通过案例,进行分析如何将一个应用 Kubernetes 化,如何通过 Kubernetes 提供的 API Object 描述集群状态,如何利用 Kubernetes 提供的能力,比如 autoscale,affinity,tolerations 来降低我们的研发运维成本。

  • 第六课:Kubernetes 的日志监控与故障排除 这节主要分析 Kubernetes 上的日志与监控方案,如何运维 Kubernetes 上的应用,发生问题是如何排查。

  • 第七课:Kubernetes 的扩展开发 这节课主要讲解如何对 Kubernetes 进行扩展,主要包括 CloudProvider, VolumeProvisioner 以及 CustomResourceDefinitions。通过对 Kubernetes 扩展开发的了解,更深入的理解 Kubernetes 架构的灵活性。

当前课程第三课已经录制完毕,后续课程还在录制中。

如果学习课程的过程中有问题,可以通过邮件,微博(@jolestar),或者在 github 仓库上提 issue 来和我咨询。

最后说一下课程的付费问题,这个课程是付费的,98元。这个课程是公司支持推出的,也并不指望通过这个课程赚钱,当时讨论的结论是,如果是免费的,可能你看到就放收藏夹里永远不打开了,人总是有惰性的,更珍惜自己有付出的东西。另外一方面是,这种课程,光看是学不会的,总需要资源做实验,付费用户我们会给发送 QingCloud 代金券,可以在云上做练习。一个集群一小时也就2块左右,用完就删除或者关机,98可以学很长时间了。

相关链接


  1. Kubernetes & Microservice Kubernetes 是如何支持微服务的,以及 Service Mesh 是什么。

  2. Borg, Omega, and Kubernetes》Google 的论文,详述了 Kubernetes 和 Borg,Omega 之间的渊源以及积累的经验如何在 Kubernetes 继承。

  3. The State of the Kubernetes Ecosystem》 Kubernetes 生态圈,这本书详述了当前 Kubernetes 整个生态圈的状况。

  4. Kubernetes 完全课程