您是否正在尝试应该怎样学习 Kubernetes ?如果是这样,你可能会有这样的问题 “ Kubernetes 会是下一件大事吗?” 或 “ Kubernetes 太繁琐了?” 或 “ Kubernetes 很难学习吗?”之类的问题。我的希望是消除任何混乱,并帮助您确定Kubernetes 是否适合您。

在本篇文章中,我们将探讨以下问题:

  • Kubernetes 有什么好处?
  • 学习 Kubernetes 有多难?
  • 对于小型项目来说,Kubernetes 是不是太重了?
  • 我必须掌握大部分 Kubernetes 的特性才能使用它吗?
  • Kubernetes 受欢迎程度是增加还是减少?
  • Kubernetes 有趣吗?

免责声明

Kubernetes 位于 软件开发DevOps系统管理 的交叉点。我是软件开发人员。因此无论好坏,我都通过开发者的眼光看待 Kubernetes。

我的目标是保持客观。因此,我将介绍优缺点,以便您确定 Kubernetes 是否适合您。

什么是 Kubernetes ?

简而言之,Kubernetes 可帮助您管理由一个或多个容器组成的应用程序。从本质上讲,它是一个工具箱,可帮助您构建由多个Docker容器组成的非常强大的应用程序。

Kubernetes 有什么好处?

  • 自愈 :Kubernetes 自动重启崩溃的容器。它将崩溃或宕机节点上运行的容器重新调度。

  • 负载均衡 :在 Kubernetes 中创建负载均衡器很简单。可以针对群集内部或群集外部的流量负载均衡到不同的 Pod。

  • 自动容器调度 :Kubernetes 自动决定将容器部署到何处。当您在多个节点上运行许多容器时,这确实非常方便。

  • 水平缩放 :当容器副本需要增加时,很容易按比例扩大它们的数量。也可以通过单个命令手动完成,也可以自动完成。

  • 滚动更新 :您可以将旧容器换成新容器,而不会中断服务。也可以使用单个命令来完成。

  • 零停机降级 :如果在某些容器中发现错误,可以恢复到这些容器的旧版本,而不会中断。(这使您有足够的时间来修改bug。)

  • Secret 数据管理 :您可以在 Kubernetes 集群中存储敏感信息。如 API密钥数据库密码 等。与将它们保存在版本控制下的源文件中相比,这是一个更安全的选择。

  • 抽象掉硬件 :开发人员用容器都无需了解有关底层群集硬件的任何知识。这使得从一个云提供商迁移到另一云提供商变得容易。

学习 Kubernetes 有多难?

有人抱怨 Kubernetes 很难学习。我认为这是有道理的,但并没有大家想象的那么难。让我概述下大家为什么觉得很难学。

  • 找到好的Kubernetes文档很难吗? - 在过去的几年中,官方文档已从可怕的变成了相当不错的。但是它仍然有些脱节并且比较分散。这使得确定学习各种概念的顺序有些困难。因此,我认为该文档最好作为参考,而不是循序渐进的指南。

  • Kubernetes复杂吗? - 我认为 Kubernetes 并不比当今使用的任何流行编程语言复杂。实际上,我认为 Kubernetes 更容易掌握。特别是如果您已经熟悉容器的话。

  • Kubernetes是否有许多先决条件? - 并不是的。但是您应该知道什么是 Docker容器 以及它们如何工作的基础知识。了解 YAML (这需要5到10分钟的学习时间)也很有帮助。并且您需要对 *nix 命令行有基本的了解。是的,即使是Windows用户,因为在开发/调试过程中,您可能会不时地转移到基于Linux的容器中。

  • 有很多概念要学习吗? - 有很多概念需要学习,但这是有原因的。凭借其众多功能,Kubernetes 能够解决许多不同类型的问题。但是,您可以绕开更高级的功能,直到您真正需要它们为止。许多问题只需要一小部分 Kubernetes 功能。使用您需要的内容,而忽略其余部分。

Kubernetes 是不是太重了?

