首页 > 其他分享 >使用豆包MarsCode 实现高可用扫描工具

使用豆包MarsCode 实现高可用扫描工具

时间:2024-09-26 11:25:21浏览次数:9  
标签:AI 探针 扫描 实现 豆包 MarsCode Pod K8s

以下是「  豆包MarsCode 体验官」优秀文章,作者郝同学测开笔记。

前言

最近接触K8s,了解到K8s提供了非常方便的实现高可用的能力,再加上掘金推出「豆包MarsCode初体验」征文活动,所以打算使用豆包 MarsCode IDE来实现一个高可用扫描工具。 豆包MarsCode IDE 是一个云端 AI IDE 平台。通过内置的 AI 编程助手,开箱即用的开发环境,详细介绍可以参考官网:docs.marscode.cn/。


准备工作

进入豆包marscode,进行注册登录,进入主页面,还是比较简洁的,如下图所示

使用豆包MarsCode 实现高可用扫描工具_智能化

基于前言中提到的想法,基于模版来创建该项目,选择模版GO,输入项目名称KubeKeeper,以及简要描述,点击创建即可。如下图所示:

使用豆包MarsCode 实现高可用扫描工具_ai_02

 这里提一起这个项目名称的想法,KubeKeeper - 结合了 Kubernetes(Kube)和保护者(Keeper),象征着守护和管理你的集群。哈哈,之后想要做的东西很多,这里先从高可用扫描工具开始。

创建之后,显示英文,感觉不舒服的朋友,可以点击截图所示位置,切换为中文显示

使用豆包MarsCode 实现高可用扫描工具_人工智能_03

好了,到这里就算准备完成了,可以进入代码实现环节了。整体下来,使用还是比较容易的,不需要过多看文档就可以上手使用了。


项目背景

K8s提供了非常方便的实现高可用的能力,这使用户可以在K8s中非常标准化的实现高可用。只要有标准和规范,扫描工具就有用武之地。 扫描系统中的所有服务,分析是否满足K8s的要求就可以初步判断出我们的系统哪些模块是不符合高可用设计的。


在K8s中实现高可用服务需要怎么做呢?

  • 使用Deployment或者StatefulSet接管Pod的生命周期,保持多个Pod在集群中处于存活状态
  • 配置Pod反亲和性,保证Pod分布在不同的节点,防止单节点部署的情况出现
  • 使用Service接管Pod网络,让服务拥有负载均衡和故障转移的能力
  • 为Pod配置探针,让K8s能及时感知Pod的异常状态

实现原理

在动手开发扫描工具之前我们需要先明确一下扫描的规则。 基本上我们需要注意以下扫描规则。

  • 在K8s中维护Pod生命周期的在线对象有DaemonSet、Deployment和StatefulSet,但是只有Deployment和StatefulSet需要扫描副本数量和Pod反亲和性,因为DaemonSet本身保证在每个节点上都会且只会启动一个Pod。
  • 对于针对探针的扫描,在原则上readiness探针是必须设置的,没有设置readiness探针是一个错误(error)。而如果没有设置liveness探针可以抛出一个警告(warning)来具体分析,因为在低版本的K8s上没有启动探针的情况下,有些项目需要担心liveness探针引起的无限重启问题。启动探针优先级最低,可以根据项目情况选择扫描或者不扫描。
  • 除了要扫描Pod是否设置了探针,一般还需要计算出探针判断一个Pod处于异常状态所需要的最长时间。在第3章介绍过探针需要一定的时间来检测容器状态,而根据相关参数的配置不同,需要的时间也不同。大家需要将这个时间也计算出来,因为在高可用的测试中,服务的恢复时间也是一个重要的指标。
  • Job、CronJob等离线业务原则上不在扫描名单中,因为离线业务一般不在高可用测试的范围内。但其实仍然有一个扫描项目是对所有Pod生效的,就是扫描Pod是否配置了节点亲和性或者节点选择器这些调度策略,因为如果Pod没有配置调度策略则意味着Pod是随机调度到集群中任何一个节点上的。这样的随机调度策略理论上是很不安全的,因为如果K8s集群的主节点上被调度了一个I/O密集型的计算任务的话,它的I/O很可能会把主节点冲垮导致整个集群出现问题,所以基于稳定性考虑我们也需要针对调度策略进行扫描。

代码实现

