Kubernetes技术分析之监控

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介:

Docker的流行激活了一直不温不火的PaaS,随着而来的是各类Micro-PaaS的出现,Kubernetes是其中最具代表性的一员,它是Google多年大规模容器管理技术的开源版本。本系列文章将逐一分析Kubernetes,本文介绍 Kubernetes中2个主要的监控模块cAdvisor 和Heapster 。

Kubernetes监控

监控是运维的根基,是非常重要的一环,对此Kubernete提供了平台本身以及应用的监控,下图是Kubernete中监控的逻辑设计图:

cAdvisor

监控agent, 在每个Kubernetes Node上都会运行cAdvisor 。cadvisor 会收集本机以及容器的监控数据(CPU, memory, filesystem, and network usage statistics)。

在较新的Kubernetes版本里,cadvior功能已经被集成到了kubelet组件中。在Node节点上可以直接访问cadvisor 的界面:

也可以调用cadvisor 的API接口,参考:

https://github.com/google/cadv ... pi.md

下面是cadvisor 一条记录,可以看到统计的监控数据范围:

 
  1.         "timestamp""2015-08-06T16:26:14.407749377+08:00"
  2.         "cpu": { 
  3.             "usage": { 
  4.                 "total": 9868208554, 
  5.                 "per_cpu_usage": [9868208554], 
  6.                 "user": 1850000000, 
  7.                 "system": 280000000 
  8.             }, 
  9.             "load_average": 0 
  10.         }, 
  11.         "diskio": { 
  12.             "io_service_bytes": [{ 
  13.                 "major": 253, 
  14.                 "minor": 7, 
  15.                 "stats": { 
  16.                     "Async": 13946880, 
  17.                     "Read": 13946880, 
  18.                     "Sync": 0, 
  19.                     "Total": 13946880, 
  20.                     "Write": 0 
  21.                 } 
  22.             }], 
  23.             "io_serviced": [{ 
  24.                 "major": 253, 
  25.                 "minor": 7, 
  26.                 "stats": { 
  27.                     "Async": 369, 
  28.                     "Read": 369, 
  29.                     "Sync": 0, 
  30.                     "Total": 369, 
  31.                     "Write": 0 
  32.                 } 
  33.             }] 
  34.         }, 
  35.         "memory": { 
  36.             "usage": 8548352, 
  37.             "working_set": 4067328, 
  38.             "container_data": { 
  39.                 "pgfault": 6462, 
  40.                 "pgmajfault": 132 
  41.             }, 
  42.             "hierarchical_data": { 
  43.                 "pgfault": 6462, 
  44.                 "pgmajfault": 132 
  45.             } 
  46.         }, 
  47.         "network": { 
  48.             "name"""
  49.             "rx_bytes": 0, 
  50.             "rx_packets": 0, 
  51.             "rx_errors": 0, 
  52.             "rx_dropped": 0, 
  53.             "tx_bytes": 0, 
  54.             "tx_packets": 0, 
  55.             "tx_errors": 0, 
  56.             "tx_dropped": 0 
  57.         }, 
  58.         "task_stats": { 
  59.             "nr_sleeping": 0, 
  60.             "nr_running": 0, 
  61.             "nr_stopped": 0, 
  62.             "nr_uninterruptible": 0, 
  63.             "nr_io_wait": 0 
  64.         } 
  65.     }, 

Heapster

Heapster 收集所有Kubernetes Node,然后汇总数据,然后可以导到第三方工具(如Influxdb)。

Heapster 可以以Pod的方式运行在Kubernetes平台里,也可以单独运行以standalone的方式。

使用Pod方式部署的话问题比较多,本文采用standalone方式部署。

 
  1. $ docker run  -p 8082:8082 \ 
  2. --add-host=node1:192.168.3.147 --add-host=node2:192.168.3.148 --add-host=node3:192.168.3.149 \ 
  3. kubernetes/heapster:v0.15.0 \ 
  4. --source=kubernetes:http://192.168.3.146:8080?inClusterConfig=false&useServiceAccount=false \ 
  5. --sink=influxdb:http://10.254.209.104:8086  

