kubernetes资源监控(kubernetes部署),本文通过数据整理汇集了kubernetes资源监控(kubernetes部署)相关信息,下面一起看看。

Kubernetes是一个开源的容器编排框架,它为我们提供了一个简单的部署、扩展和监控方法。本文将讨论Kubernetes的内置监控功能,如Kubernetes dashboard、cAdvisor等。为了更好地理解,还提供了一个演示。

佐助

Kubernetes是一个开源的容器编排框架,它为我们提供了一个简单的部署、扩展和监控方法。在本文中,我们将讨论Kubernetes的内置监控功能。为了让读者更好地理解,本文包含了一些演示。

Kubernetes建筑概述

在基础设施级别,Kubernetes集群是一组物理机或虚拟机,每个执行特定的功能。扮演主要角色的物理机或虚拟机负责整个操作,并协调在所有节点上运行的容器管理。

主组件管理pod的生命周期:

Apiserver:为所有其他主组件公开API的主组件。

调度程序:负责根据pod规范中的信息决定pod应该在哪个节点上运行。

控制器-管理器:负责节点管理(检测节点故障)、pod复制和端点创建。

Etcd:用于存储所有内部集群数据的键/值存储。

组件是由Kubernetes中的master管理的工作机。每个节点都包含运行pod所需的必要组件:

Kubelet:处理主节点和其上运行的节点之间的所有通信。它与容器运行时协作,负责部署和监控容器。

Kube-proxy:负责维护节点的网络规则,并处理pod、节点与外部的通信。

容器运行时:在节点上运行容器。

从逻辑的角度来看,Kubernetes部署由在集群中扮演各自角色的各种组件组成:

Pod:Pod内部的基本部署单元:Kubernetes。pod由一个或多个共享网络名称空间和IP地址的容器组成。

服务:充当负载平衡器。它们在池(一组pod)之前提供IP地址,还提供策略来控制对IP地址的访问。

ReplicaSet:受部署控制,负责保证部署所需的所有pod正常运行。

名称空间:为不同类型的资源(如pod或服务)定义逻辑隔离。

元数据:根据容器的部署特征标记容器。

监控Kubernetes

如果我们想预测问题并发现开发或部署中的潜在瓶颈,监控应用程序是必不可少的。

为了帮助监控集群和组成部署的许多活动组件,Kubernetes提供了一些内置的监控功能:

Kubernetes仪表板:提供集群上运行的资源的概述。它还提供了一种非常基本的方式来部署这些资源并与之交互。

C: cAdvisor:一个用于监控资源使用和分析容器性能的开源代理。

活性和就绪探测:主动监控容器的健康状况。

水平Pod自动缩放:基于通过分析不同指标收集的信息,根据需要增加Pod的数量。

在本文中,我们将关注前两个内置工具。在本系列的下一篇文章中,我们将介绍其他监控工具。

Kubernetes有很多指标需要监控。正如我们将以两种不同的方式(基础设施和逻辑)描述架构一样,我们也可以将监控分为两个主要组件:监控集群本身和监控集群上运行的工作负载。

集群监控

所有集群都应该监控底层服务器组件,因为服务器层的问题经常出现在工作负载中。监控节点资源时需要注意的一些指标包括CPU、磁盘和网络带宽。了解这些指标可以让我们知道我们是否需要扩展或收缩集群(如果企业使用云提供商并重视运行成本,这一点尤为重要)。

工作量监控

我们还需要考虑与部署及其pod相关的指标。重要的一点是将部署中当前运行的pod数量与预期数量进行比较。此外,还要注意健康检查、容器索引和最终应用索引。

早期准备

在接下来的章节中,我们将以演示的形式逐一介绍列出的内置监控功能。为此,我们需要做好以下准备:

谷歌云平台账号:用免费试用版就好。如果是使用其他主流云平台,操作方法也差不多。

用于运行Rancher的主机:可以是个人PC/Mac,也可以是公共云中的虚拟机。

Google SDK for Cloud:应该在运行Rancher的主机上安装kubectl。使用您的身份验证凭据(gcloud init和gcloud auth login)来确保gcloud可以访问您的Google Cloud帐户。

启动Rancher实例

第一步是启动Rancher实例。Rancher有一个非常直观的介绍性指南供参考:0 . http://rancher . 20001 . 366666666666

使用牧场主部署GKE集群

