你好,我是 Kubernetes 社区资深成员与项目维护者张磊,也是极客时间《深入剖析 Kubernetes 》的专栏作者。今天我来与你谈一谈,学习 Kubernetes 和容器技术体系的最佳方法,到底是什么。

我认为,学习一门综合性的技术,不应该着急一头扎进去看源码。理清楚自己的定位,才是最重要的。

定位一:纯粹的开发人员

如果你是一位纯粹的开发人员,无论是前端、后端,还是应用、游戏的开发,你首先应该明白这样两个道理:

  • Kubernetes 和容器技术主要解决的,是代码编写完成后的事情。这不单单是发布或者 CI/CD,而是指从你执行完 git commit \u0026amp;\u0026amp; git push 之后开始,都应该进入容器化的管理流程当中,当然包括后续的发布、运维、升级、回滚等所有阶段。
  • Kubernetes 体系的核心,是为开发者提供编写代码过程中的“微服务编程范式”。

比如,在你编写代码的时候,你应该清楚地知道:我该如何划分模块,就能更方便地利用到 Kubernetes 的 Pod 模型,来构建更加低耦合、高内聚的代码制品,让我后面的升级和重构工作更加容易。

拓展阅读「为什么我们需要pod?」

再比如,当你的代码需要与一个外部资源进行交互的时候,你应该首先想到:我的这个外部资源,是不是可以作为一个 Kubernetes 的 CRD 放到 Etcd 里面。这样,我编写的代码,就可以遵循一个自定义 Controller 或者 Operator 的编程范式,通过声明式 API 的方式来执行业务逻辑。这样写出来的代码一定会更加简单、健壮、容易维护。

这样的例子其实非常多。作为开发人员,你最应该关注的,是 Kubernetes API 对象的细节、容器设计模式以及 Kubernetes API 编程范式。

(Kubernetes里的所有API对象)

你应该习惯于把你的服务想象成一个个容器,把整个应用想象成一个 Pod,学会把基于容器和 Kubernetes 的设计思想和架构方式,融入到自己平常的工程实践当中。你应该大量实践这些思想和设计模式,编写各种各样的 CRD 和 Controller,并想办法提高这些自己编写的自定义 Controller 项目的性能和服务能力。你应该尝试扮演公司或者组织中推广微服务和云原生体系倡导者,并热心地帮助团队成员共同学习 Kubernetes 的设计思想和 API,全力帮助 Istio 或者 Knative 这样的 Service Mesh 和 PaaS 平台在组织中落地。

这些,都是增强你在即将到来的云计算时代竞争力的有效手段。

当然,如果你对 Kubernetes API 以及编程范式还不熟悉,甚至对 Kubernetes API 的普适性还有所怀疑,那么你可以阅读一下《深入剖析 Kubernetes》的最后一篇文章「Kubernetes:赢开发者赢天下」。相信 Kubernetes API 成为云上编程标准的故事,一定会对你有所启迪。

定位二:专注于服务器端的编程人员/运维工程师

而如果你是一位专注于服务器端的编程人员,或者运维工程师,那么你更应该关注的是 Kubernetes 这个项目背后的实现原理,它所体现出来的 Borg 和 Omega 项目多年来大规模集群管理的经验教训。

比如,声明式 API 的设计与实现原理,Informer、Controller 这些机制的实现方式,为什么说 Etcd 最适合的场景是配置管理,集中式集群调度器的核心机制与常用策略都有哪些。

此外,Kubernetes 项目的各个可扩展性接口,也是你需要重点关注和理解的对象,比如 CNI 和网络插件的工作方式、CSI 和存储插件的设计、Kubernetes Volume 管理的完整流程,以及 CRI 的设计和各种 container runtime的异同。

从这个角度来说,Kubernetes 项目就是当前云计算平台层开源项目的事实标准,熟悉它的思想、架构、实现细节甚至核心组件的源码,不仅是学习这项技术的必经之路,也是传统后端技术人员向云端转型的最佳途径。

(Kubernetes通过存储插件管理容器持久化存储的原理)

你应该尝试扮演公司和组织中进行云原生和基础架构转型的关键角色,而不是充当传统和守旧那一方。你应该尝试用容器和 Kubernetes 化的思想来影响周边的每一位工程师。要记住,这个进程每前进一步,你的价值就放大一分。

拓展阅读「编写自己的存储插件」

定位三:学生、刚刚入行的初学者

作为学生、刚刚入行的初学者,或者是对这个领域充满兴趣准备在这里作为一番的后端从业人员,我希望你对容器和 Kubernetes 技术体系的学习和实践,更要关注这个项目和平台背后更深层的基础和底盘部分,这包括:

1.了解操作系统和硬件的实际工作方式,尤其是CPU、存储和网络。

2.充分理解操作系统的设计,甚至可以根据需要重新实现或者绕过某些部分,这是你后面进行系统性能优化的关键所在。

3.理解“所有系统都是分布式系统”的道理。了解经典的分布式系统设计的思想,并从实际的工程实践中理解这些解决思路,这也是 Kubernetes 这个分布式项目构建的基础。

