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

“description”: “XXX VPC 内,管理 ENI”,

“type”: “component”,

“dependencies”: {

“serviceaccount”: “enioperator”,

“clusterrole”: “enioperator”,

“clusterrolebinding”: “enioperator”,

“configmaps”: [“eniconfig”],

“secrets”: [“enioperator”]

}

},

{

“_id”: “42699513a7561e89a5f99881d7b05653a1625c51”,

“name”: “Network Service”,

“description”: “提供 VPC/VSwitch 等云网络资源的管理服务”,

“type”: “cloud service”

}

],

“edges”: [

{

“_id”: “38bce9ca8a0cec6d8586d96298bd63b0523fc946”,

“source”: “eni-operator”, “target”: “kube-apiserver”,

“description”: “管理 ENI 请求”

},

{

“_id”: “93f3c21247165f0be3a969fc80f72bc1a402e9f5”,

“source”: “eni-operator”, “target”: “Network Service”,

“description”: “访问阿里云 ECS OpenAPI,管理 VPC/VSwitch 等网络资源”

}

]

}

2. 架构运行图


集群运行过程中,组件及交互关系可以通过外部观测数据推测内部状态,如 log/metrics/trace。与集群架构图结合,可以在静态架构的基础上叠加动态的洞察数据,更直观把握集群的健康状态,如下图:

3.png

其中的数字表征洞察数据,可以是「异常数量」「请求流量」等。除了通过数字进行洞察,还可以使用「颜色表征健康状态」「线条粗细表征流量大小」等。

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

{

“nodes”: [

{

“_id”: “ea4538dc0625d06b0dc93579998e04288656050f”,

“name”: “mutatehook”,

“deploy”: {

“type”: “K8s:Deployment”,

“namespace”: “kube-system”,

“replicas”: 3

},

“insight”: [

{

“source”: {

“vendor”: “cloud:aliyun:sls”,

“log_project”: “xxx”,

“log_store”: “mutatehook”,

“log_url”: “https://sls.console.aliyun.com/lognext/project/xxx”

},

“signal”: {

“exception”: {

“fuzzy”: “fail OR Fail OR error OR Error”

}

}

}

]

}

],

“edges”: [

{

“_id”: “38bce9ca8a0cec6d8586d96298bd63b0523fc946”,

“source”: “eni-operator”, “target”: “kube-apiserver”,

“insight”:[

{

“source”: {

“vendor”: “cloud:aliyun:sls”,

“log_project”: “xxx”,

“log_store”: “xxx”,

“log_url”: “https://sls.console.aliyun.com/lognext/project/xxx”

},

“signal”: {

“exception”: {

“unauthorized”: “Unauthorized”,

“throttling”: “‘Throttling’ OR ‘throttling’”

}

}

}

]

}

]

}

3. 资源构成图


资源管理是个复杂的话题,通过分析集群中资源的构成关系,也可以尝试通过结构来表征集群的资源构成,节点表征资源,边表征资源的从属或绑定关系。

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

{

“kinds”: [“vpc”, “vswitch”, “securitygroup”, “ecs”, “clb”, “rds”, “nat”, “eip”],

“tags”: {

“cluster/product”: “xxx”,

“cluster/id”: “2736f42d4e882ad6825d6364545a3f1cb5136859”,

“cluster/name”: “xxx”,

“cluster/env”: “staging”

},

“nodes”: [

{

“kind”: “vpc”,

“nodes”: [

{

“_id”: “c505f21871bac7385c1387988cf226310af0831e”,

“id”: “vpc-xxx”,

“description”: “”,

“ipv4”: “xxx”,

“tags”: {

“resource/creator”: “product”,

“resource/role”: “”

},

“url”: “https://vpc.console.aliyun.com/vpc/xxx”

}

]

},

{

“kind”: “ecs”,

“nodes”: [

{

“_id”: “47c4fe5cc2585a49f07798a0b8b69cda7f8d4a23”,

“id”: “xxx”,

“az”: “xxx”,

“interfaces”: {

“primary”: {

“ip”: “xxx”,

“eni”: “xxx”,

“mac”: “xxx”

}

},

“instance-type-family”: “xxx”,

“instance-type”: “xxx”,

“tags”: {

“resource/creator”: “product”,

“resource/role”: “worker”,

“node/container-runtime”: “xxx”,

“node/user-networking”: “xxx”,

“node/system-networking”: “xxx”

},

“status”: “”,

“condition”: “”,

“url”: “https://ecs.console.aliyun.com/#/server/xxx”

}

]

}

],

“edges”: [

{

“_id”: “a754c748b2723a25c017421dd0969d00df3c000b”,

“source”: “vsw-xxx”, “target”: “vpc-xxx”,

“description”: “”

},

{

“_id”: “c34b164eba2897cfb2b574a576672d8aa441d709”,

“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”: “caa1e395c713f47766ca7bcfc20419c0be0f0803”,

“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)使用体感

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

  • 运行链路图:

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

  • 部署架构图

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

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

  • 业务流程图

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

2)使用体感

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

  • 运行链路图:

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

  • 部署架构图

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

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

  • 业务流程图

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-kQsC7L8g-1715793522644)]

[外链图片转存中…(img-dxKs4QJ6-1715793522644)]

[外链图片转存中…(img-rkAizUrl-1715793522645)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值