你好,我是陈皓,网名左耳朵耗子。
这篇文章我们来重点学习 Docker 和 Kubernetes,它们已经是分布式架构和自动化运维的必备工具了。对于这两个东西,你千万不要害怕,因为技术方面都不算复杂,只是它们的玩法和传统运维不一样,所以你不用担心,只要你花上一点时间,一定可以学好的。
Docker
- 你可以先看一下Docker的官方介绍 Docker Overview 。
- 然后再去一个Web在线的Playground上体验一下, Katacoda Docker Playground 或者是 Play With Docker 。
- 接下来,跟着 Learn Docker 这个文档中的教程自己安装一个Docker的环境,实操一把。
- 然后跟着 Docker Curriculum 这个超详细的教程玩一下Docker。
有了上述的一些感性体会之后,你就可以阅读Docker官方文档 Docker Documentation 了,这是学习Docker最好的方式。
如果你想了解一下Docker的底层技术细节,你可以参看我的文章。
- Docker 基础技术:Linux Namespace(上)
- Docker 基础技术:Linux Namespace(下)
- Docker 基础技术:Cgroup
- Docker 基础技术:AUFS
- Docker 基础技术:DeviceMapper
还有一些不错的与Docker网络有关的文章你需要阅读及实践一下。
- A container networking overview
- Docker networking 101 - User defined networks
- Understanding CNI (Container Networking Interface)
- Using CNI with Docker
Docker有下面几种网络解决方案:Calico 、Flannel 和 Weave ,你需要学习一下。另外,还需要学习一下 netshoot ,这是一个很不错的用来诊断Docker网络问题的工具集。
关于这几个容器网络解决方案的性能对比,你可以看一下下面这几篇文章或报告。
- Battlefield: Calico, Flannel, Weave and Docker Overlay Network
- Comparison of Networking Solutions for Kubernetes
- Docker Overlay Networks: Performance analysis in high-latency enviroments
如果你对Docker的性能有什么问题的话,你可以看一下下面这些文章。
- IBM Research Report: An Updated Performance Comparison of Virtual Machines and Linux Containers
- An Introduction to Docker and Analysis of its Performance
下面是一些和存储相关的文章。
- Storage Concepts in Docker: Network and Cloud Storage
- Storage Concepts in Docker: Persistent Storage
- Storage Concepts in Docker: Shared Storage and the VOLUME directive
然后是跟运维相关的文章。
最后,推荐看看 Valuable Docker Links ,其中收集并罗列了一系列非常不错的 Docker 文章。
最佳实践
下面分享一些与Docker相关的最佳实践。
- Best Practices for Dockerfile ,Docker官方文档里的Dockerfile的最佳实践。
- Docker Best Practices ,这里收集汇总了存在于各个地方的使用Docker的建议和实践。
- Container Best Practices ,来自Atomic项目,是一个介绍容器化应用程序的架构、创建和管理的协作型文档项目。
- Eight Docker Development Patterns ,八个Docker的开发模式:共享基础容器、共享同一个卷的多个开发容器、开发工具专用容器、测试环境容器、编译构建容器、防手误的安装容器、默认服务容器、胶黏容器(如英文链接不能访问,可阅读中文版本)。
Kubernetes
Kubernetes 是Google开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本,也是CNCF最重要的项目之一,主要功能包括:
- 基于容器的应用部署、维护和滚动升级;
- 负载均衡和服务发现;
- 跨机器和跨地区的集群调度;
- 自动伸缩;
- 无状态服务和有状态服务;
- 广泛的Volume支持;
- 插件机制保证扩展性。
Kubernetes发展非常迅速,已经成为容器编排领域的领导者。
首先,我推荐你阅读Kubernetes前世今生的一篇论文。
- Borg, Omega, and Kubernetes ,看看Google这十几年来从这三个容器管理系统中得到的经验教训。
学习Kubernetes,有两个免费的开源电子书。
- 《Kubernetes Handbook》,这本书记录了作者从零开始学习和使用Kubernetes的心路历程,着重于经验分享和总结,同时也会有相关的概念解析。希望能够帮助你少踩坑,少走弯路,还会指引你关注kubernetes生态周边,如微服务构建、DevOps、大数据应用、Service Mesh、Cloud Native等领域。
- 《Kubernetes指南》,这本书旨在整理平时在开发和使用Kubernetes时的参考指南和实践总结,形成一个系统化的参考指南以方便查阅。
这两本电子书都不错,前者更像是一本学习教程,而且面明显广一些,还包括Cloud Natvie、Service Mesh以及微服务相关的东西。而后者聚焦于Kubernetes本身,更像一本参考书。
另外,我这两天也读完了《Kubernetes in Action》一书,感觉写的非常好,一本很完美的教科书,抽丝剥茧,图文并茂。如果你只想读一本有关Kubernetes的书来学习Kubernetes,那么我推荐你就选这本。
但是也别忘了Kubernetes的官方网站:Kubernetes.io,上面不但有全面的文档 ,也包括一个很不错的 官方教程 。
此外,还有一些交互式教程,帮助你理解掌握,以及一些很不错的文章推荐你阅读。
一些交互式教程
一些文章
这里还有一些不错的文档,你应该去读一下。
- Kubernetes tips & tricks
- Achieving CI/CD with Kubernetes
- How to Set Up Scalable Jenkins on Top of a Kubernetes Cluster
- 10 Most Common Reasons Kubernetes Deployments Fail Part I 和 Part II
- How to Monitor Kubernetes ,一共有4个篇章
- Logging in Kubernetes with Fluentd and Elasticsearch
- Kubernetes Monitoring: Best Practices, Methods, and Existing Solutions
网络相关的文章
要学习Kubernetes,你只需要读一下,下面这个Kubernetes 101系列的文章。
- Kubernetes 101 - Networking
- Kubernetes networking 101 - Pods
- Kubernetes networking 101 - Services
- Kubernetes networking 101 - (Basic) External access into the cluster
- Kubernetes Networking 101 - Ingress resources
- Getting started with Calico on Kubernetes
CI/CD相关的文章
- Automated Image Builds with Jenkins, Packer, and Kubernetes
- Jenkins setups for Kubernetes and Docker Workflow
- Lab: Build a Continuous Deployment Pipeline with Jenkins and Kubernetes
最佳实践
- Kubernetes Best Practices by Sachin Arote ,AWS工程师总结的最佳实践。
- Kubernetes Best Practices by Sandeep Dinesh ,Google云平台工程师总结的最佳实践。
Docker和Kubernetes资源汇总
下面是 GitHub 上和 Docker & Kubernetes相关的Awesome系列。
虽然上面的这些系列非常全的罗列了很多资源,但是我觉得很不系统。对于系统的说明Docker和Kubernetes生态圈,我非常推荐大家看一下 The New Stack 为Kubernetes出的一系列的电子书或报告。
-
The New Stack eBook Series ,非常完整和详实的 Docker 和 Kubernetes 生态圈的所有东西。
-
Book 01: The Docker Container Ecosystem
- Book 02: Applications & Microservices with Docker & Containers
- Book 03: Automation & Orchestration with Docker & Containers
- Book 04: Network, Security & Storage with Docker & Containers
- Book 05: Monitoring & Management with Docker & Containers
- Book 06: Use Cases for Kubernetes
- Book 07: State of the Kubernetes Ecosystem
- Book 08: Kubernetes Deployment & Security Patterns
- Book 09: CI/CD with Kubernetes
- Book 10: Kubernetes solutions Directory
- Book 11: Guid to Cloud-Native Microservices
小结
总结一下今天的内容。Docker 和 Kubernetes已经成为分布式架构和自动化运维方面的不可或缺的两大基本构成,是你必需要学习的。虽然它们的玩法跟传统运维不一样,但技术方面并不算复杂,只要你花上一点时间,一定会学好的。
在这篇文章中,我推荐了Docker和Kubernetes基础技术方面的学习资料,并给出了存储、运维、网络、CI/CD等多方面的资料,同时列出了与之相关的最佳实践。相信认真学习和消化这些知识,你一定可以掌握Docker和Kubernetes两大利器。
下篇文章,我们将学习机器学习和人工智能方面的内容。敬请期待。
下面是《程序员练级攻略》系列文章的目录。
- 开篇词
-
入门篇
- 正式入门
-
修养篇
-
专业基础篇
- 理论学科
- 系统知识
-
软件设计篇
-
高手成长篇
- 异步I/O模型和Lock-Free编程(系统底层知识)
- Java底层知识
- 数据库
- 分布式架构入门(分布式架构)
- 分布式架构经典图书和论文(分布式架构)
- 分布式架构工程设计(分布式架构)
- 微服务
- 容器化和自动化运维
- 机器学习和人工智能
- 前端基础和底层原理(前端方向)
- 前端性能优化和框架(前端方向)
- UI/UX设计(前端方向)
- 技术资源集散地
- 微leng 👍(87) 💬(1)
耗子叔 这几期感觉像是在贴链接,能不能找一两个重点细细解读下,还是想听听你的东西。
2018-07-24 - 洛子墟 👍(0) 💬(1)
公司系统挂在k8s上,然后开启了health check。之后就悲剧了,偶尔有重启,原因应该是死锁。但是无法dump,无法保留现场,很难查询原因,能否有2全的方案?可以保留事故现场,多谢
2018-08-01 - 啦啦啦将比 👍(63) 💬(5)
这么多抱怨的,你知道我自学,为找这些东西费了多大得劲吗
2018-07-29 - 左耳朵 👍(45) 💬(1)
近期读完了《Kubernetes in Action》一书,5星好评。如果你只想读一本有关K8s的书来学习K8s,那么我推荐你就选这本。
2019-03-20 - 刘強 👍(20) 💬(3)
在二叉树视频里,看到耗子的一头白发,顿生感动和佩服。没有人能随随便便成功,耗子的几百行代码值20万,背后付出了多少。
2018-07-24 - 打奥特曼的小怪兽 👍(9) 💬(0)
最近在学习docker k8s 很需要指导方案。耗子叔的专栏就是巨大宝藏。网络上自己搜索的文档良莠不齐!
2018-08-01 - Joran 👍(8) 💬(2)
耗子叔你的知识广度和深度,我十分敬佩,但是这么多我感觉够我学一辈子了
2018-07-24 - FuriousEric 👍(5) 💬(0)
推荐本k8s的书,cloudman写的《每天5分钟玩转kubernetes》,非常的通俗易懂,快速入门。如果你本来就会docker,那么马上就能上手k8s入门。
2020-10-14 - 冰糕不冰 👍(5) 💬(0)
学习编程没有捷径,这些资料自己要找全很不容易。路已经铺好了,还要人推着你走么?
2018-08-02 - 章洁 👍(3) 💬(0)
一、世界上真没有太多的捷径,有些好的经验方法,但仍需要自己消化。 二、除了望洋兴叹外,不如跨步向前,每一步都让你与目标更近。 这是除了技术本身之外读到的两点。
2018-07-29 - manx00 👍(3) 💬(0)
看到目录最后的三个点,感觉路还长…
2018-07-24 - 简言 👍(2) 💬(0)
给出方向就够了,路还是要自己走的。
2018-12-10 - 36194998 👍(2) 💬(0)
感谢耗子叔的归纳,非常珍贵的资料
2018-08-10 - 别人家的孩子 👍(2) 💬(0)
谢谢,正需要。
2018-07-25 - 机械师种太阳 👍(2) 💬(0)
非常期待人下一期人工智能~~
2018-07-24