根据操作指南,使用Rancher设置和配置Kubernetes集群:

0.6604932409350721

注意:请确保Kubernetes仪表板已启用。我们这里使用的Kubernetes版本是v.1.10

图1用Rancher创建Kubernetes集群

Kubernetes仪表板

Kubernetes dashboard是一个基于web的Kubernetes用户界面,我们可以使用它来排除应用程序故障和管理集群资源。

Rancher可以帮助用户一键安装dashboard。仪表板的主要用途包括:

集群资源概述(包括整体情况和每个节点的情况),显示所有命名空间,列出所有定义的存储类。

显示群集上运行的所有应用程序。

提供有关群集中Kubernetes资源的状态以及可能发生的任何错误的信息。

为了访问dashboard,我们需要在我们的计算机和Kubernetes API服务器之间代理请求。输入以下代码,用kubectl启动代理服务器:

服务器将在后台启动,并输出类似以下内容的内容:

现在,要查看dashboard,请通过浏览器访问以下地址:

0.6604932409350721 http 0.4754055756067 7390.666049 32409 3557 56067 739 localhost:8001/API/v1/namespaces/kube-system/services/0.666676 . 4654935

然后,我们需要在登录页面上输入相应的凭据:

图2仪表板登录

在未来,我们将学习如何使用服务帐户机制来创建具有管理员权限的用户。我们将使用两个YAML文件。

YAML文件用于创建服务帐户:

另一个YAML文件将为我们的用户创建ClusterRoleBinding:

应用两个YAML文件来创建定义的对象:

创建用户并设置正确的权限后,我们需要找到登录令牌:

kube CTL-n kube-system describe secret $(kube CTL-n kube-system get secret | grep admin-user | awk ' { print $ 1 } ')

在Kubernetes dashboard凭据提示中选择“Token ”,然后在上面的认证字段中输入您检索到的值。

Kubernetes Dashboard包含几个主要视图:

管理视图:列出节点、名称空间、持久卷和其他详细信息。我们可以获得节点的集成页面(CPU和内存使用情况)和每个节点的单独详细页面,显示其指示器、规格、状态、分配的资源和pod。

工作负荷视图:显示在所选名称空间中运行的所有应用程序。汇总有关工作负荷的重要信息,例如在StatefulSet或deployment中准备的单元数量,或者单元的当前内存使用情况。

服务发现和负载平衡视图:显示向外部公开服务的Kubernetes资源,并支持集群内的服务发现。

配置和存储视图:显示应用程序使用的永久卷声明资源。配置视图显示了用于实时配置集群中运行的应用程序的所有Kubernetes资源。

如果没有任何工作负载运行,仪表板页面将是空的,因为此时Kubernetes上不会部署任何东西。如果您想浏览dashboard提供的所有视图,最好的选择是部署使用不同工作负载类型(StatefulSet、deployment、replica set等)的应用程序。).这篇关于如何在Kubernetes上部署Redis的文章就是一个很好的例子。它展示了在部署Redis集群(带有卷声明和配置映射的有状态集)和测试应用程序(Kubernetes部署)时,dashboard将如何显示相关信息。

配置工作负载后,我们可以关闭一个节点,然后检查不同的选项卡以查看一些更新:

图3有状态集的仪表板页面

图4 pod的仪表板页面

管理员

CAdvisor是一个开源代理,集成在kubelet二进制文件中,主要用于监控资源使用情况和分析容器的性能。CAdvisor收集在给定节点上运行的所有容器的CPU、内存、文件和网络使用情况的统计数据(cAdvisor不在pod层运行)。除了核心指示器之外,cAdvisor还监视事件。用户可以通过使用kubectl top之类的命令直接访问指示器,也可以使用调度器在调度级别执行指示器(例如,使用自动缩放)。

需要注意的是,cAdvisor不会长时间存储一些指标,所以如果需要使用该功能,要找专门的监控工具。

从Kubernetes版本开始,cAdvisor的UI几乎被抛弃。Kubernetes版之后,cAdvisor的UI将被彻底删除。Rancher允许您为集群选择Kubernetes的版本。在为这个演示设置基础设施时,我们将集群配置为使用版本1.10,因此我们仍然可以访问cAdvisor UI。

要访问cAdvisor UI,我们需要在我们的计算机和Kubernetes API服务器之间进行代理。输入以下命令启动代理服务器的本地实例:

