阿里云容器Kubernetes监控(三) - 与云监控的集成与使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 简介 监控是运维Kubernetes中非常重要的一环,在kubernetes的生态内,有非常多可选的方案,场景的方案包括内置的Heapster、CNCF的亲儿子Prometheus、Influxdb的采集方案Telegraf等等,当然传统的监控运维工具例如zabbix也对容器的场景进行了适配。

简介

监控是运维Kubernetes中非常重要的一环,在kubernetes的生态内,有非常多可选的方案,常见的方案包括Kubernetes内置的Heapster、CNCF的亲儿子Prometheus、Influxdb的采集方案Telegraf等等,当然传统的监控运维工具例如zabbix也对容器的场景进行了适配。这些方案的实现方式各有不同,有的是采用agent的推模式推送数据,有的是通过集中式的拉模式来采集数据,那么究竟该怎么选择适合自己的监控方案呢?这个问题要从容器监控的难点开始讲起。

容器监控的难点

传统的监控方案,大部分是自顶向下的,配置一个监控的任务、采集端点,然后应用的生命周期与监控的任务生命周期是一致的,采集的目标是固定的。无论应用如何重启、变化,对于采集任务而言只要采集端点没有变化,那么任何的变化都是生命周期中的正常现象。

但是容器的场景则有所不同,大部分容器是被调度器进行调度的,也就是说是在一个资源池中随机调度的,监控系统通常无法感知采集端点的具体位置。因此大部分的监控采用的是自底向上的聚合方式,这种方式的原理就是:通过给容器打标,将一些原本在配置任务时候设定的信息,通过label打标到容器上。然后在聚合的时候从容器的信息,反向聚合出应用的监控。
但是自底向上的聚合方式有一个严重的缺陷,从生命周期上来看,因为监控的生命周期是来自监控数据的,因此一旦监控数据缺失,就会导致上层的监控生命周期收到影响,也就是说无法判断此时应用的生命周期状态。为了解决这个问题,大部分的采集系统会通过额外的label来实现,但是每一个metric都会打上这样的Label使得监控的数据会有大量的冗余信息。

阿里云容器服务Kubernetes与云监控集成

与云监控的集成是通过应用分组进行实现的,与传统的Pod监控不同,阿里云容器服务Kubernetes支持Kubernetes的逻辑概念的监控,例如Deployment、DaemonSet、StatefulSet的监控。对于1.10.4的版本的集群,默认在创建的时候就安装完毕。

所有的部署都会自动创建应用分组,可以通过控制台的部署页面找到对应的部署监控入口。

%E7%B2%98%E8%B4%B4%E5%9B%BE%E7%89%87.png

更多类型的workloads监控可以通过k8s原生的Dashboard进入。

lALPBY0V44Pj9qbNAzfNBTk_1337_823.png_620

点击 监控 可以进入到对应的监控分组中。

lALPBY0V44PhvG3NAzfNBTk_1337_823.png_620

在本例中是一个Deployment,并且此Deployment下包含一个Pod,监控包含两个维度,一个是分组维度,一个是实例维度。

lALPBY0V44Pit7jNAzfNBTk_1337_823.png_620

分组会聚合当前所有实例的指标,假如当前Deployment下有多个Pod,那么此时分组的数据指标就是聚合多个Pod的监控指标。

lALPBY0V44PiuIrNAzfNBTk_1337_823.png_620

如果需要查看特定的Pod的监控,可以分组实例来去查看,选择Pod名称,点击确认即可。

lALPBY0V44PiuujNAzfNBTk_1337_823.png_620
您也可以给当前的监控分组设置报警规则,实现应用的告警。

老集群升级

阿里云容器服务Kubernetes目前已完成与云监控的集成,目前1.10.4版本的集群已经默认支持,老集群可以通过如下的方式进行升级。

根据自己的集群替换REGION与CLUSTER_ID,并重新部署Heapster的yaml

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: heapster
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: heapster
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      serviceAccount: admin
      containers:
      - name: heapster
        image: registry.##REGION##.aliyuncs.com/acs/heapster-amd64:v1.5.1.1
        imagePullPolicy: IfNotPresent
        command:
        - /heapster
        - --source=kubernetes:https://kubernetes.default
        - --historical-source=influxdb:http://monitoring-influxdb:8086
        - --sink=influxdb:http://monitoring-influxdb:8086
        - --sink=socket:tcp://monitor.csk.##REGION##.aliyuncs.com:8093?clusterId=##CLUSTER_ID##&public=true

