入门指南:监控 Kubernetes 基础设施

编辑

本指南演示如何使用 Elastic Kubernetes 集成来观察您的 Kubernetes 基础设施。您将设置一个 Elastic Cloud 部署,其中大部分配置会自动完成。然后,您将学习如何监控 Kubernetes 日志和指标,以便主动检测集群中的问题。

在本教程中,您将部署 Elastic Stack,在您的主机上安装 Elastic Agent 以收集日志和指标,并可视化从这些收集的日志和指标中获得的信息。

先决条件

编辑

要开始,您需要

  • 用于 Elastic Cloud 试用的互联网连接和电子邮件地址
  • 一个活动的 Kubernetes 集群。
  • 在您的 Kubernetes 集群上部署的 kube-state-metrics (KSM) 服务。

如果您尚未部署 KSM 服务,您可以按照以下步骤进行设置(更详细的说明可以在 KSM 服务存储库的主页上找到)

  1. 检查您的 Kubernetes 集群版本是否为 1.8 或更高版本。如果不是,请参阅 KSM 服务自述文件的 Kubernetes 部署 部分以获取说明。
  2. 如果您使用的是 Google Kubernetes Engine (GKE),则您的 GCP 身份必须具有 cluster-admin 角色。如果尚未分配,您可以通过运行以下命令分配该角色:

    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud info --format='value(config.account)')
  3. kube-state-metrics 存储库克隆到本地目录

    git clone [email protected]:kubernetes/kube-state-metrics.git
  4. 更改到克隆的存储库目录

    cd kube-state-metrics
  5. 将项目部署到您的 Kubernetes 集群

    kubectl apply -f examples/standard

    结果应如下所示

    clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created
    clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
    deployment.apps/kube-state-metrics created
    serviceaccount/kube-state-metrics created
    service/kube-state-metrics created
  6. 要测试 KSM 服务是否正在运行,请运行以下命令公开该服务

    kubectl port-forward svc/kube-state-metrics -n kube-system 8080:8080

    结果应为

    Forwarding from 127.0.0.1:8080 -> 8080
    Forwarding from [::1]:8080 -> 8080
  7. 现在,打开 Web 浏览器访问地址 localhost:8080/metrics。如果一切正常,您将看到来自集群的指标数据流。

    KSM metrics data

在完成先决条件后,您就可以开始了!

步骤 1:创建 Elastic Cloud 部署

编辑

如果您已注册试用部署,则可以跳过此步骤。

Elastic Cloud 部署为您提供 Elastic Stack 的所有功能,作为托管服务。要试用您的第一个部署,请注册免费的 Elastic Cloud 试用版

  1. 访问我们的 Elastic Cloud 试用版 页面。
  2. 输入您的电子邮件地址和密码。

    Start your free Elastic Cloud trial
  3. 登录后,您可以创建部署。为您的部署命名并选择 创建部署

    Create your first deployment
  4. 在部署设置期间,请记下您的 elastic 超级用户密码,并将其保存在安全的地方。
  5. 部署准备就绪后,选择 继续。此时,您可以访问 Kibana 和一系列设置指南。

步骤 2:运行集成设置指南

编辑
  1. 选择 监控 Kubernetes 集群 卡片。指南将在第一步打开。

    Observe my Kubernetes infrastructure - Step 1
  2. 在指南的 添加数据 选项卡上,选择 开始。Elastic Kubernetes 集成页面将打开。

    Kubernetes integration page
  3. 选择 添加 Kubernetes,您就可以添加第一个集成。

    Add integration page

步骤 3:在您的集群上安装 Elastic Agent

编辑

Elastic Kubernetes 集成使用 Elastic Agent,这是一种统一的方式,用于将日志、指标和其他类型数据的监控添加到主机。它还可以保护主机免受安全威胁、查询操作系统数据等等。单个代理使您能够轻松快速地在基础设施中部署监控。每个代理都有一个单独的策略(输入设置的集合),您可以更新该策略以添加用于新数据源、安全保护等的新集成。

