Kubernetes 完全教程

标签: container kubernetes course | 发表时间:2017-09-30 08:00 | 作者:
出处:http://jolestar.com/

经过一个阶段的准备,视频版本的 《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可以学很长时间了。

qrcode_jolestar_blog2

相关链接


  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 完全课程

相关 [kubernetes 完全] 推荐:

Kubernetes 完全教程

- - 午夜咖啡
经过一个阶段的准备,视频版本的 《Kubernetes 完全教程》出炉了. 课程一共分为七节,另外有一节 Docker 预备课,每节课大约一个多小时. 目标是让从没接触过 Kubernetes 的同学也能通过这个课程掌握 Kubernetes. 为什么要学习 Kubernetes. 在介绍课程之前,先说说为什么要学习 Kubernetes 以及什么人需要学习 Kubernetes.

基于Kubernetes的Spark部署完全指南

- - DockOne.io
Yarn曾经是Hadoop默认的资源编排管理平台. 但最近情况有所变化,特别是对于Hadoop中的Spark,由于其与S3等其他存储平台集成得很好,而与Hadoop生态中其他组件反而没有太紧密的关联,因此Kubernetes正迅速替代Yarn,成为基于对象存储的Spark系统的默认编排管理平台. 在这篇文章中,我们将深入研究如何在Kubernetes集群上构建和部署Spark容器.

Kubernetes & Microservice

- - 午夜咖啡
这是前一段时间在一个微服务的 meetup 上的分享,整理成文章发布出来. 谈微服务之前,先澄清一下概念. 微服务这个词的准确定义很难,不同的人有不同的人的看法. 比如一个朋友是『微服务原教旨主义者』,坚持微服务一定是无状态的 http API 服务,其他的都是『邪魔歪道』,它和 SOA,RPC,分布式系统之间有明显的分界.

Kubernetes学习(Kubernetes踩坑记)

- - Z.S.K.'s Records
记录在使用Kubernetes中遇到的各种问题及解决方案, 好记性不如烂笔头. prometheus提示 /metrics/resource/v1alpha1 404. 原因: 这是因为[/metrics/resource/v1alpha1]是在v1.14中才新增的特性,而当前kubelet版本为1.13.

kubernetes移除Docker?

- -
两周前,Kubernetes在其最新的Changelog中宣布1.20之后将要弃用dockershime,也就说Kubernetes将不再使用Docker做为其容器运行时. 这一消息持续发酵,掀起了不小的波澜,毕竟Kubernetes+Docker的经典组合是被市场所认可的,大量企业都在使用. 看上去这个“弃用”的决定有点无厘头,那么为什么Kubernetes会做出这样的决定.

Kubernetes 监控详解

- - DockOne.io
【编者的话】监控 Kubernetes 并不是件容易的事. 本文介绍了监控 Kubernetes 的难点、用例以及有关工具,希望可以帮助大家进一步了解监控 Kubernetes. 如果想要监控 Kubernetes,包括基础架构平台和正在运行的工作负载,传统的监控工具和流程可能还不够用. 就目前而言,监控 Kubernetes 并不是件容易的事.

Kubernetes 切换到 Containerd

- - bleem
由于 Kubernetes 新版本 Service 实现切换到 IPVS,所以需要确保内核加载了 IPVS modules;以下命令将设置系统启动自动加载 IPVS 相关模块,执行完成后需要重启. 重启完成后务必检查相关 module 加载以及内核参数设置:. 1.2、安装 Containerd. Containerd 在 Ubuntu 20 中已经在默认官方仓库中包含,所以只需要 apt 安装即可:.

Spring Cloud Kubernetes指南

- -
当我们构建微服务解决方案时,SpringCloud和Kubernetes都是最佳解决方案,因为它们为解决最常见的挑战提供组件. 但是,如果我们决定选择Kubernetes作为我们的解决方案的主要容器管理器和部署平台,我们仍然可以主要通过SpringCloudKubernetes项目使用SpringCloud的有趣特性.

喜大普奔:Spark on kubernetes

- - Zlatan Eevee
两个星期前(08/15/2017),spark社区提了一个新的SPIP(Spark Project Improvement Proposals): Spark on Kubernetes: Kubernetes as A Native Cluster Manager,即用k8s管理spark集群. 经过社区2个星期的投票,看上去很快要能合入了.

Kubernetes 日志收集方案

- - IT瘾-dev
Kubernetes 中的基本日志. Kubernetes 日志收集. 以 sidecar 容器收集日志. 用 sidecar 容器重新输出日志. 使用 sidecar 运行日志采集 agent. 前面的课程中和大家一起学习了 Kubernetes 集群中监控系统的搭建,除了对集群的监控报警之外,还有一项运维工作是非常重要的,那就是日志的收集.