diff --git a/docs/zh/docs/container_runtime/kuasar/_toc.yaml b/docs/zh/docs/container_runtime/kuasar/_toc.yaml index 88c68d10b7858ac3cfcd5fb2e8b68e6c371f8f1f..7e39beca92e3803c263d6603869927d258c68333 100644 --- a/docs/zh/docs/container_runtime/kuasar/_toc.yaml +++ b/docs/zh/docs/container_runtime/kuasar/_toc.yaml @@ -11,5 +11,7 @@ sections: href: ./kuasar_usage.md - label: iSulad+Kuasar机密容器部署指南 href: ./isulad_kuasar_confidential_containers_deployment_guide.md +- label: Kuasar机密容器搭建过程中的常见问题 + href: ./kuasar_confidential_containers_question_answer.md - label: 附录 href: ./kuasar_appendix.md diff --git a/docs/zh/docs/container_runtime/kuasar/kuasar_confidential_containers_question_answer.md b/docs/zh/docs/container_runtime/kuasar/kuasar_confidential_containers_question_answer.md new file mode 100644 index 0000000000000000000000000000000000000000..37a371f80c27cde7729531d9989557b1602554a7 --- /dev/null +++ b/docs/zh/docs/container_runtime/kuasar/kuasar_confidential_containers_question_answer.md @@ -0,0 +1,81 @@ +# Kuasar机密容器搭建过程中的常见问题 + +## 调试方法 + +### 如何查看日志信息 + +```sh +$ journalctl -u isulad +``` + +### 如何加入调试工具到机密虚机 + +以cat命令为例: + +```sh +$ls /var/lib/kuasar/cc-rootfs.img +/var/lib/kuasar/cc-rootfs.img +$mkdir cc-rootfs +$mount /var/lib/kuasar/cc-rootfs.img ./cc-rootfs +$cp /usr/bin/cat ./cc-rootfs/usr/bin/cat +$umount ./cc-rootfs +``` + +注意,cat的依赖比较简单,cc-rootfs.img中都有,但有的工具,比如curl、wget,依赖比较复杂,还需要拷贝依赖的so。 +比如当宿主机环境的操作系统版本与kuasar版本一致时,可以用ldd /usr/bin/curl 查询依赖,并将所有so拷贝到cc-rootfs.img相应位置。 + +### 如何进入机密虚机 + +修改/var/lib/kuasar/cc-config.toml中的kernel_params参数: task.debug task.debug_shell=/xx/xx +这里/xx/xx填你的rootfs镜像内sh命令所在地址,比如/bin/sh。 + +改好后,重启kuasar服务,拉新的sandbox,先不启动容器,执行 + +```sh +$socat - VSOCK-CONNECT:{vsock-id}:1025 +``` + +此处vsock id为当前启动的沙箱命令(ps 查询qemu进程能看到)中,形如id=vsock-562081427,这个数字就是vsock id,每个沙箱都不一样。 + +## 常见问题 + +### 机密虚机内无法访问任何外部网络 + +确认方法:进入机密虚机,使用ping 或者 curl访问外部网络,发现无法ping通。 + +解决方案:需要排查json文件中"cri.sandbox.network.setup.v2"需要配置为"true": + +```json +cat pod.json +{ + "annotations": { + "cri.sandbox.network.setup.v2": "true" + }, +} +``` + +### 机密虚机内拉加密镜像报错"failed to pull manifest error sending request for url ......" + +确认方法:查看日志信息,报错"failed to pull manifest error sending request for url ......",进入机密虚机,使用curl访问外部https网络地址,提示https不可信,缺少CA证书。但是使用curl -k命令可以访问成功。 + +解决方案:参考[./isulad+kuasar-confidential-containers-deployment-guide.md] 配置机密容器参数章节,将镜像服务器的CA证书拷贝到cc-rootfs.img中。 + +### 机密虚机内拉加密镜像报错"failed to pull manifest unknown variant `NOT_FOUND`......" + +确认方法:查看日志信息,报错"failed to pull manifest unknown variant `NOT_FOUND`......"。查 + +解决方案:看container.json文件,确认镜像的地址确实和仓库中一致,尤其注意是不是镜像名称拼写错了,这个报错是因为镜像无法在镜像服务器中找到。 + +### 机密虚机内拉加密镜像报错"failed to get decrypt key" + +确认方法:查看日志信息,报错"failed to get decrypt key" + +解决方法:这个报错表明镜像已经可以成功拉取,但是在解密过程中出现错误,需要进一步排查。 + +#### task.aa_ser_url 配置问题 + +确认方法:检查/var/lib/kuasar/cc-config.toml中的kernel_params参数中task.aa_ser_url,如果ip地址错误,就会导致获取密钥失败。 + +#### 其他 + +逐步确认打包加密镜像的过程,确认加密镜像打包正确,并且存放了正确的密钥在远程证明密钥托管服务器。