65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Azure Kubernetes 服务上扩展智能应用程序 - 第 2 部分

2023年10月19日

CPOL

6分钟阅读

viewsIcon

2958

在我们系列的最后一部分,我们将深入探讨如何利用 AKS 的强大功能(如自动缩放和高可用性)来管理可变的工作负载并维持持续的服务。

本周的第一个主题中,我们探讨了如何在 Azure Kubernetes Service (AKS) 中使用 Azure AI Vision 来创建一个能够分析图像并通过光学字符识别 (OCR) 提取有价值数据的智能应用。本周的第二篇文章则重点介绍了 Azure Cosmos DB 的优势,强调了其多模型数据库的特性以及处理我们智能应用中 OCR 分析产生的多样化数据的能力。

这第三个主题的第一部分中,我们配置了 Azure Kubernetes Service (AKS) 来管理不同的工作负载并平滑地扩展我们的智能应用,确保它能处理密集且波动的工作负载。现在,我们将探讨如何在不影响性能或可用性的情况下进行监控和扩展。

监控 AKS 以提升可扩展性和可用性

让我们回顾一下如何设置和使用 Azure MonitorAzure Log Analytics 来有效监控 AKS。

首先,我们来创建一个 Log Analytics 工作区。在 Azure Log Analytics 中,工作区是一个集中的存储库和分析平台,用于收集、存储并提供由 Azure 服务、应用程序和资源生成的日志和遥测数据的见解。

点击 Create a resource (创建资源),搜索“Log Analytics workspaces (Log Analytics 工作区)”,然后点击 Create (创建)。

The Log Analytics Workspace service with the Create button indicated by an arrow.

接下来,选择 computer-vision 资源组,并在 Instance details (实例详细信息) 中,将工作区名称设置为“DefaultLAWorkspace”。

The Log Analytics workspace creation screen shows the Subscription as "Azure subscription 1," Resource group as "computer-vision," Instance name set to DefaultLAWorkspace and Region set to East US.

现在,在 Azure 门户中打开 aks-intelligent-app AKS 集群。打开 Monitoring (监视) 部分下的 Diagnostic settings (诊断设置),然后点击 Add diagnostic setting (添加诊断设置)。

The Diagnostic settings page displays a link reading "Add diagnostic setting," indicated with an arrow.

接下来,为诊断设置命名,例如“diagnostic-setting-intelligent-app”。勾选所有与 Kubernetes 相关的日志类别,勾选 AllMetrics (所有指标),勾选 Send to Log Analytics workspace (发送到 Log Analytics 工作区),然后选择 DefaultLAWorkspace 作为目标。点击 Save (保存) 按钮。

The created setting shows all available log categories checked off and the Destination details it will send to DefaultLAWorkspace.

现在,让我们查看 AKS 集群生成的日志。点击 Monitoring (监视) 下的 Logs (日志) 项,然后在 Alerts (警报) 部分下找到 Container memory (容器内存) 查询,并点击 Run (运行)。

你会看到 Azure 自动为你创建了下面的查询。这个查询是用 Kusto 查询语言 (KQL) 编写的,该语言在 Azure 门户中被广泛使用。

let threshold = 75000000; // choose a threshold
Perf
| where ObjectName == "K8SContainer" and CounterName == "memoryRssBytes"
| summarize AvgUsedRssMemoryBytes = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName, _ResourceId
| where AvgUsedRssMemoryBytes > threshold
| render timechart

KQL 查询在监控 AKS 集群中至关重要,因为它们提供了一种强大而灵活的方式来提取、分析和可视化来自 AKS 集群的数据。这些查询允许管理员和 DevOps 团队通过查询从 AKS 环境中各种来源收集的遥测数据和日志,来获得对集群健康状况、性能和安全性的深入了解。

当你点击 Run (运行) 按钮执行日志查询时,你会得到以下图表:

要查看表格形式的日志,请点击 Results (结果) 选项卡,如下所示:

接下来,我们回顾一下如何查看与我们 AKS 集群使用情况相关的关键指标。点击 Monitoring (监视) 下的 Metrics (指标)。

在这里,我们可以使用预定义的指标创建一个或多个图表来进行监控,例如 CPU、磁盘、内存使用情况、网络流量和 Pod 中断事件。

Azure Kubernetes Service Diagnostics (Azure Kubernetes 服务诊断) 在提升 Azure 环境中 Kubernetes 集群的管理和性能方面扮演着至关重要的角色。通过启用诊断,我们可以获得关于 Kubernetes 集群健康状况、可用性和效率的宝贵见解。

在左侧菜单中点击 Diagnose and solve problems (诊断并解决问题),可以找到许多故障排除类别。

