DevOps 团队如何提高 Kubernetes 性能
今天,Kubernetes 仍然是开发人员最需要的容器。Kubernets 最初由 Google 工程师开发,作为跨本地、公共云、私有云或混合云托管的首选解决方案享誉全球。
来自 Statista 的报告显示,公共云中的 Kubernetes 市场份额在过去一年中上升了近 30%。并且在拥有超过 1000 名员工的大型科技企业中,Kubernets 的采用率也在一年中至少上升了 20%。
然而,尽管 Kubernets 越来越受欢迎,但其中仍存在一些挑战,使得 DevOps 团队很难在使用 K8s 构建云原生应用程序的过程中发挥它的全部优势。对于 DevOps 团队而言,应用 Kubernets 时应关注哪些问题呢?
1、可观测性是关键
Kubernetes 有很多优点,因为容器生态系统中存在多个节点。这使得全面了解整个 K8s 环境是一项具有挑战性的任务。事实上,想要不依赖工具直接对 K8s 进行检测是非常困难的。根据 Groundcover 首席执行官兼联合创始人 Shahar Azulay 的说法,这一挑战的解决方案在于可观测性解决方案。
通过使用可观测性工具,DevOps 团队可以全面了解 Kubernetes 中发生的一切,从日志到指标和跟踪。这使 DevOps 团队能够快速修复错误并大规模构建应用程序。Azulay 表示:“开发人员无需收集和分析每个字节可用数据或随机采样,而是可以通过在源头识别最有效的数据来智能地对其进行采样,然后仅选择要发送到其可观测性平台的数据。
借助可观测性工具,DevOps 团队可以减少系统宕机时间、降低成本并最终提高性能。当今一些最流行的可观测性工具包括 Grafana、Groundcover 和 Prometheus。Azulay 进一步指出,Groundcover 代表了可观测性的新范式,因为“它打破了传统的 APM 模型,提供了最小的资源消耗,全面的可观测性和简单透明的定价。
2、将安全性放在首位
仅仅关注可观察性是不够的,这意味着你只能解决一半的问题。在红帽发布的关于 2023 年 Kubernetes 的 安全状况的报告中,94% 的受访者在过去 12 个月内经历过安全事件,而 64% 的受访者表示由于 K8s 的安全问题导致了他们系统的延迟或影响部署。30%的受访者还认为漏洞是他们对容器和 K8s 环境的最大担忧。
在 Kubernetes 环境中运行应用程序时保持安全性非常必要。如果不将安全性放在首位,可能会对性能产生不利影响,增加补救成本,并产生持久的破坏性影响。使用 K8s 时,你必须时刻保持警惕,才能够从中获得你想要的性能提升。
ARMO 开源社区副总裁 Box Craig 作为当今最受欢迎的 Kubernetes 安全工具 Kubescape 创建者之一,他指出:“与所有云软件一样,当你将 Kubernetes 访问权限委托给团队时,你要确保自己有与之契合的的护栏,这是非常重要的。
Craig 进一步指出,为确保安全性而采取的一些步骤应该包括(但不限于):
定期更新安全补丁。
配置 K8s 集群时遵循行业最佳实践。
检查并验证映射是否存在恶意代码、不正确的配置和其他漏洞。
禁止用户访问云 API 数据。
利用基于角色的访问控制 (RBAC),允许用户仅根据其角色和功能访问 K8s 资源。
使用 Kubecsape 等安全工具保护您的 IDE、CI/CD 管道和集群。
3、修复存储问题
使用 Kubernetes 时的额外存储是有代价的,其承担了开发人员和组织产生的大部分成本。为了有效地减少开发人员的部署摩擦,大型企业通常会迁移到公共云环境并减少对本地服务器的依赖。
根据 ARMO 的首席技术官 Ben Hirschberg 的说法,解决这个问题的一种方法是“从源头分析数据,最大限度减少移动大量数据进行观察的需要。可以直接分析节点或应用程序内部的数据,并非所有数据都需要移动到外部存储或可观测性平台。通过在本地存储数据,DevOps 团队可以避免不必要的数据传输成本,同时确保在需要时随时获得必要的数据。
4、优先考虑互操作性
大多数开发人员面临的 K8s 的另一个问题是互操作性,即应用程序在 K8s 中相互通信的能力。K8s 上可互操作的云原生应用程序之间的通信并不像看起来那么简单。正如本文所指出的,缺乏互操作性可能会影响群集部署,因为它包含的应用程序实例可能会在群集中的单个节点上运行时出现问题。
解决这一挑战的一种方法是利用跨多个组织(如 AWS、Google、IBM、SAP 和 Red Hat)的协作项目,为您的云原生应用程序提供服务。
5、结语
最好的 K8s 实践不是一次性修复,它们来自不断从错误中学习和重新调整底线。对于已经陷入技术工作和以创纪录速度部署容器的需求的 DevOps 团队来说,这可能需要花费更多时间。但幸运的是,可观测性工具可以确定将注意力集中在何处,并帮助针对安全性、互操作性、存储等关键问题提出有积极影响作用的建议和步骤。
6、Kubernetes DevOps 系统
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。平台即可私有化部署,也可基于 Kubernetes(K8S)部署。
支持 DevOps,开箱即用的全功能容器平台:
自动检出(Checkout)代码、测试、分析、构建、部署并发布
可发现性、可观测性、安全性:一站式集成您所需的所有特性
独特的微服务治理功能
技术架构
数据库兼容:MySQL(默认)、SQLServer、Oracle、PostgreSQL、达数据库、人大金仓数据库
分布式文件存储:兼容 MinIO 及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS 等
后端基于 IDEA + Eclipse +Spring Tool Suite 等开发。
前端基于 Node.js+Vue + TypeScript +Vite+Pinia+Pnpm+ Element-ui 等开发。
移动端开发 Node.js 开发
应用体验:https://www.jnpfsoft.com/?infoq
版权声明: 本文为 InfoQ 作者【高端章鱼哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/52654291d1d4b27d59f291b83】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论