了解清楚背景和实现原理后,接下来,我们就使用豆包 MarsCode IDE来实现。


AI实现客户端初始化

首先,进行客户端的初始化,直接使用AI助手来完成,看看AI实现效果,然后再进行改进。
在对话框中,输入“使用go实现k8s客户端的初始化,最好可以封装实现”,AI实现效果如下图:

使用豆包MarsCode 实现高可用扫描工具_人工智能_04

使用豆包MarsCode 实现高可用扫描工具_ai_05

 如截图所示,点击代码实例中的复制或者插入光标处,就可以使用代码了,这是我常用的方式,当然也可以点击添加至新文件。

哈哈,看着还不错,直接可以使用。


AI协助解决编译报错

我们先不急着实现之后的代码,先来编译看看效果,在控制台输入go build -o ./kubescan ./main.go ,会看到控制台报错,如下图

使用豆包MarsCode 实现高可用扫描工具_单元测试_06

截图可以看到有一个AI修复按钮,点击这个按钮,会自动将错误提交给AI,得到错误解决方案,如下图

使用豆包MarsCode 实现高可用扫描工具_单元测试_07

可以看到解决方案还是靠谱的,根据解决方案进行修改后,再次执行go build -o ./kubescan ./main.go会看到编译成功了,编译可能需要等待一小段时间。
笔者是刚学Go不久,很多语法还不是很熟悉,但是AI助手很大提升了我的编码效率。

AI协助添加注释

接下来,我们在使用AI来给函数添加注释,选中代码,可以快速唤起内嵌对话框,如图所示

使用豆包MarsCode 实现高可用扫描工具_人工智能_08

点击注释,会自动生成注释,如图所示

使用豆包MarsCode 实现高可用扫描工具_单元测试_09

可以选择使用或者不使用,这里生成的很准确,笔者采用该注释。

AI协助解释代码

接下来,我们在使用AI来解释代码,看看效果如何,还是上面选中的代码,然后点击解释,如下图

使用豆包MarsCode 实现高可用扫描工具_人工智能_10

解释还是相当清楚的,最后还有一个总结,应该是一看就明白了。

AI协助生成单元测试

单元测试好多人懒得写,感觉太麻烦,但是单元测试还是必要的,这里借助AI看看是否能快速编写单元测试用例。还是上面选中的代码,点击单元测试,如图所示

使用豆包MarsCode 实现高可用扫描工具_人工智能_11

 哈哈,相当可以啊,直接添加到新文件就可以了,效率太高了。

继续高可用扫描工具实现

上面我们已经通过AI完成了客户端的初始化,以及对AI能力使用有了一定的了解。接下来我们继续让AI来协助我们完成高可用工具的实现。

实现遍历pod

我们先获取命名空间下的pod,然后进行遍历,读取每个POD的高可用配置信息,将不符合扫描规则的输出或者保存到数据库即可。
如图所示:

使用豆包MarsCode 实现高可用扫描工具_人工智能_12

借助AI来解释代码,爽歪歪,不用自己编织语言来解释。

实现HAScanner 和 Scan 方法

这里就是主要逻辑了,获取pod的高可用配置信息。先定义了两个结构体,如图所示

使用豆包MarsCode 实现高可用扫描工具_智能化_13

还是借助AI解释,我觉得我我自己解释的清晰多了。

接下来实现Scan方法,如图所示

使用豆包MarsCode 实现高可用扫描工具_智能化_14

整体代码还是比较简单的,AI解释的也很清晰,这里不做过多说明了,最后我们看看效果。

使用豆包MarsCode 实现高可用扫描工具_ai_15

由于VP限制,只有连接代理才可以访问公司的k8s集群,在云端无法执行,所以这是我本地执行的效果,代码是一样的。可以通过pod的高可用配置信息,来确定哪些pod有优化空间。

最后展望

借助豆包MarsCode 很快的实现了这个高可用扫描工具,正如我的项目名称KubeKeeper,守护和管理你的集群,高可用扫描工具只是其中一个功能,后续我们还可以实现资源回收工具、故障注入工具等,期待一起探索吧。



标签:AI,探针,扫描,实现,豆包,MarsCode,Pod,K8s
From: https://blog.51cto.com/u_16851677/12118048