根据自己集群替换REGION与CLUSTER_ID,并部署alicloud-monitor-controller

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: alicloud-monitor-controller
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: alicloud-monitor-controller
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      hostNetwork: true
      tolerations:
      - effect: NoSchedule
        operator: Exists
        key: node-role.kubernetes.io/master
      - effect: NoSchedule
        operator: Exists
        key: node.cloudprovider.kubernetes.io/uninitialized
      serviceAccount: admin
      containers:
      - name: alicloud-monitor-controller
        image: registry.##REGION##.aliyuncs.com/acs/alicloud-monitor-controller:v1.0.0
        imagePullPolicy: IfNotPresent
        command:
        - /alicloud-monitor-controller
        - agent
        - --regionId=##REGION##
        - --clusterId=##CLUSTER_ID##
        - --logtostderr
        - --v=4

在kube-system命名空间中看到这两个Deployment已经运行中即升级完毕。对于不清楚自己REGION信息的开发者,可以通过如下的方式快速查询,打开ECS控制台,选择自己集群所在的地域,路由中最后一段即是REGION。
lALPBY0V44PzJ9vNAzfNBTk_1337_823.png_620

相关实践学习
RocketMQ监控/告警一站式搭建应用
RocketMQ监控/告警一站式搭建演示
目录
相关文章
|
15天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm了解两者特点,助力选取合适容器编排工具
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
1天前
|
存储 运维 监控
Kubernetes 集群的持续监控与性能优化策略
【5月更文挑战第11天】在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。随着其在不同规模企业的广泛采用,如何确保 Kubernetes 集群的高效稳定运行变得至关重要。本文将探讨一套系统的 Kubernetes 集群监控方法,并结合实践经验分享针对性能瓶颈的优化策略。通过实时监控、日志分析与定期审计的结合,旨在帮助运维人员快速定位问题并提出解决方案,从而提升系统的整体表现。
|
3天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
|
4天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
16 0
|
8天前
|
运维 监控 Kubernetes
Kubernetes 集群的监控与维护策略
【5月更文挑战第4天】 在当今微服务架构盛行的时代,容器化技术已成为软件开发和部署的标准实践。Kubernetes 作为一个开源的容器编排平台,因其强大的功能和灵活性而广受欢迎。然而,随着 Kubernetes 集群规模的扩大,集群的监控和维护变得日益复杂。本文将探讨 Kubernetes 集群监控的重要性,分析常见的监控工具,并提出一套有效的集群维护策略,以帮助运维人员确保集群的健康运行和高可用性。
40 10
|
9天前
|
存储 运维 监控
Kubernetes 集群的持续监控与优化策略
【5月更文挑战第3天】在微服务架构和容器化部署日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排平台。然而,随着集群规模的增长和业务复杂度的提升,有效的集群监控和性能优化成为确保系统稳定性和提升资源利用率的关键。本文将深入探讨针对 Kubernetes 集群的监控工具选择、监控指标的重要性解读以及基于数据驱动的性能优化实践,为运维人员提供一套系统的持续监控与优化策略。
|
12天前
|
运维 Kubernetes 监控
Kubernetes 集群的监控与维护策略
【4月更文挑战第30天】 在现代云计算环境中,容器化技术已成为应用程序部署和管理的重要手段。其中,Kubernetes 作为一个开源的容器编排平台,以其强大的功能和灵活性受到广泛欢迎。然而,随之而来的是对 Kubernetes 集群监控和维护的复杂性增加。本文将探讨针对 Kubernetes 集群的监控策略和维护技巧,旨在帮助运维人员确保集群的稳定性和高效性。通过分析常见的性能瓶颈、故障诊断方法以及自动化维护工具的应用,我们将提供一套实用的解决方案,以优化 Kubernetes 环境的性能和可靠性。
|
12天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。
|
18天前
|
运维 Kubernetes Linux
10分钟搭建Kubernetes容器集群平台(kubeadm)
10分钟搭建Kubernetes容器集群平台(kubeadm)
|
15天前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
该文是一系列关于从零开始手写实现 Apache Tomcat 的教程概述。作者希望通过亲自动手实践理解 Tomcat 的核心机制。文章讨论了 Spring Boot 如何实现直接通过 `main` 方法启动,Spring 与 Tomcat 容器的集成方式,以及两者生命周期的同步原理。文中还提出了实现 Tomcat 的启发,强调在设计启动流程时确保资源的正确加载和初始化。最后提到了一个名为 mini-cat(嗅虎)的简易 Tomcat 实现项目,开源于 [GitHub](https://github.com/houbb/minicat)。

相关产品

  • 容器服务Kubernetes版