本文将介绍一些学习 Kubernetes 的入门资源和文档。为了方便手机阅读,所有文档和资源都提供了二维码,这样扫描二维码就可以直接查看。
了解基本概念
首先推荐你花几分钟去看一下由微软贡献给 CNCF 的漫画《Phippy Goes to the Zoo》,跟着 Phippy 和她的侄女 Zee 到动物园中认识一下 Kubernetes 这个大家庭。
https://www.cncf.io/phippy
通过漫画对 Kubernetes 中的基本概念有了初步了解后,可以跟着官方文档中的交互式教程来实际操作,看一下它们到底是如何管理应用的,包括集群创建、应用部署、访问、扩展以及滚动更新等。这套教程使用 Katacoda 提供的环境,所以不需要本地的机器就可以在浏览器中进行操作。
https://kubernetes.io/docs/tutorials/kubernetes-basics
接下来是 Kubernetes 的文档,包括 Overview、Workloads、Services 等,进一步了解这些基本概念的细节。
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes
最后,再跟着 Kubernetes 创始人 Brendan Burns 创建的系列视频(YouTube)进一步深入学习 Kubernetes 资源对象的工作原理。
http://aka.ms/k8sbasics
了解基本架构
熟悉了基本概念之后,可以继续 Kubernetes Architecture 部分,了解 Kubernetes 的基本架构,包括主要的组件:
https://kubernetes.io/docs/concepts/overview/components
以及 Master 与 Node 之间是如何通信的:
https://kubernetes.io/docs/concepts/architecture/master-node-communication
然后,跟着 kubeadm 和 Kubernetes The Hard Way 的教程,探索一下各个组件的配置方法以及通信原理。
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
https://github.com/kelseyhightower/kubernetes-the-hard-way
最后,再回到 Kubernetes 本身的设计上,了解 Kubernetes 的设计准则以及从 Borg、Omega 等借鉴的经验,也就是 Google 发表的两篇经典论文:
Large-scale cluster management at Google with Borg
Borg, Omega, and Kubernetes - Lessons learned from three container-management systems over a decade
https://ai.google/research/pubs/pub43438
https://queue.acm.org/detail.cfm?id=2898444
动手实践
动手实践阶段可以跟着 Katacoda 提供的一系列 Kubernetes 教程对集群部署和应用程序管理等进行实践操作。这个系列包括 17 种不同场景,在浏览器中就可以完成所有操作。
https://www.katacoda.com/courses/kubernetes
接着,根据 Kubernetes Getting Started 教程部署一套 Kubernetes 集群。这里你可以使用 minikube、kubeadm 等在本机或者虚拟机中搭建,也可以选择云平台提供的托管集群服务。这里最主要的目的是学习如何创建一套准生产环境可用的 Kubernetes 集群。
https://kubernetes.io/docs/setup/
集群准备好后,就可以进一步深入 Kubernetes 的核心功能,比如认证授权、调度、网络、存储、扩展等等。这些都在 Kubernetes 文档的 CONCEPTS 和 TASKS 模块中。
最佳实践
首先推荐 Brendan Burns 撰写的《Designing Distributed Systems》,学习如何基于 Kubernetes 设计分布式系统,特别是应用程序向 Kubernetes 迁移时应该遵循哪些设计理念。这是一本免费的电子书,可以直接到 Azure 网站上下载。
https://azure.microsoft.com/zh-cn/resources/designing-distributed-systems/
接下来就是在使用 Kubernetes 时的最佳实践。如果你使用了云平台,并且云平台提供了 Kubernetes 服务,那么该云平台的 Kubernetes 文档就是你应该首先参考的最佳实践。即使你没有使用该云平台,这些文档通常也是很不错的参考。比如,这儿是 AKS 的最佳实践文档,涵盖了大部分集群管理和开发人员应该遵循的最佳实践。
https://docs.microsoft.com/zh-cn/azure/aks/best-practices
再接着,对于企业级应用来说,安全是一个最核心的要素。如何保证 Kubernetes 集群以及其上应用程序的安全呢?推荐你去读一读 Liz Rice 和 Michael Hausenblas 撰写的 《Kubernetes Security》。
https://kubernetes-security.info
最后,Kubernetes 在落地实践过程之中会碰到哪些问题?如果碰到了问题,又该如何解决呢?《Kubernetes Failure Stories》就整理了最近几年 Kubernetes 真实场景中的故障案例,帮助你减少运行 Kubernetes 中的问题。
https://k8s.af/