相关文章

  • bash 中 `${}` 的使用方法(由豆包生成)
    在Bash中,${}是一种参数扩展的语法结构,具有以下主要用法:一、变量替换可以用来获取变量的值。name="Alice"echo"${name}"#输出:Alice二、字符串操作提取子字符串:${var:start:length}:从变量var中提取从start位置开始,长度为length的子字符串。str="HelloWorld"echo......
  • 豆包MarsCode初体验,用 React 创建一个最经典的贪吃蛇游戏
    以下是「 豆包MarsCode 体验官」优秀文章,作者Find。背景在人工智能快速发展的时代,大模型(LLM)只要有足够的算力和数据就可以做到任何的事情,甚至可以模拟出另一个地球。LLM作为一个革命化的科技,可以取代很多岗位,甚至可以让人类达到“躺着领钱的时代”。Marscode作为一个新推出的IDE......
  • HarmonyOS开发之BLE蓝牙扫描
    随着物联网技术的发展,短距离通信技术如蓝牙成为了连接各种智能设备的关键。HarmonyOSNEXT作为面向未来的操作系统,不仅支持传统的蓝牙技术,还特别优化了低功耗蓝牙(BLE)的支持,使得开发者能够轻松实现设备间的高效数据交换。本文将通过具体案例介绍如何在HarmonyOSNEXT中实现BLE蓝牙扫......
  • Windows 11设置柯能卡打印机通过SMB扫描到电脑
    1、查看打印机扫描仪的网络IP。2、在“网络和Internet访问”中打开网络发现,并通过”计算机管理“将Guest帐户的禁用选项取消。3、设置共享目录的来宾访问权限已开启。4、在添加windows功能中增加SMB服务,并开启之。5、建立共享扫描文件夹并设置其具有Guest及Everyone用户有可读......
  • 05-信息扫描&漏洞探测的工具使用
    1、安装并使用Nmap扫描一个地址(本机、VPS、虚拟机环境都可以),提供扫描结果截图在https://nmap.org/nmap官网下载对应的操作系统版本文件。安装完成后对本机10.0.0.151进行-A(探测操作系统及版本),-T4(加速扫描),-sS(半连接扫描)。2、安装并使用Xray被动扫描,提供过程文档+......
  • 基础网络安全-K8S之安全漏洞扫描
    一、前言在之前的文章《Docker安全学习之——Docker安全总结》中介绍了docker搭建后使用工具进行漏洞扫描,本篇则是介绍的在K8S搭建后需要开展的扫描工作,包括K8S自身的组件以及docker镜像等,这里介绍的是trivy这一款工具。二、工具简要介绍Trivy工具的GITHUB地址为:https://github.co......
  • [Java原创精品]基于Springboot+Vue的座位预约系统、自习室预约管理、微信二维码扫描模
    项目提供:完整源码+数据库sql文件+数据库表Excel文件1、项目功能描述本项目为双角色,用户和管理员,用户使用前台,管理员使用后台。1.1注册注册功能:填写用户名、密码进行注册。(“我已阅读同意《隐私政策》和《服务条款》”没有做后续,只是单纯有这样一行文字做模拟)1.2......
  • 我在 Marscode 用了 3 天,转行成为 Python 程序员
    以下是「 豆包MarsCode 体验官」优秀文章,作者不惑_。豆包MarsCode 项目实战Java程序员转行Python学习之路俗话说:工欲善其事,必先利其器。在历史的长河中,新手程序员最大的痛点之一就是搭建开发环境。先就是今天,如果你没有VSCode,甚至也没有其他IDE,那么也没有关系。豆包......
  • 全面防御:从漏洞扫描器到攻击面管理平台
    在网络安全领域,技术的演进如同浪潮般不断推动着行业的变革。曾经作为重要安全防线的漏洞扫描器,如今正面临着被攻击面管理平台逐渐取代的趋势。这一转变并非偶然,而是网络安全需求不断发展和深化的必然结果。本文将深入探讨这一发展趋势背后的原因和意义。网络安全需求的演变从单点防......
  • 写了一个全自动化漏洞扫描系统(poc_scan_web)
    前言上一个网络安全产品《魔盒安全情报》会不定时给我推送各种最新的漏洞情报,于是就写了一个全自动化漏洞扫描系统。主要原理是通过空间测绘平台和搜索引擎自动采集目标资产,然后再通过封装好的漏洞插件扫描漏洞,最后将结果保存到数据库,再通过系统展示出来。截图任务管理添加......