SuperAPI AI 工具集

k8s-launch-kit-clean

部署与运维

查看项目

更新于 10-16 02:34

技能介绍

用途:从 Kubernetes 集群中卸载、拆除或移除 NVIDIA Network Operator 部署,命令为 l8k clean。使用前应先阅读 k8s-launch-kit-shared 了解二进制发现、JSON 输出与错误处理。

安全边界:清理属于不可逆的实时集群变更,必须获得用户明确授权,不能从检查、验证、排障或解释命令的请求中推断出清理授权。执行前需解析目标 kubeconfig 并显示当前上下文,确定 Network Operator 命名空间,说明该命名空间内所有命名空间级自定义资源及已知集群级 Network Operator CR 都会被删除,并确认 Helm release 是卸载还是保留。目标不明确时可用只读检查:kubectl --kubeconfig <PATH> config current-context 与 helm --kubeconfig <PATH> list --all-namespaces --filter '^network-operator$'。若 kubeconfig、集群、命名空间或 Helm 保留选择仍不明确,应停止并询问。

运行清理:用户授权确切目标后,AI 代理使用 JSON 模式:l8k clean --kubeconfig <PATH> --network-operator-namespace <NAMESPACE> --output json >cleanup.json 2>cleanup.log && jq . cleanup.json。仅在用户期望 l8k 从 --user-config、./cluster-config.yaml、显式 --config-dir 或 nvidia-network-operator 默认值解析命名空间时才省略 --network-operator-namespace。l8k 不信任集群内对象来选择破坏性清理目标。同一可信本地配置提供 networkOperator.skipHelmChart;为 true 时视为外部拥有并保留 Helm release。保留已安装 release 及其 chart 管理资源:l8k clean --kubeconfig <PATH> --network-operator-namespace <NAMESPACE> --keep-helm-chart --output json >cleanup.json 2>cleanup.log && jq . cleanup.json。JSON 模式自动确认,完成只读目标检查与授权前不要调用;l8k clean 没有 dry-run 模式。解析前检查命令状态,失败时保留 cleanup.log。

删除语义:删除解析出的 operator 命名空间内所有命名空间级自定义资源实例;集群范围删除所有 HostDeviceNetwork、IPoIBNetwork、MacvlanNetwork、NicNodePolicy 和 NicClusterPolicy 实例;先向完整的命名空间级与集群级集合发送删除请求,再监控 CR 的 finalizer 完成,重新扫描也采用先全部删除再等待的顺序;在 CR 删除与 finalizer 完成前保留控制器;最后卸载 network-operator Helm release,除非 networkOperator.skipHelmChart 或 --keep-helm-chart 保留它。保留命名空间、CRD、非 Helm 拥有的 Secret、本地文件及其他位置的命名空间级自定义资源;Helm 元数据与 chart 管理资源随 release 移除。已缺失的资源与 Helm release 视为成功的无操作。正常流程中不要手动移除 finalizer;若清理无限等待,检查受影响的 CR、operator pod 与事件,并在强制移除 finalizer 前请求单独授权。

验证结果:要求 .success == true,然后报告 .cleanup.namespace、.cleanup.customResourcesDeleted、.cleanup.helmReleaseRemoved、.cleanup.keepHelmChart。cleanup.keepHelmChart 是配置加显式标志后的有效策略,而不仅是命令行是否出现 --keep-helm-chart。若 Helm release 本应移除,用同一只读 helm list 命令验证其不存在;若保留,验证其仍处于部署状态。

OpenShift:l8k clean --flavor ocp 会被拒绝。广泛的 Kubernetes 清理不覆盖单独安装的 OpenShift operator,只能手动移除确切的目标资源。