azure - 如何确定 AKS kubernetes 集群故障的原因

标签 azure kubernetes azure-aks

我有一个托管在英国南部的生产 AKS kubernetes 集群,该集群变得不稳定且无响应:

image 1

从图像中,您可以看到我有几个 Pod 处于不同的未就绪状态(即终止/未知),并且无法访问要运行的报告的 Pod。

我从见解网格中可以看到该问题是在昨晚 9.50 左右开始的

image 2

我已经通过 AKS 服务本身的日志以及 Kibana 日志来查找故障发生时集群上运行的应用程序,但我很难找到任何可能导致此问题的原因。

幸运的是,我有两个集群在流量管理器下为生产提供服务,因此已将所有流量路由到健康的集群,但我担心我需要了解导致此情况的原因,特别是如果另一个集群发生同样的情况,因为将会有生产当我启动新集群时出现停机。

我的问题是我是否错过了任何明显的地方来查找导致问题的原因的信息?任何可能指出问题所在的事件日志?

最佳答案

我建议在您的节点“未准备好”时检查 K8s 事件日志。

尝试打开“见解”节点选项卡,然后在顶部选择出现问题的时间范围。查看节点状态是什么。有压力吗?您可以在节点列表右侧的属性面板中看到它。属性面板还包含指向该时间范围的事件日志的链接...但请注意,节点属性面板上的事件日志链接会构造一个复杂的查询,以仅显示标记有该节点的事件。

您可以在日志中通过更简单的查询(也可以运行更有趣的查询)来获取此信息。打开集群左侧菜单中的“Logs”选项卡并执行与此类似的查询(将时间间隔更改为您需要的时间间隔):

let startDateTime = datetime('2019-01-01T13:45:00.000Z');
let endDateTime = datetime('2019-01-02T13:45:00.000Z');
KubeEvents_CL
| where TimeGenerated >= startDateTime and TimeGenerated < endDateTime
| order by TimeGenerated desc

查看是否有事件表明出了什么问题。您还可以查看集群上的节点 list 。节点报告 K8s 状态。在出现问题之前它是“就绪”...然后出了问题 - 状态是什么?偶然出现磁盘不足的情况吗?

let startDateTime = datetime('2019-01-01T13:45:00.000Z');
let endDateTime = datetime('2019-01-02T13:45:00.000Z');
KubeNodeInventory
| where TimeGenerated >= startDateTime and TimeGenerated < endDateTime
| order by TimeGenerated desc

关于azure - 如何确定 AKS kubernetes 集群故障的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258956/

相关文章:

kubernetes - '_acme-challenge.example.org.' 的未知记录 ID

azure - 通过 ARM 模板将节点池添加到现有 AKS 集群

c# - 配置 NET 6 Azure Function 应用程序运行状况检查

azure - 是否可以在云上部署分布式系统?

azure - 如何在 Azure 上部署 Angular2 + Webpack 应用程序?

postgresql - 带有Kubernetes和Gluster的GitLab HA

kubernetes - PVC 处于待定状态

docker - 如何处理Flink管理和K8S管理

Azure SAS 连接不适用于 Azure.Storage.Blobs

azure - 如何在 azure (AKS) 中的 Kubernetes 集群中附加磁盘