深入剖析Kubernetes / Kubernetes原来可以如此简单
张磊
Kubernetes社区资深成员与项目维护者
 
  • 课程目录
  • 课程介绍
  • 开篇词 | 打通“容器技术”的任督二脉

    我希望通过对容器与Kubernetes项目的逐层剖析,能够让你面对容器化浪潮时不再踌躇无措,有一种拨云见日的酣畅淋漓。

  • 01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐

    Docker项目,用近乎完美地解决了Pass项目的打包问题。于是,它开源不久便从脱颖而出,迅速占领了所有云计算领域头条。

  • 02 | 预习篇 · 小鲸鱼大事记(二):崭露头角

    解决了应用打包的技术难题,同开发者与生俱来的的亲密关系,再加上PaaS概念已经深入人心的完美契机,是Docker项目一举走红的重要原因。

  • 03 | 预习篇 · 小鲸鱼大事记(三):群雄并起

    在2014~2015年间的容器生态大爆发中,Docker公司和Mesosphere公司,依托自身优势率先占据了有利位置,但这却并不是结局。

  • 04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定

    Kubernetes社区的成功归功于,它是以开发者为核心,构建一个相对民主和开放的容器生态。

  • 05 | 白话容器基础(一):从进程说开去

    对于Docker等大多数Linux容器,Cgroups是制造约束的主要手段,Namespace是修改进程视图的主要方法。

  • 06 | 白话容器基础(二):隔离与限制

    一个正在运行的Docker容器,是一个启用了多个Namespace的应用进程,它能够使用的资源量受Cgroups的限制。

  • 07 | 白话容器基础(三):深入理解容器镜像

    rootfs,是Linux容器文件系统实现的核心方式。它包含了一个操作系统的所有文件和目录,保证了Docker容器深入到操作系统级别的环境一致性。

  • 08 | 白话容器基础(四):重新认识Docker容器

    我会首先讲解Docke容器使用的主要场景,然后再次解读Linux容器的Namespace、Cgroups、rootfs。

  • 09 | 从容器到容器云:谈谈Kubernetes的本质

    Kubernetes为用户提供的不仅仅是一个工具,而是一套帮助使用容器构建分布式作业的依赖和框架。

  • 10 | Kubernetes一键部署利器:kubeadm

    在今天的这次分享中,我重点介绍了kubeadm这个部署工具的工作原理和使用方法。

  • 11 | 从0到1:搭建一个完整的Kubernetes集群

    今天,我们从0开始,在Bare-metal环境下使用kubeadm工具部署了一个完整的Kubernetes集群。

  • 12 | 牛刀小试:我的第一个容器化应用

    在今天的分享中,我会通过一个小案例,和你近距离体验Kubernetes的使用方法。

  • 13 | 为什么我们需要Pod?

    Pod,实际上是在扮演传统基础设施里“虚拟机”的角色;而容器,则是这个虚拟机里运行的用户程序。

  • 14 | 深入解析Pod对象(一):基本概念

    Pod(而不是容器)才是Kubernetes项目中的最小编排单位。将这个设计落实到API对象上,容器(Container)就成了Pod属性里的一个普通的字段。

  • 15 | 深入解析Pod对象(二):使用进阶

    今天,我会详细介绍Pod对象更高阶的使用方法,希望通过对这些实例的讲解,你可以更深入地理解Pod API对象的各个字段。

  • 16 | 编排其实很简单:谈谈“控制器”模型

    今天,我以Deployment为例,详细讲解了Kubernetes项目如何通过一个称作“控制器模式”的设计方法,实现了对各种不同的对象或者资源的编排。

  • 17 | 经典PaaS的记忆:作业副本与水平扩展

    今天,我为你详细讲解了Deployment这个Kubernetes项目中,最基本的编排控制器的实现原理和使用方法。

  • 18 | 深入理解StatefulSet(一):拓扑状态

    StatefulSet的作用之一,就在是使用Pod模板创建Pod时,对它们进行编号,并且按照编号顺序逐一完成创建工作。

  • 19 | 深入理解StatefulSet(二):存储状态

    今天,我详细介绍了StatefulSet处理存储状态的方法,并以此为基础总结了StatefulSet控制器的工作原理。

  • 20 | 深入理解StatefulSet(三):有状态应用实践

    我以MySQL集群为例,和你分享了一个实际的StatefulSet的编写过程。

  • 21 | 容器化守护进程的意义:DaemonSet

    我首先简单介绍了StatefulSet的滚动更新能力,然后重点讲解了本专栏的第三个重要编排对象:DaemonSet。

  • 22 | 撬动离线业务:Job与CronJob

    我会分享Job的编排方法、completions和parallelism字段、Job Controller的执行原理。

  • 23 | 声明式API与Kubernetes编程范式

    从“使用Kubernetes部署应用”到“使用Kubernetes编写应用”的蜕变,是从你从一个用户到玩家的晋级之路。

  • 24 | 深入解析声明式API(一):API对象的奥秘

    今天,我们要达到的目的是,通过标准的kubectl create和get操作,来管理自定义API对象。

  • 25 | 深入解析声明式API(二):编写自定义控制器

    今天,我将为你剖析Kubernetes API编程范式的具体原理,并带你一起编写了一个自定义控制器。

  • 26 | 基于角色的权限控制:RBAC

    Role + RoleBinding + ServiceAccount的权限分配方式,是你要重点掌握的内容。

  • 27 | 聪明的微创新:Operator工作原理解读

    Operator的工作原理,是利用自定义API资源,描述你要部署的“有状态应用”;然后在自定义控制器里,根据自定义API对象的变化,完成具体的部署和运维工作。

  • 28 | PV、PVC、StorageClass,这些到底在说啥?

    PVC描述的,是Pod想要使用的持久化存储的属性;PV描述的,则是一个具体的Volume的属性;而StorageClass描述的,则是PV和PVC的绑定关系。

  • 29 | PV、PVC体系是不是多此一举?从本地持久化卷谈起

    正是通过PV和PVC,以及StorageClass这套存储体系,这个后来新添加的持久化存储方案,对Kubernetes已有用户的“破坏”,几乎可以忽略不计。

  • 30 | 编写自己的存储插件:FlexVolume与CSI

    与FlexVolume相比,CSI把插件职责从“两阶段处理”扩展成了Provision、Attach和Mount三阶段。

  • 31 | 容器存储实践:CSI插件编写指南

    在今天这篇文章中,我以一个DigitalOcean的CSI插件为例,和你分享了编写CSI插件的具体流程。

  • 32 | 浅谈容器网络

    容器要想跟外界通信,它发出的IP包就必须从Network Namespace里出来,来到宿主机上。而解决方法就是:为容器创建一个Veth Pair设备。

  • 33 | 深入解析容器跨主机网络

    在本篇文章中,我为你详细讲解了Flannel UDP和VXLAN模式的工作原理。这两种模式其实都可以称作“隧道”机制。

  • 34 | Kubernetes网络模型与CNI网络插件

    用一个字概括Kubernetes网络模型就是“通”。容器间、容器与宿主机间都要通,且是直接基于容器和宿主机的IP地址。

  • 35 | 解读Kubernetes三层网络方案

    在本篇文章中,我为你详细讲述了Fannel host-gw模式和Calico这两种纯三层网络方案的工作原理。

  • 36 | 为什么说Kubernetes只有soft multi-tenancy?

    NetworkPolicy只是宿主机上的一系列iptables规则。这跟传统IaaS里面的安全组,其实是类似的原理。

  • 37 | 找到容器不容易:Service、DNS与服务发现

    实际上,Service机制以及Kubernetes的DNS插件,都是在帮助你解决同样一个问题,即如何找到我的某一个容器?

  • 38 | 从外界连通Service与Service调试“三板斧”

    我分享了从外部访问Service的几种方式和具体的工作原理,以及当Service出现故障时,如何根据它的工作原理,按照一定的思路去定位问题的可行之道。

  • 39 | 谈谈Service与Ingress

    在实际的生产环境中,Ingress带来的灵活度和自由度,对于使用容器的用户来说,其实是非常有意义的。

  • 40 | Kubernetes的资源模型与资源管理

    我先为你讲解了Kubernetes对资源的定义方式和资源模型的设计,然后讲述了Kubernetes对Pod进行Eviction的具体策略和实践方式。

  • 41 | 十字路口上的Kubernetes默认调度器

    我和你详细分享了K8s默认调度器的设计与实现,并分析了默认调度器现在正在经历的重构、发展路线,以及未来的走向。

  • 42 | Kubernetes默认调度器调度策略解析

    在本篇文章中,我为你讲述了 Kubernetes 默认调度器里的主要调度算法。

  • 43 | Kubernetes默认调度器的优先级与抢占机制

    在本篇文章中,我为你详细讲述了 Kubernetes 里关于 Pod 的优先级和抢占机制的设计与实现。

  • 44 | Kubernetes GPU管理与Device Plugin机制

    我为你详细讲述了 Kubernetes 对 GPU 的管理方式,以及它所需要使用的 Device Plugin 机制。

  • 45 | 幕后英雄:SIG-Node与CRI

    在本篇文章中,我首先为你介绍了 SIG-Node 的职责,以及 kubelet 这个组件的工作原理。

  • 46 | 解读 CRI 与 容器运行时

    在本篇文章中,我为你详细解读了 CRI 的设计和具体工作原理,并为你梳理了实现CRI 接口的核心流程。

  • 47 | 绝不仅仅是安全:Kata Containers 与 gVisor

    今天,我为你介绍了拥有独立内核的安全容器项目,对比了 KataContainers 和 gVisor 的设计与实现细节。

  • 48 | Prometheus、Metrics Server与Kubernetes监控体系

    我介绍了Kubernetes当前监控体系的设计、Prometheus 在其中的地位,以及以它为核心的监控系统的架构设计。

  • 49 | Custom Metrics: 让Auto Scaling不再“食之无味”

    今天,我为你详细讲解了 Kubernetes 里对自定义监控指标,即 Custom Metrics 的设计与实现机制。

  • 50 | 让日志无处可逃:容器日志收集与管理

    我建议你将应用日志输出到stdout和stderr,然后通过在宿主机上部署 logging-agent 来集中处理日志。

  • 51 | 谈谈Kubernetes开源社区和未来走向

    我为你详细讲述了 CNCF 和 Kubernetes 社区的关系,以及 Kubernetes 社区的运作方式。

  • 52 | 答疑:在问题中解决问题,在思考中产生思考

    今天,我会对本专栏部分文章的思考题,进行一次集中地汇总和答疑,希望帮你更好地理解和掌握 Kubernetes 项目。

  • 特别放送 | 2019 年,容器技术生态会发生些什么?

    今天我想再和你做一次分享,一起聊聊在2019年,容器技术生态会发生些什么。

  • 特别放送 | 基于 Kubernetes 的云原生应用管理,到底应该怎么做?

    接下来我会再通过几篇文章,与你分享“云原生应用管理”,让你更加深刻地理解Kubernetes本质。

  • 结束语 | Kubernetes:赢开发者赢天下

    “深入剖析Kubernetes专栏”的结束,其实是你技术生涯全新的开始。我相信你一定能够带着这个赢开发者赢天下的启发,在云计算的海洋里继续乘风破浪,一往无前!

  • 结课测试|这些Kubernetes的相关知识,你都掌握了吗?

    学习的知识和技能有多少转化成自己的了?一起来测一测。