这些类别提供了与集群各方面问题相关的详细信息,包括性能、连接性、可伸缩性、安全性、节点健康状况和最佳实践。

现在,让我们来探究其中一个 AKS 集群问题的细节。点击 Cluster and Control Plane Availability and Performance (集群和控制平面可用性与性能) 刀片。

在这里,你可以验证关于集群可用性和性能的许多可能问题的存在。

Azure Kubernetes Service Diagnostics 是一个用于监控、维护和优化 AKS 集群的关键工具。通过提供跨集群健康状况、性能和安全性等多个方面的实时见解和建议,AKS Diagnostics 让你能够识别潜在问题并进行数据驱动的改进。

真实世界用例:智能应用中的扩展和高可用性

集群自动伸缩器、Azure 负载均衡器和 Azure 可用区可以为智能应用提升成本效益,它们能均匀分配流量并优化服务性能,确保不间断的用户体验。

这些多功能工具在各行各业都有广泛的应用,包括金融、医疗、电子商务等,尤其适用于具有可变工作负载和高正常运行时间要求的关键任务应用。

电子商务企业

电子商务企业必须处理在特殊活动或节假日期间流量急剧变化的挑战。它们的网站需要高正常运行时间和灾难恢复能力。

这些企业在用户流量巨大或技术故障期间可能会经历重大挫折,可能导致客户不满、购物车被放弃和销售损失。

通过使用智能应用实施高可用性策略,电子商务企业可以确保不间断的服务、网站响应能力和无缝的在线购物体验,最终提升客户满意度和收入。像集群自动伸缩器和 Azure 负载均衡器这样的工具确保了电子商务企业拥有轻松处理高流量的资源和能力。

医疗机构

医疗机构需要数据可靠性和灾难恢复能力。在医疗保健领域,应用程序通常需要处理大量的患者数据和图像,尤其是在诊断过程中。

通过战略性地实施和管理带有 Azure 负载均衡器、可用区和集群自动伸缩器等工具的智能应用,医疗机构可以确保其数字基础设施与运营目标保持一致。此外,他们还可以在控制成本和降低风险的同时,提升患者护理水平和法规遵从性。

金融服务

金融服务机构通常拥有处理交易、分析和客户事务的应用程序。这些组织需要高可用性和数据驻留合规性。

例如,银行应用在使用高峰期或技术故障期间面临挑战。大量用户同时访问其账户,如在高峰时段或特殊活动期间,可能会给应用的服务器带来压力,导致速度变慢或超时。

Azure 负载均衡器、可用区和集群自动伸缩器等工具协同工作,帮助银行应用将数据保留在所需区域,处理活动激增,保持弹性,并为客户提供流畅可靠的银行体验。

优化智能应用

你可能希望对第 1 部分中的智能应用进行优化,以便在使用 OCR 处理图像并将非结构化结果存储在 Cosmos DB 中时,实现动态扩展和不间断服务。你可以遵循以下策略:

  • 配置集群自动伸缩器,根据工作负载波动调整 AKS 集群的节点数量。在图像处理请求激增期间,它会通过提供额外的节点进行横向扩展以实现高效处理。反之,在低需求期间,它会进行缩减以降低运营成本,同时保持性能。
  • 使用 AKS HPA (Horizontal Pod Autoscaler) 在集群内动态扩展应用程序 Pod。HPA 监控自定义指标,如队列长度和处理时间。当超过阈值时,它会自动调整 Pod 的数量,确保 OCR 处理工作负载能有效地分布到多个 Pod 上,从而实现不间断服务。
  • 利用 Azure 负载均衡器将图像处理请求均匀地分布到应用实例中,以优化性能并防止过载。将应用实例部署到 Azure 可用区,以实现冗余和容错。健康探针会主动监控实例的健康状况,将流量从不健康的实例引开,以维持高可用性。
  • 优化容器的资源使用。微调应用容器的资源请求和限制,以确保高效的资源使用和稳定性。使用 Prometheus 和 Grafana 等工具持续监控容器资源使用情况,并根据观察到的使用模式调整资源分配。

后续步骤

Azure Kubernetes Service 为扩展智能应用和确保其高可用性提供了一个强大的解决方案。它提供了自动化工具,用于使用 Kubernetes 设置、管理和扩展容器化应用程序。它对可扩展性和可用性的支持可以防止中断,支持零停机更新,并使你能够创建一个高性能的智能应用。

深入了解 Azure Kubernetes Services 的功能,以充分发挥其在扩展和管理你的智能应用方面的潜力。你的用户将享受到更流畅、更强大的应用体验。

© . All rights reserved.