作者罗剑锋,网名“Chrono”,Kong 高级工程师,Nginx/OpenResty 开源项目贡献者,也是极客时间《透视HTTP协议》《罗剑锋的C++实战笔记》专栏的作者。

他专注于 C/C++、Linux、高性能编程等领域,目前供职于 Kong 公司,投身 Kong Gateway、Kong Ingress Controller 等项目的研发工作,著有《C++11/14 高级编程》《Boost 程序库完全开发指南》《Nginx 完全开发指南》《OpenResty 完全开发指南》等畅销书。


你一定听说过 Kubernetes 吧,也许更熟悉一点的,是许多人总挂在嘴边的缩写——“K8s”。

自从 2013 年 Docker 诞生以来,容器一跃成为了 IT 界最热门的话题。而 Kubernetes 则趁着容器的“东风”,借助 Google 和 CNCF 的强力“背书”,击败了 Docker Swarm 和 Apache Mesos,成为了“容器编排”领域的王者至尊。

换一个更通俗易懂的说法,那就是:现在 Kubernetes 已经没有了实际意义上的竞争对手,它的地位就如同 Linux 一样,成为了事实上的云原生操作系统,是构建现代应用的基石。

毕竟,现代应用是什么?是微服务,是服务网格,这些统统要围绕着容器来开发、部署和运行,而使用容器就必然要用到容器编排技术,在现在只有唯一的选项,那就是 Kubernetes。

毕竟,现代应用是什么?是微服务,是服务网格,这些统统要围绕着容器来开发、部署和运行,而使用容器就必然要用到容器编排技术,在现在只有唯一的选项,那就是 Kubernetes。

不管你是研发、测试、还是运维,不管你是前台、后台、还是中台,不管你用的是 C++、Java 还是 Python,不管你是搞数据库、区块链、还是人工智能,不管你是从事网站、电商、还是音视频,在这个“云原生”时代,Kubernetes 都是一个绕不过去的产品,是我们工作中迟早要面对的“坎儿”。

你也许会有疑惑:我现在的工作和“云”毫不沾边,而且 Kubernetes 都“火”了这么久,现在才开始学,会不会有点晚了?值不值呢?

这里我就要引用一句老话了:“艺多不压身”,还有另一句:“机遇总是偏爱有准备的人”。

“云原生”已经是现在 IT 界的普遍共识,是未来的大势所趋。也许这个“浪潮”暂时还没有打到你这里来,但一旦它真正来临,只有你提前做好了知识储备,才能够迎难而进,站上浪头成为“弄潮儿”,否则就可能会被“拍在沙滩上”。

我和你说一下我自己的亲身经历吧。

早在 Docker 和 Kubernetes 发布之初,我就对它们有过关注。不过因为我的主要工作语言是 C/C++,而 Docker 和 Kubernetes 用的都是 Go,当时 Go 的性能还比较差(比如垃圾回收机制导致的著名 Stop the World),所以我只是简单了解了,没有去特别研究。

过了几年,一个偶然的机会,我们要在客户的环境里部署自研应用,但依赖库差异太大,很难搞定。这个时候我又想起了 Docker,经过一个多星期的折腾,艰难地啃下了一大堆资料之后,总算是把系统正常上线了。

虽然任务完成了,但也让我意识到自己从前对 Docker 的轻视是非常错误的,于是就痛下决心,开始从头、系统地学习整理容器知识,之后也就很自然地搭上了 Kubernetes 这条“大船”。

再后来,我想换新工作,面试的时候 Boss 出了道“偏门”题,讲 Kubernetes 的容器和环境安全。虽然我不熟悉这个方向,但凭借着之前的积累,只用了一个晚上就赶出了 20 多页的 PPT,第二天面对几位评委侃侃而谈,最终顺利拿下了 Offer。

你看,如果我当时一味固执己见,只呆在自己的“舒适区”里,不主动去学习容器技术和 Kubernetes,当机遇不期而至的时候,很可能就会因为手足无措而错失了升职加薪的良机。

所以也希望你不要犯我当初的错误,我们应当看清楚时代的走向,尽可能超前于时代,越早掌握 Kubernetes,将来自己成功的几率就越大。