只有清楚了自己的定位,你才能够在 Kubernetes 这样一个大而全的技术体系面前做到“有所放矢,有的放矢”,才能够把容器和 Kubernetes 这项技术发展浪潮,与自己的技术路线和个人成长历程,真正地关联起来。

(Kubernetes 项目核心功能的“全景图”)

一旦明确了定位,抓到了这其中的精髓和主线,那么接下来的学习过程对于你来说,其实就是“无招胜有招”,可以随心所欲地按照你实际的项目、所关心的领域逐步展开,而完全不必拘泥于某种特定的套路了。

拓展阅读:「从容器到容器云:谈谈Kubernetes 的本质」

学习Kubernetes 和容器技术体系的最佳方法相关推荐

  1. 浅淡Kubernetes 与容器技术体系的最佳方法

    我们已经进入到容器化时代,Kubernetes成为了市场上容器编排的事实标准,而且k8S 同样具备了微服务所需要的服务注册与发现.负载均衡.配置中心.Spring cloud 的核心是Netflix微 ...

  2. Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩...

    1.Kubernetes介绍 1.1 简介 Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案. 其次,它是一个开放的开发平台. 最后,它是一个完备的分布式系统支撑平台 ...

  3. 学习一个新领域的知识的最佳方法和最快时间各是什么?

    Liu Cao ,「学习方法」是个伪命题 玉某人.冷峻.淡之 等人赞同 有个TED演讲简直是为这个问题量身订做的. The first 20 hours-How to learn Anything. ...

  4. html计算器_学习HTML、CSS和JavaScript的最佳方法是什么?

    与其他后端语言相比,HTML.CSS和JavaScript无论从阅读角度还是编写的角度来说都更加容易一点.所以新手在学习前端知识的时候不必有太大的心理压力 ,心态摆正后,大部分人都可以将前端学好.下面 ...

  5. 云原生之路:容器技术落地最佳实践

    简介: 随着容器技术的快速发展和广泛应用,毫无疑问云原生技术是未来发展的必然趋势.作为国内最早布局容器技术的阿里云,无论在技术还是产品上,都取得了极大的成果.阿里云资深技术专家易立通过阿里云容器服务, ...

  6. 云原生之路:趣谈容器技术从落地到最佳实践

    随着科技的发展,云原生技术正成为数字化转型的重要一环.今天,让我们一起踏上云原生之路,探索容器技术以及实现云原生的最佳实践.容器技术的出现,使得应用的开发部署变得更加快捷.灵活,极大地提高了企业级应用 ...

  7. 2019 年,容器技术生态会发生些什么?

    Kubernetes 项目被采纳度将持续增长 作为"云原生"(Cloud Native)理念落地的核心,Kubernetes 项目已经成为了构建容器化平台体系的默认选择.但是,不同 ...

  8. 开篇词 | 打通“容器技术”的任督二脉

    开篇词 | 打通"容器技术"的任督二脉 深入剖析Kubernetes 你好,Kubernetes 社区的一位资深成员和项目维护者. 2012 年,我还在浙大读书的时候,就有幸组建了 ...

  9. 部署 k8s Cluster(下)- 每天5分钟玩转 Docker 容器技术(119)

    上节我们通过 kubeadm 在 k8s-master 上部署了 Kubernetes,本节安装 Pod 网络并添加 k8s-node1 和 k8s-node2,完成集群部署. 安装 Pod 网络 要 ...

最新文章

  1. php 多人游戏_「谁会是下一个王者农药」云服务器如何搭建游戏服务器?
  2. [AWK]使用AWK进行分割字符串以及截取字符串
  3. tar: Cowardly refusing to create an empty archive 问题
  4. 蒙特卡罗方法验证凯利公式
  5. PHP和Node.js开发之间有什么区别
  6. C#写爬虫,版本V2.1
  7. TCP/IP笔记 应用层(2)——FTP
  8. mac环境下安装mysql
  9. pythonmkdir语法错误_Python mkdir一个有难度的问题
  10. java案例代码8--最终要随机输出一组出来做为排名
  11. 获得CPU利用率(python调用top命令实现)
  12. linux img提取文件系统,镜像文件提取System.img解/打包工具及常用命令
  13. ps怎么缩放图层大小_PS如何调整图层大小?Photoshop调整图层大小快捷键
  14. 工业机器人视觉实训平台
  15. 安装compiz-fusion
  16. 编程达人教你如何快速掌握一门编程语言
  17. 股民学堂:短线炒股绝招 值得一学
  18. Windows 10开启ISS Web服务
  19. windiws 安装 php8.0
  20. 2018web开发_Web设计人员和开发人员的新鲜资源(2018年6月)

热门文章

  1. 大数据和人工智能将成消费金融主要驱动力
  2. string类常用单字符处理函数
  3. javascript 未来新方法的介绍
  4. 多角度解读优酷土豆合并的深意
  5. 别说你不知IE9正式版浏览器小技巧9则
  6. 第二层交换机工作原理
  7. 开源搜索服务 Apache Solr 出现多个高危漏洞
  8. 库依赖关系和开源供应链带来的噩梦
  9. CVE-2020-15999:Chrome FreeType 字体库堆溢出原理分析
  10. 如何解决PHP里大量数据循环时内存耗尽的问题