38

Kubernetes 是否值得学习吗?

 4 years ago
source link: https://www.yp14.cn/2020/06/06/Kubernetes-是否值得学习吗/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

aU3yUzU.png!web

您是否正在尝试应该怎样学习 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 有多难?

BraeQnR.jpg!web

有人抱怨 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 有趣吗?

bY3QJvE.png!web

我真的很喜欢和 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/

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

nayi2er.png!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK