Kubernetes 稳定性保障手册:洞察+预案

“source”: “eip-xxx”, “target”: “ngw-xxx”,

“description”: “”

}

]

}

4. 资源运行图


资源使用过程中,也可以对资源及资源间的关系通过外部观测数据推测内部状态,如 log/metrics/event。与资源构成图结合,可以在静态资源的基础上叠加动态的洞察数据,直观把握集群资源的使用状态。

可通过形如下的数据结构描述:

{

“nodes”: [

{

“_id”: “35103ac62d4ef0a314e2a5128f44c684205bea2f”,

“id”: “vpc”,

“insight”: [

{

“source”: {

“vendor”: “cloud:aliyun:vpc”,

“type”: “OpenAPI”

},

“signal”: {

“vpc/exist”: “DescribeVpcs”,

“vswitch/count”: “DescribeVSwitches”

}

},

{

“source”: {

“vendor”: “cloud:aliyun:ecs”,

“type”: “OpenAPI”

},

“signal”: {

“ecs/count”: “DescribeInstances”,

“securitygroup/count”: “DescribeSecurityGroups”

}

}

]

},

{

“_id”: “6450e07dc67027f76f29fbfcb841e57200855196”,

“id”: “ecs”,

“insight”: [

{

“source”: {

“vendor”: “cloud:aliyun:ecs”,

“type”: “OpenAPI”

},

“signal”: {

“ecs/exist”: “DescribeInstances”,

“ecs/count”: “DescribeInstances”,

“ecs/usage”: “DescribeInstanceMonitorData”

}

},

{

“source”: {

“vendor”: “cloud:aliyun:ecs”,

“type”: “auto”

},

“signal”: {

“ecs/state_change”: “”

}

}

]

}

],

“edges”: [

{

“_id”: "caa1e395c713f47766ca7bc 需要zi料+ 绿色徽【vip1024b】

fc20419c0be0f0803",

“source”: “i-xxx”, “target”: “sg-xxx”,

“insight”: [

{

“source”: {

“vendor”: “cloud:aliyun:ecs”,

“type”: “OpenAPI”

},

“signal”: {

“exist”: “DescribeInstances”

}

}

]

},

{

“_id”: “537dc478d95714792b3694674d6164f72b361bb0”,

“source”: “eip-xxx”, “target”: “ngw-xxx”,

“insight”: [

{

“source”: {

“vendor”: “cloud:aliyun:vpc”,

“type”: “OpenAPI”

},

“signal”: {

“exist”: “DescribeEipAddresses”

}

}

]

}

]

}

预案

=======================================================================

集群出现异常是不可避免的,需要在出现异常时安全、有效处理。

异常可以通过事件来表征,安全、有效的操作是经过评审、演练过的操作,将异常与操作结合,由异常触发操作,形成经过评审、演练的预案,可以安全有效处理集群异常。

1. 事件列表


集群运行过程中会产生需要关注的事件,事件自身的格式可基于社区 CloudEvents标准来使用:https://github.com/cloudevents/spec/blob/v1.0.1/spec.md

可通过形如下的数据结构描述:

{

“events”: [

{

“_id”: “a1ab5b61857be35a5c5b203dd84b49248161c823”,

“description”: “restart workload manually”,

“event”: {

“id”: “restart-workload”,

“source”: “xxx”,

“specversion”: “1.0”,

“type”: “com.aliyun.trigger.manual”,

“datacontenttype”: “application/json”,

“data”: “{“NAMESPACE”: “”, “NAME”: “”, “TYPE”: “”}”

}

}

]

}

2. 操作列表


为了降低误操作的可能性,同时避免异常发生时执行未经审核、验证的操作,需要定义集群中可以进行的操作列表。

可通过形如下的数据结构描述:

{

“actions”: [

{

“_id”: “47abc5cd9d64018ebf96dc5b2d6a4fbd35a3cb6d”,

“name”: “Action Restart Workload”,

“exec”: “restart-workload”,

“env”: [

“NAMESPACE”,

“NAME”,

“TYPE”

]

}

]

}

3. 预案列表


在事件列表和操作列表基础上,可以将事件和操作关联起来,以事件驱动的方式处理异常,即预案。

可通过形如下的数据结构描述:

{

“plans”: [

{

“_id”: “29a091c48d8992991ed69e8694b017a11abe3eec”,

“name”: “Plan Restart Workload”,

“description”: “重启 workload”,

“event”: “a1ab5b61857be35a5c5b203dd84b49248161c823”,

“actions”: [“47abc5cd9d64018ebf96dc5b2d6a4fbd35a3cb6d”]

}

]

}

全局可视化稳定性保障

===============================================================================

基于上述4 张图3 张表的数据模型,形成对集群稳定性保障的洞察+预案的内核,可以衍生出一种全局可视化的稳定性保障服务。

这样的服务具有如下关键点:

  • 全局视角

  • 数字化

  • 可视化

这种服务基于两种原理实现:

  • 人们对图像的处理效率远高于文字

  • 全局视角可以提供「端到端理解系统」「精准定位问题」「安全处理问题」的能力

以日常生活中的交通图为例:

4.png

通过交通图,可以快速了解到一个区域的道路分布和关键节点,约定俗成的红黄绿颜色可以直观表达道路的拥堵状况。在更丰富的交通图上,还会观察到诸如修路、封路等重要事件。

这样,基于可视化的方式,就可以迅速理解一个区域的交通和地理情况。

底层的数据模型是基础,应用可视化的手段,使得数据的价值更易被发挥。

一种实现


5.png

[](

)1)部署形态

  • Region 化部署

  • 面向 Region 内单集群或多集群提供服务

[](

)2)使用体感

根据稳定性保障的最佳实践,将稳定性保障分为如下几个栏目

  • 运行链路图:

  • 该栏目是日常稳定性保障高频使用的区域,通过可视化的能力,直观感知异常的发生、异常范围和影响程度、白屏化+可视化方式处理异常

  • 部署架构图

  • 该栏目用于理解集群的部署架构,感知和处理部署维度的问题

  • 容量管理 (包括节点管理、容量规划等) 在此栏目进行

  • 业务流程图

  • 该栏目沉淀业务的功能流程图,一方面协助业务控制功能复杂度,一方面协助业务理解业务功能现状,共同助力业务迭代

  • 业务相关的数据分析可放在该栏目

  • 数据分析:该栏目服务两方面的数据需求

  • 业务需求

  • 查看类:集群规模等 SLI 信息、集群稳定性等 SLO 信息

  • 查询类:根据特征查询统计信息 (如根据 label 查询资源申请等)

  • 稳定性保障需求

  • 查看类:集群水位等 SLI 信息,集群稳定性保障效果等 SLO 信息

  • 查询类:根据特征查询统计信息 (如根据 label 查询关联的所有资源信息、资源泄露信息等)

  • 可观测性管理

  • 该栏目用管理可观测性相关事宜,包括:

  • 观测数据生成

  • 观测数据采集

  • 观测数据处理

  • 观测数据消费

  • 可控性管理

  • 该栏目用于管理与控制相关的操作,包括:

  • 发布管理

  • 灾备管理

  • 预案管理

  • 资源管理

  • 混沌工程

  • 安全管理

  • 定期体检

系统正常运行期间

  • 通过「数据分析」栏目,确认集群在「可观测性」「可控性」方面的覆盖面和精确性

  • 在「可观测性管理」栏目,进行可观测维度的管理,包括 数据源/监控/告警补齐、治理等

  • 在「可控性管理」栏目:

  • 根据观测数据发现的问题,进行预案配置、issue 管理等

  • 根据混沌工程或演练发现的问题,进行预案配置等

  • 在「运行链路图」「部署架构图」中,通过可视化方式,将已经配置的监控、告警、预案与组件或链路结合

系统异常及恢复期间,在「运行链路图」中

  • 通过集群运行链路图或告警,感知异常的发生

  • 自动或手动触发问题跟踪

  • 通过集群运行链路图中组件及交互的颜色,感知异常的组件、异常的链路和严重程度

  • 点击集群运行链路图中组件的异常数字,获取关联的异常详情,或跳转到日志、tracing 系统等进行手动查询

  • 根据异常详情或平台提示,确定待执行的预案和关联的组件

  • 在集群运行链路图中执行预案 (阻断问题或恢复服务)

  • 通过集群运行链路图中组件及交互的颜色,确认预案执行效果

  • 自动或手动结束问题跟踪

问题跟踪过程中记录的主要内容有:

  • issue

  • 异常发生的时刻

  • 异常处理期间执行的动作

  • 运行链路图 snapshot

  • 异常恢复的时刻

数据模型及竞争力分析

===============================================================================

最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性

Java面试宝典2021版

最常见Java面试题解析(2021最新版)

2021企业Java面试题精选

动或手动结束问题跟踪

问题跟踪过程中记录的主要内容有:

  • issue

  • 异常发生的时刻

  • 异常处理期间执行的动作

  • 运行链路图 snapshot

  • 异常恢复的时刻

数据模型及竞争力分析

===============================================================================

最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性

Java面试宝典2021版

[外链图片转存中…(img-DRbvn3hH-1710360501498)]

[外链图片转存中…(img-6VXSX1vZ-1710360501499)]

最常见Java面试题解析(2021最新版)

[外链图片转存中…(img-PCfu9TI7-1710360501499)]

[外链图片转存中…(img-0EQCIXDG-1710360501499)]

2021企业Java面试题精选

[外链图片转存中…(img-HOSYuLWv-1710360501500)]

[外链图片转存中…(img-d9mndwZf-1710360501501)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值