介绍
目前k8s-cluster-inspector组件可以自动化完成Kubernetes集群巡检,并在巡检结果中给出当前集群存在的问题,问题分级,问题类型,问题解决方法。
示例巡检数据结构如下:
{
"name": "colocation-webhook-role",
"namespace": "archimedes",
"kind": "Role",
"message": ["CanDeleteResources"],
"issueCategory": ["Failed to pull image:WorkLoad"],
"normal": false,
"harmRank": ["CanDeleteResources:高危"],
"repairMessages": ["CanDeleteResources:rbac中存在删除用户的风险,修复:在role,clusterrole增加标签:kubernetes.io/bootstrapping='rbac-defaults'"]
}
可见,其结果在一般的靠人力的情况下,对于问题的答案有一定限制。最终可能导致用户对结果不信任或者结果无法在可生产的环境中验证。
我们在借助AI工具,对于问题答案使用AI进行回答。将其结果回填到以上的巡检数据后,示例结果如下:
{
"name": "colocation-webhook-role",
"namespace": "archimedes",
"kind": "Role",
"message": ["CanDeleteResources"],
"issueCategory": ["Failed to pull image:WorkLoad"],
"normal": false,
"harmRank": ["CanDeleteResources:高危"],
"repairMessages": ["CanDeleteResources:集群中遇到镜像拉取报错401,通常是因为镜像仓库需要认证。解决方法如下:
1. **创建镜像拉取秘密**:在Kubernetes中创建一个Secret对象,用于存储镜像仓库的用户名和密码。
```yaml
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
```
2. **在Pod或Deployment中引用Secret**:在Pod或Deployment的配置文件中,通过`imagePullSecrets`字段引用上述创建的Secret。
```yaml
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred
```
3. **应用配置**:更新或创建Pod/Deployment。
```bash
kubectl apply -f your-pod-or-deployment.yaml
```
这样,Kubernetes在拉取镜像时会使用指定的认证信息,避免401错误。"]}
可见数据结果有较为明显的改进。并且借助AI工具,可以使得答案具有较高的丰富度和专业性。增加产品力。增强用户体验。
系统流程
主要流程区分:
1. 执行巡检模版
按照用户声明的巡检模版指令执行巡检
2. 开始巡检
开始巡检执行,该过程与Kubernetes集群交互
3. 渲染巡检结果
将巡检结果进行渲染,渲染过程中会调用AI接口,分装提示词,组装steam需要的上下文,将集群问题给到AI,并获取AI回答的结果,补充到结果集中。
4. 上报巡检结果
最终将巡检结果上报到用户指定的OSS存储服务器或者本地。
provider 设计
在流程中中,AI provider设计目的是将AI 作为provider进行设计,可以支持多个AI提供方。每个AI提供方只需要实现调用方式即可。这在对外交付时,极大的提高了灵活性。