学习 Kubernetes 有哪些难点

那么,我们应该怎么来学习 Kubernetes 呢?

其实今天学习 Kubernetes 的难度,比起前几年来说,已经是极大地下降了,网上资料非常多,有博客、专题、视频等各种形式,而且 Kubernetes 为了推广自身,在官网上还放出了非常详细的教程和参考手册,只要你肯花时间,完全可以“自学成才”。

不过,“理想很丰满,现实很骨感”。理论上讲,学习 Kubernetes 只要看资料就足够了,但实际情况却是学习起来仍然困难重重,我们会遇到很多意想不到的问题。

这是因为 Kubernetes 是一个分布式、集群化、云时代的系统,有许多新概念和新思维方式,和我们以往经验、认知的差异很大。

我觉得,Kubernetes 技术栈的特点可以用四个字来概括,那就是“新、广、杂、深”。

  • “新”是指 Kubernetes 用到的基本上都是比较前沿、陌生的技术,而且版本升级很快,经常变来变去。
  • “广”是指 Kubernetes 涉及的应用领域很多、覆盖面非常广,不太好找到合适的切入点或者突破口。
  • “杂”是指 Kubernetes 的各种实现比较杂乱,谁都可以上来“掺和”一下,让人看的眼晕。
  • “深”是指 Kubernetes 面对的每个具体问题和方向,都需要有很深的技术背景和底蕴,想要吃透很不容易。

这四个特点就导致 Kubernetes 的“门槛”相当高,学习曲线非常陡峭,学习成本非常昂贵,有可能花费了大量的时间和精力却南辕北辙、收效甚微,这点我确实是深有体会。

比如在初学的过程中我就遇到过这些疑问,不知道你有没有同感:

  • Docker、Containerd、K8s、K3s、MicroK8s、Minikube……这么多项目,该如何选择?
  • 容器的概念太抽象了,怎么才能够快速准确地理解?
  • 镜像的命名稀奇古怪,里面的“bionic”“buster”等都是什么意思?
  • 不知道怎么搭建出 Kubernetes 环境,空有理论知识,无法联系实际。YAML 文件又长又乱,到哪里能找到说明,能否遵循什么简单规律写出来?
  • Pod、Deployment、StatefulSet……这么多的对象,有没有什么内在的脉络和联系?

遗憾的是,这些问题很难在现有的 Kubernetes 资料里找到答案。

我个人感觉,它们往往“站得太高”,没有为“零基础”的初学者考虑,总会预设一些前提,比如熟悉 Linux 系统、知道编程语言、了解网络技术等等,有时候还会因为版本过时而失效,或者是忽略一些关键的细节。

这就让我们初学者经常“卡”在一些看似无关紧要却又非常现实的难点上,这样的点越积越多,最后就让人逐渐丧失了学习 Kubernetes 的信心和勇气。

所以,我就想以自己的学习经历为基础,融合个人感悟、经验教训和心得技巧,整理出一个初学者面对 Kubernetes 这门新技术的入门路线和系统思路,让你在学习时有捷径可走,不再有迷茫和困惑,能快速高效地迈入 Kubernetes 的宏伟殿堂。

分享一张我专栏《Kubernetes入门实战》的思维导图,如果你也对 Kubernetes 感兴趣,可以保存学习:

