当前位置: 首页 > news >正文

使用 Datadog 和 Slack Alerts 监控 minikube

为什么要监控 minikube 集群?这是一个不错的练习,可以让你了解 DataDog 的设置过程并探索 K8s 指标产品。

本文将分享我的以下经验:

  • 设置最新的 minikube
  • 部署示例应用程序
  • 创建 DataDog(试用)帐户
  • 使用 Helm 安装 DataDog 代理
  • 安装 DataDog 集成并查看仪表板

设置最新的 minikube

我按照 minikube 文档安装了 minikube。文档根据我的机器生成了一些下载和安装 minikube 的命令,使整个过程快速而轻松。

对于我的 Mac,文档生成了以下内容:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube

从这里开始,我只需要执行 minikube start 就可以启动我的集群。我运行 kubectl config current-context 来验证上下文设置是否正确,结果返回了 minikube 。

ninjamac@ip-192-168-1-95 ~ % minikube start
😄  Darwin 15.3.1 (arm64) 上的 minikube v1.33.1
✨  根据现有的配置文件使用 docker 驱动程序
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.44 ...
🔄  Restarting existing docker container for "minikube" ...
❗  此镜像不适用于当前的 minikube 版本。要解决此问题,您可以删除并重新创建您的 minikube 集群,使用最新的镜像。预期的 minikube 版本:v1.33.0 -> 实际的 minikube 版本:v1.33.1
🐳  正在 Docker 26.0.1 中准备 Kubernetes v1.30.0…
🔎  正在验证 Kubernetes 组件...
    ▪ 正在使用镜像 docker.io/kubernetesui/dashboard:v2.7.0
💡  插件启用后,请运行 "minikube tunnel" 您的 ingress 资源将在 "127.0.0.1"
    ▪ 正在使用镜像 gcr.io/k8s-minikube/storage-provisioner:v5
    ▪ 正在使用镜像 registry.k8s.io/ingress-nginx/controller:v1.10.1
    ▪ 正在使用镜像 registry.k8s.io/metrics-server/metrics-server:v0.7.1
    ▪ 正在使用镜像 registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1
    ▪ 正在使用镜像 docker.io/kubernetesui/metrics-scraper:v1.0.8
    ▪ 正在使用镜像 registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1
🔎  正在验证 ingress 插件...
💡  Some dashboard features require the metrics-server addon. To enable all features please run:

	minikube addons enable metrics-server

🌟  启用插件: metrics-server, storage-provisioner, default-storageclass, dashboard, ingress
🏄  完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间

部署示例应用程序


我创建了一些示例应用程序用于监控。运行单个 Nginx Pod 并将其公开为服务非常简单。我还保存了 Nginx 的配置作为部署。

kubectl run nginx --image=nginx
kubectl expose pod nginx --port 80
kubectl apply -f https://raw.githubusercontent.com/gsweene2/terraform-eks-nginx/master/k8s/nginx-deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/gsweene2/terraform-eks-nginx/master/k8s/nginx-service.yaml

创建datadog 免费账号并和kubernetes集成

选择kubernetes nginx slack container

使用 Helm 安装 Datadog 代理

添加 Datadog Helm 存储库

helm repo add datadog https://helm.datadoghq.com
helm repo update
kubectl create secret generic datadog-secret --from-literal api-key=<DATADOG_API_KEY>

tips:用您自己的Datadog API key 替换<DATADOG_API_KEY>  

配置 datadog-values.yaml

创建 datadog-values.yaml 文件,其中包含:

datadog:
 apiKeyExistingSecret: datadog-secret
 site: <DATADOG_SITE>

将 <DATADOG_SITE> 替换为您的 Datadog 站点。我把datadog的站点都放在下面的截图中。

使用上述配置文件部署Agent

helm install datadog-agent -f datadog-values.yaml datadog/datadog

确认代理安装

ninjamac@ip-192-168-1-95 datadog % kubectl get pod -l app=datadog-agent
NAME                  READY   STATUS    RESTARTS   AGE
datadog-agent-55qds   2/2     Running   0          54m

也可以登录datadog,验证代理 Pod(带有 app.kubernetes.io/component:agent 标签)是否出现在 Datadog 的“容器”页面上。代理 Pod 会在部署后几分钟内被检测到。

创建pod failling 告警规则

当 Pod 发生故障时,这意味着容器要么以非零状态退出,要么被系统终止。此监视器会跟踪给定 Kubernetes 集群中超过 2个 Pod 发生故障的情况。

设置通过slack - datadog-alert channel来告警

通过kubectl scale命令来将nginx deployment缩到0来模拟故障,生产环境千万不要这样做。

ninjamac@ip-192-168-1-95 datadog % kubectl scale deployment nginx-deployment --replicas=0
deployment.apps/nginx-deployment scaled

过几分钟后就slack就收到下面的告警

 

    结论

    通过这篇文章,我给您演示了如何在minikube中部署datadog agent,然后通过它来收集kubernetes集群状态和pod的信息,并通过与slack工具集成,创建告警规则,当pod fail时自动发送告警到slack channel。希望能对您的日后运维带来一些启示和帮助,如果您有问题,欢迎在评论区给我留言。

     

     

    相关文章:

  • Linux安装Elasticsearch详细教程
  • 乳腺癌识别:双模型融合
  • 行销和随销的区别
  • 深入理解 WebMvcConfigurer:定制 Spring MVC 的核心接口
  • AI与深度伪造技术:如何识别和防范AI生成的假视频和假音频?
  • CentOS 系统磁盘扩容并挂载到根目录(/)的详细步骤
  • 24FIC
  • 【数学建模】(智能优化算法)天牛须算法(Beetle Antennae Search, BAS)详解与Python实现
  • 利用 RNN 预测股票价格:从数据处理到可视化实战
  • 人工智能之数学基础:复矩阵
  • 机器人零位标定修正流程介绍
  • ZFS 数据恢复:从误删修复到 RAIDZ 恢复,原生工具与第三方软件对比
  • 【图像处理】:opencv实现模糊图像处理和对比度增强
  • 宝马集团加速 ERP 转型和上云之旅
  • 项目实战——苍穹外卖
  • 基于STM32、HAL库的CH224Q快充协议芯片简介及驱动程序设计
  • 关于“网络编程“组件之 “Buffer“
  • Python中的数值运算函数及math库详解
  • 【vant 手机端封装表格】
  • C# virtual 和 abstract 详解
  • 做网站用什么插件/seo搜索培训
  • 印刷网站建设 优帮云/手机域名访问网站怎么进入
  • wordpress网站标题自定义/怎么让网站快速收录
  • flash网站建设技术/企业网站定制开发
  • 网站模板选择/潍坊网站建设解决方案
  • 制作动态网站用什么软件/2024年重大政治时事汇总