./kk create cluster -f config-sample.yaml运行这条命令时显示error: Pipeline[CreateClusterPipeline] execute failed: Module[PullModule] exec failed: failed: [n2] [PullImages] exec failed after 3 retries: pull image failed: Failed to exec command: sudo -E /bin/bash -c "env PATH=$PATH docker pull kubesphere/pause:3.6 --platform amd64" "--platform" is only supported on a Docker daemon with experimental features enabled: Process exited with status 1 failed: [n1] [PullImages] exec failed after 3 retries: pull image failed: Failed to exec command: sudo -E /bin/bash -c "env PATH=$PATH docker pull kubesphere/pause:3.6 --platform amd64" "--platform" is only supported on a Docker daemon with experimental features enabled: Process exited with status 1 failed: [m1] [PullImages] exec failed after 3 retries: pull image failed: Failed to exec command: sudo -E /bin/bash -c "env PATH=$PATH docker pull kubesphere/pause:3.6 --platform amd64" "--platform" is only supported on a Docker daemon with experimental features enabled: Process exited with status 1
时间: 2025-08-03 21:11:27 浏览: 25
<think>我们正在解决在运行创建集群命令时因Docker守护进程未启用实验性功能而导致的镜像拉取失败问题。具体错误信息是:`--platformisonlysupportedonaDockerdaemonwithexperimentalfeaturesenabled`。根据问题,我们需要在Docker守护进程中启用实验性功能。以下是解决方案步骤:步骤1:修改Docker配置文件在Docker的配置文件`daemon.json`中设置`"experimental":true`。如果该文件不存在,可以创建它。通常,该文件位于`/etc/docker/daemon.json`。例如,使用以下命令编辑或创建该文件:```bashsudovi/etc/docker/daemon.json```然后,确保其内容包含:```json{"experimental":true}```步骤2:重新启动Docker服务修改配置文件后,需要重新启动Docker服务以使更改生效:```bashsudosystemctlrestartdocker```步骤3:验证实验性功能是否启用运行以下命令检查实验性功能是否已经启用:```bashdockerversion-f'{{.Server.Experimental}}'```如果输出为`true`,则说明已启用。步骤4:重新运行创建集群的命令重新执行之前失败的命令,例如:```bash./kkcreatecluster-fconfig-sample.yaml-akubesphere.tar.gz```注意:如果集群创建命令中指定了`--platform`参数,这通常是因为跨平台构建的需求。启用实验性功能后,Docker就能够处理多平台镜像的拉取。附加说明:在某些较旧的Docker版本中,可能还需要在启动Docker守护进程时加上`--experimental`标志。但是,在配置文件中设置是推荐的方式。如果上述步骤无法解决问题,请考虑升级Docker到最新版本,因为实验性功能在较新版本中可能已经默认启用或成为稳定功能。另外,根据引用的其他错误信息(如引用[5]中提到的`rpcerror:code=Unimplementeddesc=unknownserviceruntime.v1alpha2.ImageService`),这可能与containerd的版本或配置有关,但当前问题明确是由于实验性功能未启用,因此先解决实验性功能的问题。如果问题仍然存在,请检查Docker日志以获取更多信息:```bashjournalctl-udocker.service```最后,确保使用的Kubekey版本与目标Kubernetes和KubeSphere版本兼容。根据以上步骤,我们可以生成相关问题,以便用户深入了解或解决其他可能的关联问题。</think>
基于错误信息“--platform is only supported on a Docker daemon with experimental features enabled”,以下是完整的解决方案:
### 解决方案:启用Docker实验性功能
1. **修改Docker配置文件**
```bash
sudo vi /etc/docker/daemon.json
```
添加以下内容(若文件不存在则新建):
```json
{
"experimental": true,
"features": {"buildkit": true}
}
```
保存文件后重启Docker[^1]:
```bash
sudo systemctl restart docker
```
2. **验证实验性功能状态**
```bash
docker version -f '{{.Server.Experimental}}'
```
若输出 `true` 表示已启用成功[^1]
3. **手动拉取镜像验证**
```bash
sudo docker pull kubesphere/pause:3.6 --platform amd64
```
成功拉取后可继续集群安装命令
4. **备用方案:环境变量启用(临时生效)**
```bash
export DOCKER_CLI_EXPERIMENTAL=enabled
./kk create cluster -f config-sample.yaml ... # 重新执行命令
```
5. **兼容性检查**
```bash
docker version | grep -A5 "Server:"
```
确保Docker版本≥19.03(低版本需升级)[^1]
> **注意**:若使用containerd,需在`/etc/containerd/config.toml`中添加:
> ```toml
> [plugins."io.containerd.grpc.v1.cri".containerd]
> default_runtime_name = "runc"
> [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
> runtime_type = "io.containerd.runc.v2"
> [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
> SystemdCgroup = true
> ```
阅读全文