source用于配置监控来源,它支持的参数:

  • inClusterConfig - Use kube config in service accounts associated with heapster's namesapce. (default: true)
  • kubeletPort - kubelet port to use (default: 10255)
  • kubeletHttps - whether to use https to connect to kubelets (default: false)
  • apiVersion - API version to use to talk to Kubernetes. Defaults to the version in kubeConfig.
  • insecure - whether to trust kubernetes certificates (default: false)
  • auth - client auth file to use. Set auth if the service accounts are not usable.
  • useServiceAccount - whether to use the service account token if one is mounted at/var/run/secrets/kubernetes.io/serviceaccount/token (default: false)

注意:--add-host主要是因为Heapster 会根据hostname去查询node的IP,参考:

https://github.com/GoogleCloud ... 62998

Heapster 运行后,可以在influxdb查询到数据,说明监控数据已经上报:


本文作者:吴龙辉

来源:51CTO

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
29 4
|
10天前
|
Kubernetes 负载均衡 Cloud Native
探索云原生技术:Kubernetes的魔法
【9月更文挑战第24天】 在数字化浪潮中,云原生技术如同现代航海的罗盘,指引着企业航向灵活、高效的未来。本文将深入剖析云原生世界的璀璨明星——Kubernetes,揭秘其如何在容器化的基础上,实现复杂应用的自动化部署、扩展和管理。从概念到实践,我们将一同领略Kubernetes如何简化运维、提高资源利用率,并推动微服务架构的发展。通过实际的代码示例,我们将手把手教你如何在云上构建和运行第一个Kubernetes集群,让理论与实践相结合,开启云原生之旅。
|
17天前
|
Kubernetes 负载均衡 监控
深入云原生技术:Kubernetes集群部署与管理
【9月更文挑战第17天】在数字化转型的浪潮中,云原生技术以其灵活性和可扩展性成为企业新宠。本文将引导读者探索云原生的核心组件——Kubernetes,通过实际案例分析其部署与管理流程,旨在帮助技术从业者和企业决策者理解如何利用Kubernetes提升应用的可用性和性能。从基础概念到操作实践,我们将一同见证云原生技术的变革力量。
|
1月前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
7天前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
21 0
|
16天前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
15 0
|
1月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
66 0
|
2月前
|
Kubernetes Cloud Native 开发者
探索云原生技术:从Docker到Kubernetes的旅程
【8月更文挑战第31天】云原生技术正在改变软件开发、部署和运维的方式。本文将带你了解云原生的核心概念,并通过实际代码示例,展示如何使用Docker容器化应用,并进一步通过Kubernetes进行集群管理。我们将一起构建一个简单的微服务架构,体验云原生带来的高效与便捷。
|
2月前
|
运维 Kubernetes 监控
自动化运维:使用Python脚本实现系统监控云原生技术实践:Kubernetes在现代应用部署中的角色
【8月更文挑战第31天】在现代IT运维管理中,自动化已成为提高效率和准确性的关键。本文将通过一个Python脚本示例,展示如何实现对服务器的自动监控,包括CPU使用率、内存占用以及磁盘空间的实时监测。这不仅帮助运维人员快速定位问题,也减轻了日常监控工作的负担。文章以通俗易懂的语言,逐步引导读者理解并实践自动化监控的设置过程。 【8月更文挑战第31天】本文旨在探索云原生技术的核心—Kubernetes,如何革新现代应用的开发与部署。通过浅显易懂的语言和实例,我们将一窥Kubernetes的强大功能及其对DevOps文化的影响。你将学会如何利用Kubernetes进行容器编排,以及它如何帮助你的
|
2月前
|
Kubernetes Cloud Native 应用服务中间件
云原生技术入门与实践:Kubernetes的简易部署
【8月更文挑战第31天】云原生技术已成为现代软件部署的黄金标准,而Kubernetes作为其核心组件之一,在容器编排领域独领风骚。本文将引导您通过简单的步骤,快速部署一个Kubernetes集群,并运行一个简单的应用,让您轻松迈入云原生的世界。
下一篇
无影云桌面