Kubernetes能做什么

63次阅读
没有评论

共计 2345 个字符,预计需要花费 6 分钟才能阅读完成。

本篇内容主要讲解“Kubernetes 能做什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Kubernetes 能做什么”吧!

Kubernetes 会做什么?

Kubernetes 是用于容器化应用程序的编排工具。它负责:

部署镜像和容器

管理容器和集群的扩展

容器和集群的资源管理

服务的流量管理

当你的应用程序由运行在不同容器中的多个服务组成时,Kubernetes 确实会带来很多好处。对于具有静态用户群的单体应用,这可能超出了必要。

构建,测试并将应用程序交付到容器仓库的任务不是 Kubernetes 的一部分,这些使用 CI/CD 工具就可以完成工作。除了 CI/CD 流水线,Kubernetes 还可以帮助你将应用部署到生产环境中而不会造成服务停机。

改善单体应用

大多数应用程序都是以单体形式开始的–将整个应用程序放在一个地方,可以快速轻松地进行和部署更改。但是,如果你的应用程序发展壮大,你需要很快找到扩大规模的方法。

这是否意味着该是 Kubernetes 的时候了?可能不是。

通常,扩展更多地是关于应用程序的内部,而不是高级架构和工具。例如,你可以通过使用支持相似性标签的负载均衡器部署多个实例来扩展整体。

扩展应用程序时要考虑的第一步是测试驱动开发(TDD),它可以确保软件质量并防止随着应用程序的增长而出现问题。尽管较小的模块或服务更易于测试,但模块化也意味着对 mocking 需求增加,并且需要额外的工具来配置和维护。良好的测试可以使你轻松自信地构建和扩展应用程序。

当你开始扩展整体时,Chef 和 Ansible 等配置管理工具会派上用场。你可以使用它们来自动配置新服务器,以确保它们准备好运行你的应用程序。你甚至可以更进一步,并使用 Terraform 之类的工具来帮助配置新的服务器 VM,这样你就不必手动创建它们。

当应用程序的其他部分成为瓶颈(例如数据库)时,你也可以扩展这些部分。例如,如果数据库成为瓶颈,则可以将经常访问的数据移至高性能内存数据存储(如 Redis)中,以减少数据库的负载。

无论你使用哪种配置管理和配置工具,都必须有一个良好的 CI/CD 流水线。第一次部署应用程序时,你可能已通过 FTP 将 zip 文件复制到服务器,但是这种方法无法扩展。简化的 CI/CD 流水线可确保自动构建,测试和部署你的应用程序,而无需你或你的团队进行任何额外的工作。

你甚至可以使用 AWS Elastic Beanstalk,Google App Engine 或 Azure App Service 等云服务自动缩放单体应用。与 Kubernetes 相比,所有这些都带来了更少的管理开销,并且它们都可以与 CI/CD 工具很好地协同工作。

在开发新应用程序时,请专注于开发最佳应用程序。像 Kubernetes 这样的复杂工具可能是管理应用程序基础结构的正确解决方案。

增强单体应用

随着应用程序的不断增长,你可能最终将无法继续添加功能到单体应用中。这通常是因为该应用,接近单个开发团队可以从事的工作的极限。

在这一点上,许多团队选择拆分单体应用并完全迁移到微服务中。尽管这是一个颇受欢迎的决定,但它既不是必需的决定,也不是灵丹妙药。组织,可以考虑从添加单体应用的功能服务开始,而不是整体替换单体应用。这些支持服务中的某些实际上可能就是微服务 - 因此,你可以在合理的情况下使用小型服务而受益,同时仍可利用单体应用的好处。

即使引入微服务,你可能也不需要或不想从 Kubernetes 开始。Kubernetes 擅长运行和扩展相关服务和微服务容器的 Pod。但是,采用 Kubernetes 的某些方面很容易被忽略,例如,Kubernetes 没有用于保护 Pod,节点和集群的强大内置工具,并且在多云环境中部署 Kubernetes 集群会增加很多复杂性。

从像 Azure Service Fabric 和 AWS Fargate 这样的单云平台开始,可以更轻松地启动和扩展服务,而不必强迫你进行 Kubernetes 集群的管理。

另一个选择是完全避免具有维护开销的服务,并选择功能即服务(FaaS),例如 AWS Lambda 或 Azure Functions。FaaS 是一种在向应用程序添加服务时最大程度地减少潜在基础架构开销的好方法。此外,如果你最终需要使用 Kubernetes 编排的集群,则可以使用 FaaS 功能进行增强。

不再使用单体应用

现在,想象你的单体应用已经增长得如此之快,以至于你不能采用单体应用方式,开始需要迁移到微服务架构。

慢慢地,你拥有了各种各样的服务,其中许多服务需要彼此通信。你需要确保相互依赖的服务始终处于正常运行状态并且彼此可见。

此外,你有时还需要考虑跨多个可用性区域(甚至可能跨多个云供应商)运行。

在这一点上,你可能需要像 Kubernetes 这样的协调器。它使你可以轻松定义相关服务的模块(Pods),并可以自动缩放应用实例并在服务之间进行负载均衡。

为了使 Kubernetes 发挥作用,组织需要:

操作几个或几十个虚拟机

分配人员进行 Kubernetes 专门的配置和维护

使大部分同类服务部署自动化

与云(或托管)提供商无关

此外,Kubernetes 内置了对高可用性(Amazon RDS Multi-AZ)部署的支持,这使得提高应用程序的可靠性和可用性变得更加容易。

当然,这确实带来了开销:需要时间和工程资源来创建和管理集群,定义 Pod 以及创建适合部署到 Kubernetes 的容器化应用程序。但是,如果你的应用足够大,可以从 Kubernetes 中受益,那么管理开销是值得的。

到此,相信大家对“Kubernetes 能做什么”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2345字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)