容器元数据如何改变您的观点

今天的来宾帖子由Sysdig市场营销副总裁ApurvaDavé带给您,他将讨论如何使用Kubernetes元数据和Sysdig来了解Kubernetes集群中发生的事情。 

当然,元数据是个花哨的词。实际上,它的意思是“描述其他数据的数据”。尽管该定义并不是全部有用,但事实证明元数据本身在容器环境中特别有用。当您拥有任何复杂的系统时,元数据的可用性可帮助您对来自该系统的各种数据进行分类和处理,从而使您可以轻松地解决问题的核心。

在Kubernetes环境中,元数据可能是组织和了解跨许多服务,机器,可用性区域或(将来)多个云协调容器的方式的关键工具。该元数据也可以在Kubernetes系统顶部运行的其他服务中使用,并可以帮助您管理应用程序。

我们将在下面查看一些示例,但首先...

Kubernetes元数据快速入门  Kubernetes元数据以以下形式丰富 标签注解。标签旨在标识您的基础结构的元数据,而注释旨在标识非基础结构。对于这两者,它们都是通用的key:value对,如下所示:

"labels": {
  "key1" : "value1",
  "key2" : "value2"
}

标签并非唯一。您可以期望环境中的任何数量的对象都带有相同的标签,并且可以期望一个对象可以具有许多标签。

您可能会使用哪些标签示例?这里仅仅是少数。警告:一旦开始,您可能会发现多种使用此功能的方法!

  • 环境:开发,生产,测试,UAT 
  • 客户:客户A,客户B,客户C 
  • 层:前端,后端 
  • 应用:缓存,Web,数据库,身份验证 

除了您可能定义的自定义标签外,Kubernetes还会通过有用的元数据自动将标签应用于系统。默认标签提供有关整个Kubernetes层次结构的关键标识信息:Pod,服务,复制控制器和命名空间。

发挥元数据的作用 

在Kubernetes上花了一些时间后,您会发现标签具有一个特别强大的应用程序,这使得它们必不可少:

Kubernetes标签使您可以轻松地在主机和容器的“物理”视图与应用程序和微服务的“逻辑”视图之间切换。 

像Kubernetes这样的平台的核心旨在协调底层物理资源的最佳使用。这是一种非常有效地消耗私有或公共云资源的强大方法,有时您需要可视化这些物理资源。但是,实际上,大多数时候您最关心服务的性能。

但是在Kubernetes的世界中,实现高利用率意味着服务的容器可能会散布到各处!那么,您如何实际衡量服务的性能呢?这就是元数据的来源。借助Kubernetes元数据,无论底层容器实际位于何处,您都可以对服务的性能有深入的了解。

给我画一张画 

让我们看一个简单的示例,以使其更加具体:监视您的应用程序。让我们来研究一个在GKE上运行的小型3节点部署。为了可视化环境,我们将使用Sysdig Cloud。以下是节点列表-请注意,每个主机名前都带有“ gke”。我们看到一些基本的性能细节,例如CPU,内存和网络。

这些主机中的每一个主机上都运行着许多容器。深入研究主机,我们看到与每个主机关联的容器:

只需在单个主机上扫描此容器列表,我就看不出有多少组织来承担这些对象的责任。例如,这些容器中的一些运行Kubernetes服务(例如kube-ui),我们假定其他容器与应用程序的运行有关(例如javaapp.x)。

现在,让我们使用Kubernetes提供的一些元数据来获取以应用程序为中心的系统视图。首先,按照以下顺序创建基于标签的组件层次:

Kubernetes namespace -> replication controller -> pod -> container

这将根据以上标签在相应级别聚合容器。在下面的应用程序用户界面中,此聚合和层次结构显示在有关主机数据上方的灰色“分组”栏中。如您所见,我们有一个“产品”名称空间,其下方是一组服务(复制控制器)。然后,这些复制控制器中的每一个都可以包含多个容器,这些容器依次由容器组成。

除了通过标签组织容器之外,该视图还汇总了相关容器之间的度量,从而提供了名称空间或复制控制器性能的单一视图。

换句话说,有了基于元数据的聚合视图,您现在可以从监视和故障排除服务入手,并仅在需要时钻取主机和容器。 

让我们在这种环境下做更多的事情-让我们使用元数据创建服务的直观表示及其通信拓扑。在这里,您可以看到我们按服务组织的容器,还有一个类似于地图的视图,向您显示这些服务之间的关系。

框代表服务是容器的集合(每个框右上角的数字告诉您有多少个容器),线条代表服务之间的通信及其延迟。

这种视图为这些应用程序组件如何协同工作提供了另一种逻辑而非物理视图。从这里我可以了解服务性能,关系和基础资源消耗(在此示例中为CPU)。

元数据:喜欢它,使用它 

这是对元数据的快速浏览,但是我希望它能激发您花一些时间来考虑与您自己的系统的相关性以及如何利用它。在这里,我们构建了一个非常简单的示例(应用程序和服务),但可以想象在您的应用程序,环境,软件组件和云提供商之间收集元数据。在Kubernetes有效地调度资源使用情况的同时,您可以快速有效地评估此基础架构任何部分的性能差异。

立即开始使用元数据来可视化这些资源,在后续文章中,我们将讨论基于元数据的自适应警报的功能。

-ApurvaDavé是Kubernetes的壁橱狂热者,热爱数据,是的,也是Sysdig的行销副总裁。