迎难而上,做云原生时代的弄潮儿:搞定 Kubernetes相关推荐

  1. 云原生时代(五):Kubernetes与容器编排之战

    上文我们主要介绍了容器和Docker,第五部分我们来讲Kubernetes与容器编排之战. 容器编排与Kubernetes 在单机上运行容器,无法发挥它的最大效能,只有形成集群,才能最大程度发挥容器的 ...

  2. 腾讯云 Finops Crane 开发者集训营 - 云原生如何助力企业搞定成本优化

    引言: 随着docker的技术普及,越来越多的企业加入了云计算发展进程,云原生产业发展迅猛,云原生建设投入比例明显,面对大规模的集群投入.部署.维护等问题也逐渐产生,越来越多的企业对云原生不断提出更高 ...

  3. CODING —— 云原生时代的研发工具领跑者

    本文为 CODING 创始人兼 CEO 张海龙在腾讯云 CIF 工程效能峰会上所做的分享. 文末可前往峰会官网,观看回放并下载 PPT. 大家上午好,很高兴能有机会与大家分享 CODING 最近的一些 ...

  4. 云原生时代下的12-factor应用与实践

    在云的时代,应用会更多地迁移到云端,基于云的架构设计和开发模式需要一套全新的理念去承载,于是云原生思想应运而生,而针对云原生应用开发的最佳实践原则,12-Factor脱颖而出,同时也带来了新的解读.本 ...

  5. 云原生时代, 选择.NET Core

    在容器.Kubernetes.DevOps,以及微服务等技术的推动下,2020年云原生势不可挡. .NET Core 也非常契合 云原生对应用运行时的不同需求,.NET Core和kubernetes ...

  6. 蚂蚁金服资深技术专家经国:云原生时代微服务的高可用架构设计

    经国 蚂蚁金服数字金融线担任技术风险架构师 读完需要 15 分钟 速读仅需 5 分钟 经国,蚂蚁金服资深技术专家,毕业于浙江大学. 2014 年加入蚂蚁金服,先后负责过支付宝的单元化.弹性.去 ORA ...

  7. 传统开发被冲击得“七零八落”,云原生时代下开发者要如何自救?

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 当前,新一轮科技革命和产业变革正在重塑全球技术发展格局,传统开发模式开始变得难以满足企业产品业务快速迭代和升级需求,数字化转型已然成为大 ...

  8. 云原生时代,如何保证容器镜像安全?

    目录 遵从最佳实践,编写 Dockerfile 选择合适的基础镜像 以非 root 用户启动容器 采用多阶段构建 选择来源可靠且经常更新的镜像 用安全的方式构建容器镜像 使用容器镜像扫描 和极狐 Gi ...

  9. OAM:云原生时代的应用PAAS模型

    随着kubernetes的兴起,很多公司都有了Paas平台建设的能力,但是应用Paas平台建设上基本上都是形态各异,百花齐放,而OAM在笔者看来就是应用Paas平台建设的kubernetes,未来的事 ...

最新文章

  1. TVMNN编译Compiler栈
  2. C# “Thread类Suspend()与Resume()已过时” 解决方法(利用ManualResetEvent类)
  3. Spring AOP根据JdbcTemplate方法名动态设置数据源
  4. python插入排序算法详解-面试常考
  5. python snmp 自动化2-在python中使用snmp
  6. 错误RuntimeError: Invalid DISPLAY variable
  7. 游戏服务器停机维护,游戏是如何做到服务器不停机维护的?
  8. Apache 跟踪用户会话
  9. 什么是自动化与自主化?
  10. Excel堆积柱形图制作过程
  11. python read_csv函数_Python pandas.read_csv()函数
  12. 【ARM基础概念:ARMv7架构,ARM(ARM7、ARM9)、Cortex-M4、M7等内核、MCU、MPU、SOC,STM32的一些概念】
  13. 异常:could not initialize proxy - the owning Session was closed
  14. Outlook无法启动一直显示“正在启动”的解决方法
  15. cocos2dx layer理解
  16. Linux、Windows网络工程师面试题精选
  17. PTA 520 钻石争霸赛 2021
  18. 进阶实验2-3.1 海盗分赃 (25 分)
  19. Windows 7 桌面上的 Internet Explorer 图标消失
  20. Java并发方面最为权威的人物:Doug Lea

热门文章

  1. dispose 模式 java_C#中标准Dispose模式的实现
  2. android开发ssh框架搭建,基于SSH框架的Android系统的研究
  3. ghost网络克隆功能实现【批量】计算机操作【系统的安装】,万能ghost网络克隆工具...
  4. Centos8防火墙设置
  5. 基于Java毕业设计志愿者社会服务管理系统源码+系统+mysql+lw文档+部署软件
  6. 买域名,怎么做才能质量好又便宜?
  7. 如何让64位的windows上的IIS可以运行32位的程序
  8. SEO大视野,高度决定一切
  9. Spark之Column
  10. Web前端开发精品课HTML CSS JavaScript基础教程CSS部分知识点总结