限时福利丨立省 ¥40

拼团+口令「study2020」到手仅 ¥89,立省 ¥40,24:00 恢复原价

你将获得

  • 容器基础知识详解;
  • 从0搭建Kubernetes集群;
  • 剖析Kubernetes的核心特性;
  • 掌握基于Kubernetes的容器编排。

讲师介绍

张磊,《Docker容器与容器云》作者,Kubernetes社区资深成员与项目维护者,Kubernetes容器运行时和集群调度等多个核心特性的作者之一。

张磊曾先后任职于浙江大学计算机与软件研究所,Hyper/Kata虚拟化容器团队,微软研究院(Microsoft Research),长期专注并活跃于容器集群管理与云计算数据中心领域,连续三次被微软授予该领域“最有价值专家”(MVP)称号。

课程介绍

毫无疑问,Kubernetes已经成为容器领域当之无愧的事实标准。除了Google、Microsoft等技术巨擘们在容器领域里多年的博弈外,国内的BAT、滴滴、蚂蚁、今日头条等技术大厂,也都已将容器和Kubernetes列入未来的战略重心,无数中小型企业也正走在容器化的道路上。

从长远角度来看,Kubernetes项目将会成为企业服务器端技术栈中标准的一环,并连同它所推崇的容器化理念,成为广大后端技术人员和开发者的一门必修课。