您的新 Elastic Cloud 部署包括一个预配置的 Fleet Server 实例,它管理您可以用来监控主机系统(在本例中为您的 Kubernetes 集群)的 Elastic Agent。

  1. 准备好添加您的第一个集成? 页面上,选择 安装 Elastic Agent
  2. 按照指南中的步骤在 Fleet 中配置和注册 Elastic Agent

    1. 下载提供的清单文件或将文本复制到本地目录中的新文件。该文件应命名为 elastic-agent-managed-kubernetes.yml
    2. 从包含清单文件的目录中,运行 apply 命令

      kubectl apply -f elastic-agent-managed-kubernetes.yml

      结果应为

      daemonset.apps/elastic-agent created
      clusterrolebinding.rbac.authorization.k8s.io/elastic-agent created
      rolebinding.rbac.authorization.k8s.io/elastic-agent created
      rolebinding.rbac.authorization.k8s.io/elastic-agent-kubeadm-config created
      clusterrole.rbac.authorization.k8s.io/elastic-agent created
      role.rbac.authorization.k8s.io/elastic-agent created
      role.rbac.authorization.k8s.io/elastic-agent-kubeadm-config created
      serviceaccount/elastic-agent created
  3. 在集成设置指南中,等待确认 Elastic Agent 已在 Fleet 中注册。这可能需要几分钟。

    Agent enrollment confirmed

    您还可以随时通过在 Kibana 中导航到 Fleet 页面来查看 Elastic Agent 的状态。我们的测试 Kubernetes 集群有三个节点,因此配置了三个 Elastic Agent。

    Fleet page showing enrolled Elastic Agents

    您还可以通过运行 get pods 命令来检查 Kubernetes 集群中 Elastic Agent 的状态

    kubectl -n kube-system get pods -l app=elastic-agent

    一旦 Elastic Agent 运行起来,结果应为

    NAME                  READY   STATUS    RESTARTS   AGE
    elastic-agent-b72dp   1/1     Running   0          3m35s
    elastic-agent-p2t39   1/1     Running   0          3m35s
    elastic-agent-xmfhg   1/1     Running   0          3m35s

    您的 Kubernetes 集群日志也应显示 Elastic Agent Pod 已成功创建。使用 elastic-agent 过滤以仅查看适用的日志

    Cluster logs showing three Elastic Agent pods were created

如果遇到问题,您可以查看设置指南中提供的故障排除步骤。Kubernetes 日志和 get pods 命令也可用于诊断任何问题。

如果出现任何与内存相关的错误,您可能需要调整 elastic-agent-managed-kubernetes.yml 清单文件中 Elastic Agent 容器的 资源限制,以增加 resources: limitsresources: requests 下的默认 memory 值。容器资源使用情况取决于数据流的数量和环境大小。

步骤 4:添加 Elastic Kubernetes 集成

编辑
  1. 选择 添加集成
  2. 选择要监控的指标和日志类型。如果您愿意,现在可以保留所有默认设置,并在以后根据需要调整这些设置。

    Configure the integration

步骤 5:查看您的 Kubernetes 数据

编辑
  1. 选择 确认传入数据。等待 Elastic Agent 策略保存片刻,然后 Kubernetes 集成设置指南将在第二步打开。

    Observe my Kubernetes infrastructure - Step 2
  2. 在指南的 探索 Kubernetes 指标和日志 选项卡上,选择 开始。Kibana [Metrics Kubernetes] 集群概述 仪表板将打开。

    Metrics Kubernetes Cluster Overview dashboard

    您可以使用仪表板过滤器深入了解特定集群或命名空间。您还可以将指标的时间段过滤到任何范围,无论是绝对范围还是相对于当前时间的相对范围。

  3. Kubernetes 仪表板 [Metrics Kubernetes] 卡片上,尝试一些其他可用的仪表板。

    例如,在 Kubernetes Pod 仪表板上,默认可视化效果捕获了 Pod 状态、CPU 使用率、内存使用率和网络流量

    Metrics Kubernetes Pods dashboard

    Kubernetes 部署 仪表板上,您可以查看所有部署和副本:所需副本、可用副本、不可用副本和已更新副本。

    Metrics Kubernetes Deployments dashboard
  4. 在 Elastic 横幅上,选择 设置指南:步骤 2。指南将在第二步打开。

    Observe my Kubernetes infrastructure - Step 1
  5. 由于您现在已尝试了一些 Kibana 仪表板,因此请选择 标记为已完成
  6. Elastic 可观测性之旅 选项卡下,选择 开始 以了解有关 Elastic 可观测性的更多信息。设置指南中的其余步骤将向您介绍监控 Kubernetes 集群日志和指标数据的其他功能,以帮助您更好地评估集群随时间的性能。

您现在已成功使用 Elastic Kubernetes 集成配置了 Kubernetes 基础设施的监控!要了解有关 Elastic Kubernetes 集成的更多信息,请查看 Kubernetes 集成 文档。

接下来做什么?

编辑

了解有关 Elastic 可观测性的更多信息

  • 将您的调查深入到更深层次!使用 Elastic 可观测性 来统一您的日志、指标、正常运行时间和应用程序性能数据。
  • 您的眼睛是否厌倦了盯着屏幕墙?创建警报,并在您在泳池边品尝您喜欢的饮料时了解问题。
  • 所有内容都按您想要的方式工作了吗?通过在整个基础设施中部署 Elastic Agent 将您的代理策略推广到其他主机!

了解其他 Elastic 解决方案和功能

  • 想要为您的网站、应用程序或组织数据添加搜索功能吗?试用 企业搜索
  • 想要 Elastic 承担繁重的工作吗?使用机器学习来 检测异常
  • 想要保护您的端点免受安全威胁吗?试用 Elastic Security。添加端点保护只是您添加到代理策略的另一个集成!