> ## Documentation Index
> Fetch the complete documentation index at: https://enterprise-docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 完全删除插件

在企业版插件管理功能正式上线之前，通过 Web 界面删除插件只会修改数据库标记，并不会真正从 K8s 集群中移除插件资源。本文介绍插件 CRD 资源的相关概念，以及如何彻底移除 K8s 中运行的插件。

> 下文中的"插件"、"Dify Plugin"、"DP"均指企业版安装的 Dify 插件。

## 插件安装对集群的影响

插件安装成功后，K8s 集群中会运行一个 Runner Pod，Pod 名称为随机生成的哈希值。你可以通过 `pluginName` 字段查看具体的插件名称及版本。

例如 `bfb86f037071c05d3ce1d63c2f4f1e30--6` 中，后缀 `--6` 表示这是第六次安装尝试。如果插件安装失败，下次重新安装时会自动递增后缀数字，而之前失败的 CR 会以 `Failed` 状态保留。

使用以下命令查看所有插件 CRD：

![kubectl get dp 输出示例](https://assets-docs.dify.ai/2025/12/c85453c7d23641365d79ace1b77e9eb4.png)

## 删除插件

完整的删除流程包含两步：清理数据库记录 + 删除 K8s 资源。

### 清理数据库

目前清理数据库最简便的方法是在 Web 界面点击"删除插件"。

> **⚠️ 重要：请务必先在 Web 界面点击"删除插件"，再删除 K8s 资源。** 此操作会从 `dify-plugin` 表中删除安装记录；如果跳过这一步，你需要手动清理以下数据库表中的相关记录。

![数据库表结构](https://assets-docs.dify.ai/2025/12/eb8d143f1f4b4fa483a2591ce7371849.png)

### 删除集群资源

#### 删除特定插件

由于 `DifyPlugin` 是 Kubernetes 自定义资源定义（CRD）管理的资源，直接删除 Pod 无法彻底清除，必须从控制器层面进行删除。

以上面的插件为例，可以通过 Pod 名称删除指定插件。删除 `DifyPlugin` CR 后，Kubernetes 的垃圾回收机制会自动级联删除所有关联的子资源。

```bash theme={null}
# 删除指定的 DifyPlugin CR
kubectl delete difyplugin bfb86f037071c05d3ce1d63c2f4f1e30--6 -n dify

# 或使用短名称
kubectl delete dp bfb86f037071c05d3ce1d63c2f4f1e30--6 -n dify
```

执行上述命令后，以下资源会被自动删除：

* Deployment：`bfb86f037071c05d3ce1d63c2f4f1e30--6`
* ReplicaSet：`bfb86f037071c05d3ce1d63c2f4f1e30--6-67dbf9f9d5`
* Pod：`bfb86f037071c05d3ce1d63c2f4f1e30--6-67dbf9f9d5-k8ktn`
* Service：`svc-bfb86f037071c05d3ce1d63c2f4f1e30--6`

#### 删除所有插件

```bash theme={null}
# 步骤 1：备份所有插件配置
kubectl get dp -n dify -o yaml > all-difyplugins-backup.yaml

# 步骤 2：确认要删除的插件列表
kubectl get dp -n dify

# 步骤 3：执行批量删除
kubectl delete dp --all -n dify

# 步骤 4：如需恢复，执行以下命令
kubectl apply -f all-difyplugins-backup.yaml
```

#### 删除所有失败的插件

```bash theme={null}
# 查看所有 BuildFailed 状态的插件
kubectl get dp -n dify | grep BuildFailed

# 批量删除所有 BuildFailed 状态的插件
kubectl get dp -n dify -o jsonpath='{range .items[?(@.status.state=="BuildFailed")]}{.metadata.name}{"\n"}{end}' | \
  xargs -I {} kubectl delete dp {} -n dify
```

此外，失败的插件安装记录保存在 `install_tasks` 表中。

![SQL 查询结果](https://assets-docs.dify.ai/2025/12/829bd9e1eb777763858da2c606b45e6f.png)

### 通过 Flask 命令迁移插件

以下命令可用于插件的批量导出与安装：

```bash theme={null}
# 导出插件配置到文件
uv run --project api flask extract-plugins --output_file plugins.jsonl --workers 10

# 批量安装插件
uv run --project api flask install-plugins \
  --input_file plugins.jsonl \
  --output_file installed_plugins.jsonl \
  --workers 10
```

以下命令用于插件诊断与清理：

```bash theme={null}
# 从导出的插件中提取唯一标识符
uv run --project api flask extract-unique-identifiers \
  --input_file plugins.jsonl \
  --output_file unique_identifiers.json

# 列出所有插件提供者
uv run --project api python commands_diagnose_plugin_providers.py list

# 清理指定的插件提供者
uv run --project api python commands_diagnose_plugin_providers.py clean --provider <provider_name>

# 清理所有插件提供者
uv run --project api python commands_diagnose_plugin_providers.py clean-all

# 检查插件服务运行状态
uv run --project api python commands_diagnose_plugin_providers.py check-plugin-service
```