尽管 Kubernetes 具有很多功能,但您不必全部学习它们。仅通过学习核心功能(如 pods , services , controllers , volumes , secrets 等),就可以学习很多东西。然后,当您真正需要时,您可以学习您所需要的功能。

我认为这种 “太重” 的名声实际上来源于团队 选择安装维护Kubernetes 的方式。您会看到,Kubernetes 在生产中并没有一个简单的安装过程。(请注意,创建开发集群并不难。)但是,如果您使用托管解决方案(例如 DigitalOcean Kubernetes 或 Google Kubernetes Engine),则 安装安全升级 都不需要你来维护。最重要的是,托管解决方案很便宜!

最后,请记住以下两个想法:

1、使用您需要的内容,而忽略其余部分。

2、每个大项目都是从小项目开始的!

Kubernetes 受欢迎程度是增加还是减少?

没有人愿意登上一艘正在下沉的船。也没有人愿意学习一种正在消失的技术。好消息是,Kubernetes 没有消失的危险。许多大公司(例如 Pinterest,Spotify和Squarespace)都依赖 Kubernetes。事实上,Kubernetes 已经变得非常流行,它已经成为事实上的标准容器编排系统。

Kubernetes 有趣吗?

我真的很喜欢和 Kubernetes 共事。但我一开始并没有这样的感觉。

几年前,当我第一次学习Kubernetes时,我并不喜欢它,原因有二:

  • 它的文档实在是太糟糕了

  • 你必须处理大量的配置文件

好消息是,Kubernetes 的维护人员已经极大地改进了文档。仅此一点,让 Kubernetes 的使用变得更加有趣。

也就是说,使用 Kubernetes 意味着您仍然必须使用许多配置文件。但是现在我真的很喜欢和他们一起工作。我将这种彻底的转变归功于三件事:

  • 1、首先,Kubernetes 所处的区域存在着有趣的问题。毕竟,它是一个用于解决容器化系统的基础结构级问题的工具箱。因此,您可以使用Kubernetes来处理 分布式系统微服务系统可靠性网络安全性 之类的事情。承认吧,蛮好玩的!

  • 2、其次,Kubernetes 是一个功能强大的系统,具有许多功能。俗话说,“权力越大,责任越大,乐趣越大”。这就是为什么我的人生目标是转世成一条电鳗。到目前为止,一切都很好。

  • 3、第三,Kubernetes 组件很有趣,就像乐高积木一样有趣。它们的 灵活性可组合性 使您能够解决各种问题。这有点类似于编程,因为在两种情况下,您都需要结合 创造性独创性最佳实践 来解决问题。有什么不喜欢的呢?

可以肯定的是,Kubernetes并不全是阳光和彩虹。因此,让我们来看看几个不足的地方。

  • 1、首先,Kubernetes 的配置文件在一开始读起来并不直观。简而言之,您的大脑需要时间来习惯于从不重要的片段中挑选出重要的片段。但是不用担心。这不是很难。如果我可以得到,您也可以。

  • 2、其次,您需要熟练地使用 Kubernetes 进行调试。(您不可能抛出一堆打印语句或运行某种不存在的Kubernetes调试器。)在您熟悉一些有用的kubectl命令之前,您可能会不时感到有些茫然。

总结

首先, DockerKubernetes 都是目前的潮流。容器和容器编排将继续席卷整个行业,这是有充分理由的。尽管容器解决了整个部署问题,但Kubernetes提供了一个强大而通用的系统来管理任何规模的容器集群。

也就是说,下面两种情况,Kubernetes 可能不是您的最佳选择。

  • 1、首先,如果(a)您尚未使用容器,(b)您没有计划使用它们,(c)您已经具有可以运行的部署和集群管理系统,那么就不要切换!听起来您的项目已经相当完善了。

  • 2、其次,您所在的团队是否决定安装和管理自己的容器编排系统?如果是这样,请考虑使用使用 Docker Swarm 之类的工具,它可能不具备 Kubernetes 的全部功能,但更易于安装。

原文链接: https://blog.true-kubernetes.com/is-kubernetes-worth-learning-part-1-the-big-picture/

---本文结束感谢您的阅读。 微信扫描二维码,关注我的公众号---

相关文章