您是否正在尝试应该怎样学习 Kubernetes
?如果是这样,你可能会有这样的问题 “ Kubernetes 会是下一件大事吗?” 或 “ Kubernetes 太繁琐了?” 或 “ Kubernetes 很难学习吗?”之类的问题。我的希望是消除任何混乱,并帮助您确定Kubernetes 是否适合您。
在本篇文章中,我们将探讨以下问题:
- Kubernetes 有什么好处?
- 学习 Kubernetes 有多难?
- 对于小型项目来说,Kubernetes 是不是太重了?
- 我必须掌握大部分 Kubernetes 的特性才能使用它吗?
- Kubernetes 受欢迎程度是增加还是减少?
- Kubernetes 有趣吗?
Kubernetes 位于软件开发
,DevOps
和系统管理
的交叉点。我是软件开发人员。因此无论好坏,我都通过开发者的眼光看待 Kubernetes。
我的目标是保持客观。因此,我将介绍优缺点,以便您确定 Kubernetes 是否适合您。
简而言之,Kubernetes 可帮助您管理由一个或多个容器组成的应用程序。从本质上讲,它是一个工具箱,可帮助您构建由多个Docker容器组成的非常强大的应用程序。
-
自愈
:Kubernetes 自动重启崩溃的容器。它将崩溃或宕机节点上运行的容器重新调度。 -
负载均衡
:在 Kubernetes 中创建负载均衡器很简单。可以针对群集内部或群集外部的流量负载均衡到不同的 Pod。 -
自动容器调度
:Kubernetes 自动决定将容器部署到何处。当您在多个节点上运行许多容器时,这确实非常方便。 -
水平缩放
:当容器副本需要增加时,很容易按比例扩大它们的数量。也可以通过单个命令手动完成,也可以自动完成。 -
滚动更新
:您可以将旧容器换成新容器,而不会中断服务。也可以使用单个命令来完成。 -
零停机降级
:如果在某些容器中发现错误,可以恢复到这些容器的旧版本,而不会中断。(这使您有足够的时间来修改bug。) -
Secret 数据管理
:您可以在 Kubernetes 集群中存储敏感信息。如API密钥
和数据库密码
等。与将它们保存在版本控制下的源文件中相比,这是一个更安全的选择。 -
抽象掉硬件
:开发人员用容器都无需了解有关底层群集硬件的任何知识。这使得从一个云提供商迁移到另一云提供商变得容易。
有人抱怨 Kubernetes 很难学习。我认为这是有道理的,但并没有大家想象的那么难。让我概述下大家为什么觉得很难学。
-
找到好的Kubernetes文档很难吗?
- 在过去的几年中,官方文档已从可怕的变成了相当不错的。但是它仍然有些脱节并且比较分散。这使得确定学习各种概念的顺序有些困难。因此,我认为该文档最好作为参考,而不是循序渐进的指南。 -
Kubernetes复杂吗?
- 我认为 Kubernetes 并不比当今使用的任何流行编程语言复杂。实际上,我认为 Kubernetes 更容易掌握。特别是如果您已经熟悉容器的话。 -
Kubernetes是否有许多先决条件?
- 并不是的。但是您应该知道什么是Docker容器
以及它们如何工作的基础知识。了解YAML
(这需要5到10分钟的学习时间)也很有帮助。并且您需要对*nix
命令行有基本的了解。是的,即使是Windows用户,因为在开发/调试过程中,您可能会不时地转移到基于Linux的容器中。 -
有很多概念要学习吗?
- 有很多概念需要学习,但这是有原因的。凭借其众多功能,Kubernetes 能够解决许多不同类型的问题。但是,您可以绕开更高级的功能,直到您真正需要它们为止。许多问题只需要一小部分 Kubernetes 功能。使用您需要的内容,而忽略其余部分。
尽管 Kubernetes 具有很多功能,但您不必全部学习它们。仅通过学习核心功能(如pods
, services
, controllers
, volumes
, secrets
等),就可以学习很多东西。然后,当您真正需要时,您可以学习您所需要的功能。
我认为这种 “太重” 的名声实际上来源于团队 选择安装
和 维护Kubernetes
的方式。您会看到,Kubernetes 在生产中并没有一个简单的安装过程。(请注意,创建开发集群并不难。)但是,如果您使用托管解决方案(例如 DigitalOcean Kubernetes 或 Google Kubernetes Engine),则 安装
,安全
和 升级
都不需要你来维护。最重要的是,托管解决方案很便宜!
最后,请记住以下两个想法:
1、使用您需要的内容,而忽略其余部分。
2、每个大项目都是从小项目开始的!
没有人愿意登上一艘正在下沉的船。也没有人愿意学习一种正在消失的技术。好消息是,Kubernetes 没有消失的危险。许多大公司(例如 Pinterest,Spotify和Squarespace)都依赖 Kubernetes。事实上,Kubernetes 已经变得非常流行,它已经成为事实上的标准容器编排系统。
我真的很喜欢和 Kubernetes 共事。但我一开始并没有这样的感觉。
几年前,当我第一次学习Kubernetes时,我并不喜欢它,原因有二:
-
它的文档实在是太糟糕了
-
你必须处理大量的配置文件
好消息是,Kubernetes 的维护人员已经极大地改进了文档。仅此一点,让 Kubernetes 的使用变得更加有趣。
也就是说,使用 Kubernetes 意味着您仍然必须使用许多配置文件。但是现在我真的很喜欢和他们一起工作。我将这种彻底的转变归功于三件事:
-
1、首先,Kubernetes 所处的区域存在着有趣的问题。毕竟,它是一个用于解决容器化系统的基础结构级问题的工具箱。因此,您可以使用Kubernetes来处理
分布式系统
,微服务
,系统可靠性
,网络
和安全性
之类的事情。承认吧,蛮好玩的! -
2、其次,Kubernetes 是一个功能强大的系统,具有许多功能。俗话说,“权力越大,责任越大,乐趣越大”。这就是为什么我的人生目标是转世成一条电鳗。到目前为止,一切都很好。
-
3、第三,Kubernetes 组件很有趣,就像乐高积木一样有趣。它们的
灵活性
和可组合性
使您能够解决各种问题。这有点类似于编程,因为在两种情况下,您都需要结合创造性
,独创性
和最佳实践
来解决问题。有什么不喜欢的呢?
可以肯定的是,Kubernetes并不全是阳光和彩虹。因此,让我们来看看几个不足的地方。
-
1、首先,Kubernetes 的配置文件在一开始读起来并不直观。简而言之,您的大脑需要时间来习惯于从不重要的片段中挑选出重要的片段。但是不用担心。这不是很难。如果我可以得到,您也可以。
-
2、其次,您需要熟练地使用 Kubernetes 进行调试。(您不可能抛出一堆打印语句或运行某种不存在的Kubernetes调试器。)在您熟悉一些有用的kubectl命令之前,您可能会不时感到有些茫然。
首先,Docker
和 Kubernetes
都是目前的潮流。容器和容器编排将继续席卷整个行业,这是有充分理由的。尽管容器解决了整个部署问题,但Kubernetes提供了一个强大而通用的系统来管理任何规模的容器集群。
也就是说,下面两种情况,Kubernetes 可能不是您的最佳选择。
-
1、首先,如果(a)您尚未使用容器,(b)您没有计划使用它们,(c)您已经具有可以运行的部署和集群管理系统,那么就不要切换!听起来您的项目已经相当完善了。
-
2、其次,您所在的团队是否决定安装和管理自己的容器编排系统?如果是这样,请考虑使用使用
Docker Swarm
之类的工具,它可能不具备 Kubernetes 的全部功能,但更易于安装。
原文链接:https://blog.true-kubernetes.com/is-kubernetes-worth-learning-part-1-the-big-picture/