10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

“Satellite”:在生产过程中监控 Kubernetes

  • 2020-03-12
  • 本文字数:2165 字

    阅读完需:约 7 分钟

“Satellite”:在生产过程中监控Kubernetes

Satellite 是硅谷初创公司 Gravitational 公司旗下一个用 Go 写的开源项目,可用来收集 Kubernetes 集群的健康信息,它既是一个 library,也是一个应用。作为 library,可以用做监控方案。在这篇文章里,Satellite 项目成员为我们分享了在一些场景下在底层(包括 AWS 和裸机上)部署 Kubernetes 集群时遇到的问题和他们在开发过程中用来解决其中一些问题的解决方案。

监测 Kubernetes 组件

监测 Kubernetes 集群不是一个简单的事情。为了阐述可能会发生的错误的类型,这里是我们在 AWS 配置上的一个例子。


我们集群中的一个例子完美展示了用 SkyDNS 运行以及所有 pods 启动的健康状态,然而,在几分钟之后,SkyDNS 就进入“CrashLoopBackoff”状态了。应用程序容器已经是启动的,但是还在功能失调阶段,因为他们在第一次重新启动的时候无法到达数据库。


结果原来是集群宕机,但是我们只能盯着事件和 pods 状态,对于发生了什么无法得到一个清晰的理解。



在联系到主节点,看了 SkyDNS pod 的日志之后,他们用 etcd 揭露一个问题。SkyDNS 无法连接,或者连接在它建立之后立刻变得不稳定了。etcd 它本身就是在运行的,那么问题是出在哪里呢?


在做了相当一部分的调查之后,我们找到了答案。高延迟网络连接磁盘导致读写错误,这就导致了 etcd 无法写到文件系统。虽然它是正确配置而且也在运行工作,但是它并不是一直可为 Kubernetes 服务所用。


吸取教训——即使你已经成功地建立起集群,但也不能保证它就可以像预期的那样继续工作。


那么在配置期间哪些问题比较容易出错呢?问题主要有以下这些:


  • 主机之间没有联系

  • etcd 宕机或者不稳定/错误配置导致滞后

  • 主机间的覆盖网络层损坏

  • 单个节点中的任意一个都会宕机

  • Kubernetes API 服务器或者控制器管理者宕机

  • Docker 无法启动容器

  • 网络分割会影响节点子集


我们在跟第一届 KubeCon 的参加者交流了一些意见,头脑风暴出以下可能的解决办法:


“你怎样评估 Kubernetes 集群的健康?@klizhenas 建议创建一个能够给 pods 进行调度以及取消调度的 app;有没有人创建一下这个?


——Brandon Philips(@Brandon Philips)2015 年 11 月 11 日


我们评估一下来监控 Kubernetes 的方法:


  • 典型监测

  • 面向应用的冒烟测试

典型监测解决办法

传统的监控监测方法还没有出现短缺。这个种类之中最好的选择之一就是 monit。


这是一个极其轻便精简(单个执行文件),而且久经战场的后台程序运行在成千上万台机器上面——为小的起步但是是限制到监测单个系统。这是它最大的缺点。


使用 monit 过程中发现的问题之一就是一组测试执行有限和拓展性的缺乏。虽然可配置,但是我们还是不得不通过写脚本来拓展它的功能,或者通过微弱的界面来使特殊目的程序得到控制。


更加重要的是,我们发现,连接几个 monit 实例到一个高可用系统和弹性网络是非常难的,而且系统和网络还要代理收集自己分享的信息,然后协同工作来另这些信息保持更新。

冒烟类型测试

“冒烟测试”这个术语的定义:


“一系列初步的测试来揭示一些简单的故障的严重性,以此来拒绝预期中软件的发布。它通常包含一个子集的测试,测试覆盖了大多数重要的作用来确定重要作用在按照预期运行。冒烟测试最频繁的特点就是它运行的很快,通常是秒级的。”


以我们已有的 Kubernetes 知识,我们坚信我们可以使用冒烟测试用以下特点来创建一个监视系统:


  • 轻量级定期测试

  • 高可用性和弹性网络分区

  • 零故障操作环境

  • 时间序列作为健康数据的历史


不管故障容易发生的抽象层次,就算是应用程序故障,或者是低层次网络错误,这个系统都能够追踪他们以查到实际的原因。


  • Serf 启动的监测 Agents


我们的高层次解决方案是一系列程序 Agent,一个集群中的一个节点驻留在另一个节点上。他们互相之间通过一个 Serf 提供的 gossip 协议来交流:



Kubernetes 关键组件的 Agents 监控状态——etcd,scheduler,API 服务器和另外一些东西,还有一些执行冒烟程序——创建可以互相交流的轻量级容器。