但是,想要啃下Kubernetes这个“硬骨头”并不那么容易,初学者、从业者往往都会遇到诸多难题,比如:

  1. Kubernetes太复杂,概念太多,根本掌握不透;
  2. 文档都读了,培训也参加了,却还是摸不清Kubernetes的套路;
  3. Kubernetes项目更新频率简直飞起,完全跟不上社区的节奏;
  4. Kubernetes代码如此之多,开源项目定制开发真是让人头大。

为什么?因为Kubernetes并不是一个我们过去认知中的、“典型”的容器开源项目,除了研读大量的文档和代码外,更重要的是要深度理解Kubernetes的设计思想和初衷。

“万变不离其宗”。本课程将摆脱技术文档沉闷的叙述风格,从开发者和使用者的真实逻辑出发,逐层剖析Kubernetes项目的核心特性,在生动有趣的讲述中,逐步揭示其蕴含的设计原则和试图表达的容器编排理念。

本课程共包括如下几个模块。

  1. “白话”容器技术基础: 用饶有趣味的解说,梳理容器技术生态的发展脉络,讲述容器技术的来龙去脉与实现原理,让你知其然,并且知其所以然。

  2. Kubernetes集群的搭建与实践: 以浅显易懂的语言,讲述Kubernetes集群背后的原理,并从0开始搭建一套Kubernetes集群,带你领略Kubernetes集群的“一键安装”。

  3. 容器编排与Kubernetes核心特性剖析: 这个模块是本课程重中之重的内容,从分布式系统设计的视角出发,抽象和归纳出这些特性中体现出来的普遍方法,然后带着这些指导思想去逐一阐述Kubernetes项目关于编排、调度和作业管理的各项核心特性。

  4. Kubernetes开源社区与生态: 我会和你一起探讨容器社区技术演进之路,带你思考如何同团队一起平衡内外部需求,逐渐成为社区中不可或缺的一员。

课程目录

适合人群

  • 具备一定服务端基础知识,对容器感兴趣的互联网从业者;
  • 想要进阶容器技术的软件开发人员;
  • 希望在容器时代大展拳脚的运维工程师和架构师;
  • 希望了解和学习容器技术背后原理的技术管理者、技术销售和市场从业者。

特别放送

订阅须知