接下来,找到节点的名称:

您可以在浏览器中的以下地址查看UI,并用在命令行中找到的标识符替换节点名:

0.6604932409350721 http 0.47540557560677390.6604932409350721://0.4754055756067739 localhost:8001/API/v1/nodes/gke-c-plnf 4-default-pool-5eb 56043-23p 5:4194/proxy/containers/

图5初始cAdvisor用户界面

图6 cAdvisor UI概述和流程

要确认kubelet正在侦听端口4194,您可以登录到node来查看更多信息:

我们可以确认,在我们的Kubernetes版本中,kubelet process通过这个端口提供cAdvisor Web UI:

如果你运行的是Kubernetes版本1.12或更高,kubelet将不再监听端口4194,因为cAdvisorUI已经被移除。您可以使用上面的命令来确认。但是由于cAdvisor是kubelet二进制文件的一部分,所以相关的指标还是存在的。

Kubelet二进制文件使用Prometheus显示格式来显示所有运行时和cAdvisor指示器:

0.6604932409350721 http 0.47540557560677390.6604932409350721://0.4754055756067739 localhost:8001/API/v1/nodes/gke-c-plnf 4-default-pool-5eb 56043-23p 5/proxy/metrics/CAD visor

图7 cAdvisor指示器端点

在许多输出中,您可以关注以下指标:

CPU:

ocontainer _ CPU _ User _ Seconds _ Total:“用户”的累计CPU消耗时间以秒为单位。

ocontainer _ CPU _ system _ seconds _ total:以秒为单位,“系统”的累计CPU消耗时间

ocontainer _ CPU _ Usage _ Seconds _ Total:累计的CPU消耗时间(以上之和),以秒为单位。

内存:

Ocontainer_memory_cache:页面缓存内存的字节数

Ocontainer_memory_swap:容器交换使用情况,以字节为单位

Ocontainer_memory_usage_bytes:当前内存使用情况,以字节为单位,包括所有内存。

ocontainer _ memory _ max _ usage _ bytes:以字节为单位的最大内存使用量。

磁盘:

O container _ FS _ IO _ Time _ Seconds _ Total:执行I/O所用的时间,以秒为单位。

ocontainer _ fs _ io _ time _ weighted _ seconds _ total:累计加权I/O时间(秒)。

ocontainer _ fs _ writes _ bytes _ total:累计写入的字节数。

ocontainer _ fs _ reads _ bytes _ total:读取的累积字节数。

网络:

ocontainer _ network _ receive _ bytes _ total:累计接收的字节数

ocontainer _ network _ receive _ errors _ total:接收过程中遇到的累计错误数。

ocontainer _ network _ transmit _ bytes _ total:累计传输的字节数。

ocontainer _ network _ transmit _ errors _ total:传输过程中遇到的累计错误数。

其他一些有用的指标:

/healthz:用于确定cAdvisor是否健康的终结点。

/healthz/ping:使用etcd检查连接状态。

/spec:返回cAdvisor MachineInfo()的端点

例如,要查看cAdvisor MachineInfo(),我们可以访问:

0.6604932409350721 http 0.47540557560677390.6604932409350721://0.4754055756067739 localhost:8001/API/v1/nodes/gke-c-plnf 4-default-pool-5eb 56043-23p 5:10255/proxy/spec/

图8 cAdvisor规范端点

端点为节点上运行的pod提供与kubectl get pods -o json相同的输出:

0.6604932409350721 http 0.47540557560677390.6604932409350721://0.4754055756067739 localhost:8001/API/v1/nodes/gke-c-plnf 4-default-pool-5eb 56043-23p 5:10255/proxy/pods/

图9 cAdvisor pod端点

同样,您也可以通过访问以下链接来访问日志:

0.6604932409350721 http 0.47540557560677390.6604932409350721://0.4754055756067739 localhost:8001/logs/kube-API server . log

洁玉

监控的重要性不言而喻,它可以让我们充分了解应用程序的状态。Kubernetes有许多内置的工具供用户选择,以便他们更好地理解基础设施层(节点)和逻辑层(pod)。

在本文中,我们主要关注为用户提供监控和指示器的工具。在本系列的下一篇文章中,我们将继续分享关注工作负载扩展和生命周期管理的监控工具,敬请关注。

更多kubernetes资源监控(kubernetes部署)相关信息请关注本站,本文仅仅做为展示!