ITPub博客

首页 > 数据库 > 数据库开发技术 > Kubernetes:为什么这很重要?

Kubernetes:为什么这很重要?

原创 数据库开发技术 作者:步步运维步步坑 时间:2023-12-07 11:30:00 0 删除 编辑

开发和部署云原生应用程序现在已经变得非常流行。允许快速部署和持续交付错误修复和新功能的流程有明显的优势,但没有人谈论一个先有鸡还是先有蛋的问题:如何从这里到达那里?构建基础设施和开发流程来开发和维护云原生应用程序(所有这些都从头开始)是非常重要的、耗时的任务。

我们都知道Kubernetes是一个用于运行容器化工作负载的相对较新的平台,可以解决这些问题。

Kubernetes 最初是 Google 内部的一个项目,于 2015 年捐赠给云原生计算基金会,并吸引了来自世界各地开源社区的开发人员。

Kubernetes 的设计基于 15 年运行生产和开发工作负载的经验。由于它是开源的,任何人都可以下载和使用它并实现它的好处。

那么为什么 Kubernetes 会受到如此大的关注呢?我相信它在基础设施即服务 (IaaS) 解决方案(如 OpenStack)和完整的平台即服务 (PaaS) 资源之间达到了最佳平衡点,其中较低级别的运行时实现完全由供应商控制。

Kubernetes 提供了两方面的好处:

管理基础设施的抽象

深入到裸机进行故障排除的工具和功能


IaaS 与 PaaS

大多数人将 OpenStack 归类为 IaaS 解决方案,其中物理资源池(例如处理器、网络和存储)在不同用户之间分配和共享。用户之间的隔离是使用传统的、基于硬件的虚拟化来实现的。

OpenStack 的 REST API 允许使用代码自动创建基础设施,但这就是问题所在。IaaS 产品的输出是更多的基础设施。一旦创建了额外的基础设施,就没有太多的服务来支持和管理它。到了一定程度之后,管理 OpenStack 生成的低级基础设施(例如服务器和 IP 地址)就变得非常繁重。一个众所周知的结果是虚拟机 (VM) 蔓延,但同样的概念也适用于网络、加密密钥和存储卷。这使得开发人员用于构建和维护应用程序的时间更少。

与其他基于集群的解决方案一样,Kubernetes 在单个服务器级别运行以实现水平扩展。可以轻松添加新服务器并立即在硬件上安排工作负载。同样,当服务器没有得到有效利用或需要维护时,可以将其从集群中删除。编排活动(例如作业调度、运行状况监控和维护高可用性)是 Kubernetes 自动处理的其他任务。

网络是 IaaS 环境中另一个难以可靠编排的领域。服务之间用于链接微服务的 IP 地址通信可能特别棘手。Kubernetes 实现 IP 地址管理、负载均衡、服务发现和 DNS 名称注册,以在集群内提供一个轻松、透明的网络环境。


专为部署而设计

创建运行应用程序的环境后,部署它就是一件小事了。可靠地部署应用程序是那些说起来容易、做起来却不容易的任务之一——一点也不容易。Kubernetes 相对于其他环境的巨大优势在于部署是一等公民。

有一个使用 Kubernetes 命令行界面 (CLI) 的命令,可以获取应用程序的描述并将其安装在集群上。Kubernetes 实现了从初始部署到推出新版本以及回滚的整个应用程序生命周期——这是出现问题时的一个关键功能。正在进行的部署也可以暂停和恢复。拥有现有的内置工具和应用程序部署支持(而不是自己构建部署系统)的优势怎么强调都不为过。Kubernetes 用户不必重新发明应用程序部署轮子,也不必发现这是一项多么困难的任务。

Kubernetes 还具有监控正在进行的部署状态的功能。虽然您可以在 IaaS 环境中编写此代码,就像部署过程本身一样,但这是一项非常困难的任务,因为极端情况比比皆是。



专为 DevOps 设计

随着您在开发和部署 Kubernetes 应用程序方面获得更多经验,您将走上 Google 和其他公司之前走过的道路。您会发现有几个 Kubernetes 功能对于有效开发多服务应用程序并对其进行故障排除至关重要。

首先,Kubernetes 能够轻松检查正在运行的服务的日志或 SSH(安全外壳)的能力至关重要。通过单个命令行调用,管理员可以检查 Kubernetes 下运行的服务的日志。这听起来像是一个简单的任务,但在 IaaS 环境中,这并不容易,除非您已经投入了一些工作。大型应用程序通常拥有专门用于日志收集和分析的硬件和人员。Kubernetes 中的日志记录可能无法取代功能齐全的日志记录和指标解决方案,但它提供了足够的功能来实现基本的故障排除。

其次,Kubernetes 提供内置的秘密管理。从头开始开发自己的部署系统的团队知道的另一个问题是,将密码和 API 令牌等敏感数据安全地部署到虚拟机非常困难。通过使秘密成为一等公民,Kubernetes 可以阻止您的团队发明自己的不安全、有缺陷的秘密分发系统或只是在部署脚本中硬编码凭证。

最后,Kubernetes 中有大量用于自动扩展、负载平衡和重新启动应用程序的功能。同样,这些功能对于开发人员在使用 IaaS 或裸机时编写的内容来说是诱人的目标。Kubernetes 应用程序的扩展和运行状况检查在服务定义中声明,并且 Kubernetes 确保正确数量的实例正在运行且运行状况良好。


结论

IaaS 和 PaaS 系统之间的差异是巨大的,包括 PaaS 可以节省大量的开发和调试时间。作为 PaaS,Kubernetes 实现了一组强大而有效的功能来帮助您开发、部署和调试云原生应用程序。它的架构和设计代表了数十年来之不易的经验,您的团队可以免费利用这些经验。

期待你的

分享

点赞

在看

添加博主

微信号|yfq940-

原文作者:步步运维步步坑;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-10-08

  • 博文量
    100
  • 访问量
    51720