Agent 定期同步数据,这样每个节点都是随时更新关于集群作为一个整体的信息。由于 Serf 提供的一致性保证比较弱,导致更新信息也不是很严格。定期测试结果保存到后端——这可以很简单,就如同一个 SQLite 数据库或者 InfluxDB 等一系列实时数据库。


拥有一个对等系统对侦测故障和监测信息十分有帮助,即使系统中的关键部分部分宕机也没有关系。在下面的例子中,主要节点以及大部分的节点都已经宕机,这就导致 etcd 也出了故障。然而,我们仍然可以得到关于集群连接到以下任意一个节点的诊断信息:



这里是在部分损坏的系统截图:


限制

由于它的简易,目前的模型就有了一定的限制。如果是为更小一些的集群(比如 8 个节点)就可以运行,然而,在一个再大一点的集群,你就不想每个节点都可以互相交流了。这个解决方式就是我们计划采取的方案是创建一个特殊的聚合器,从 Skype 的超级节点那里或者是从 Consul 的“anti-entropy catelogs 上面借鉴一些想法。

结语

监测 Kubernetes 集群的状态不是直接使用传统监测工具就可以了的。手动故障排除有一定的复杂性,在集群里有一个自动反馈循环的话,就可以消除很大部分的复杂性。Satellite 项目已经证明当操作集群的时候对我们是有用的,所以我们决定对它进行开源,希望它可以成为一个帮助提升 kubernetes 发现错误系统。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/bVU10b0yStvVLQYxAW1zQA


2020-03-12 22:52779

评论

发布
暂无评论
发现更多内容

精准测试之覆盖

京东科技开发者

数据库 测试 代码 覆盖 企业号 1 月 PK 榜

葡萄城邀您参与「表格技术开发者新年分享会」,共话表格技术新未来!

葡萄城技术团队

Camtasia Studio2023免费版本电脑屏幕录制软件

茶色酒

Camtasia Studio2022 Camtasia Studio2023

安信证券资管清算重要业务在原生分布式数据库的创新实践

OceanBase 数据库

数据库 oceanbase

TDengine 签约航天五院,助力航天事业信息化

TDengine

数据库 tdengine 时序数据库

USB端口的ESD防护电路设计

元器件秋姐

经验分享 usb 电路设计 电源电路 ESD防护

每个Java程序员都必须知道的四种负载均衡算法

JAVA旭阳

Java 架构 后端

为什么开发者这么看重SQL?看完这些应用场景你就明白了

雨果

sql 数据库管理工具 SQL开发工具

时序数据库 TDengine 签约中冶京诚,助力钢铁工业智能化

TDengine

数据库 tdengine 时序数据库

Apache APISIX Ingress 1.6 正式发布!

API7.ai 技术团队

APISIX Serverless Kubernetes Ingress Controller

移动跨端框架最全盘点,16款总有一款适合你

Onegun

flutter 移动开发 跨端框架

尚硅谷Airflow视频教程发布

小谷哥

大数据就业培训班哪家好?

小谷哥

PHP 中命令行调用 escapeshellarg 函数中文问题

ModStart

培训班有哪些学习前端开发的方法

小谷哥

Java培训机构哪家比较不错

小谷哥

阿里云连续3年跻身Gartner全球云数据库管理系统领导者象限

云布道师

阿里云

RISC-V SIG 新进展:Chromium 等多个桌面软件登录欧拉开源操作系统

openEuler

firefox Linux 操作系统 openEuler risc-v

2023年汽车行业向好发展,火山引擎VeDI助力车企数智转型

字节跳动数据平台

数据库 大数据 数据处理

POI 中 getPhysicalNumberOfCells 与 getLastCellNum 有什么区别

ModStart

小程序编译原理解析

Onegun

微信小程序 前端

培训机构与自学的优缺点有哪些

小谷哥

「极狐GitLab 内容共创计划」强势来袭,丰厚权益等你赢取!

极狐GitLab

DevOps 云原生 写作 #运维 #DevOps

从实战出发,聊聊缓存数据库一致性

C++后台开发

MySQL 数据库 缓存 中间件 后端开发

podman如何开启sock使用docker客户端进行管理

ModStart

NFTScan:优质 NFT 应具备什么?

NFT Research

区块链 NFT

盘点微服务架构下的诸多身份验证方式

API7.ai 技术团队

微服务 身份认证 APISIX

先行“蜀道”, 四川农信核心系统分布式转型

OceanBase 数据库

数据可视化图表系列解析——南丁格尔玫瑰图

Data 探险实验室

数据分析 可视化 数据可视化 图表 可视化数据

数据治理:数据质量管理策略!

用友BIP

2022 OceanBase 年度报告|用技术让海量数据的管理和使用更简单!

OceanBase 数据库

数据库 oceanbase

“Satellite”:在生产过程中监控Kubernetes_行业深度_才云科技_InfoQ精选文章