Kubernetes监控实践

  

一、Kubernetes介绍

  

Kubernetes(美丽)是一个开源平台,能够有效简化应用管理,应用部署和应用扩展环节的手动操作流程,让用户更加灵活地部署管理云端应用。

  

作为可扩展的容错平台,k8几乎能够部署在所有基础设施中,与谷歌云,Azure女士及AWS等公有云,私有云,混合云,服务器集群,数据中心等完美兼容.Kubernetes最大的亮点在于支持容器自动部署和自动复制。这也是大量云端微服务基础设施部署在美丽上的原因。

  

二,美丽由来

  

k8最初是由谷歌工程师设计开发的,于2014年上线并开源,目前由来自微软,红帽、IBM及码头工人等软件巨头的社区贡献者维护升级。

  

谷歌不仅开源了公司整个基础设施在容器中的运行方式,还积极开发Linux容器技术,支撑谷歌所有云服务.K8s是基于云平台15年的生产工作负载运行经验设计出来的,用于处理成千上万个容器.Google每周部署20多亿个容器。在美丽上线前,谷歌主要通过内部开发平台Borg进行容器部署.Borg是大型内部集群管理系统,运行了无数应用和集群任务,多年的开发经验奠定了k8技术的基础。

  

三,k8工作原理

  

k8本质上是分部在不同机器上的容器化应用的协调系统,目的是帮助开发人员通过美丽的可预测性,可扩展性和高可用性管理容器化应用和服务的整个生命周期,通过更高水平的抽象,将多个机器统一成一个机器。这对于大型环境的运行来说至关重要。

  

k8不仅能够优化码头工人的镜像运行能力和容器管理能力,还能兼容rkt和CoreOS等容器引擎。

  

   Kubernetes监控实践“> </p>
  <p>上方架构图展示了k8工作原理。图中包含一组主组件,其中包括很多pod.Pod针对特定应用的“逻辑主机”进行建模。每个舱均包含一个或多个应用容器,存储资源,唯一的网络IP及容器运行细节.Pod是容器的最小原子单元。理论上,豆荚中包含一个或多个高度耦合的应用。理想情况下,每个豆荚中包含一个容器。</p>
  <p>每个进程包含一个API服务器,一个调度器和多个控制器。</p>
  <p> API服务器负责暴露k8 API,处理其他操作及后续更新.Scheduler负责将未部署的豆荚匹配到合适虚拟机或物理机上。如果没有合适的机器,则吊舱将处于未分配状态,直至出现合适的节点部分运行集群级别的其他功能,通过嵌入式控制器完成创建端点,发现节点,复制控制等操作。由于控制器设计灵活且可扩展,Kube管理员可自行创建controller.Kube通过API服务器监控k8集群的共享状态,并对集群状态进行调整,确保当前状态与理想状态一致。</p>
  <p> k8提供支持容器化应用统一自动化,控制和升级的各项功能,包括企业级容器部署,内置服务发现,自动扩展,持久化存储,高可用,集群互通和资源装箱等。</p>
  <p>依赖这些功能,k8实现了对单体应用,批处理应用及高度分布式微服务应用等不同应用架构的支持。</p>
  <h3>四,k8监控实践中的挑战</h3>
  <p> 2014年上线以来,美丽一直在变革容器技术,已经成为快速批量启动应用的关键工具。与此同时,挑战也随之而来,容器编排极其复杂。</p>
  <p> k8虽然已经极大地简化了容器实现和管理过程中从调度,配置到状态自动维护等一系列任务的操作难度,但监控方面依然存在挑战:</p>
  <ul>
  <李>相互通信的应用分布在不同的云服务平台上.K8s本质上是一个通用平台,用户可在平台上自由部署应用。企业一般会采用多云端解决方案,不仅能够减少对单一云服务平台的依赖,还能缩短故障停机时间,避免数据丢失。但这种部署方式也给实时数据抓取和应用状态监控带来了挑战。</李>
  <李>在动态基础设施上不断迁移应用。由于应用处于频繁迁移状态,因此很难做到所有平台和协议之间的完全可见,这就会隐藏系统的瓶颈问题。很多公司的基础设施上都运行着多个应用,因此这种问题是不可避免的。如果没有稳健的监控系统,用户便无法发现应用的潜在问题。</李>
  <李>
  <p>监控对象数量繁多且极为复杂:k8由很多组件构成,非常复杂,因此要监控k8、就必须监控下列所有对象:</p>
  <ul>
  <李>集群容量和资源利用情况:(一)节点:确保k8所有节点的状态,监控CPU、内存和硬盘的使用情况;(b)舱:确保所有已实现豆荚状态正常;(c)容器:根据配置的消耗上限监控CPU和内存的消耗情况。应用:根据请求率,吞吐量,错误率监控集群中应用的性能和可用性。<h2 class=Kubernetes监控实践