Kuasar机密容器常见问题
调试方法
如何查看日志信息
$ journalctl -u isulad如何加入调试工具到机密虚机
以cat命令为例:
$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相应位置。
如何进入机密虚机
1.修改/var/lib/kuasar/cc-config.toml中的kernel_params参数: task.debug task.debug_shell=/xx/x 这里/xx/xx填rootfs镜像内sh命令所在地址,比如/bin/sh。
2.改好后,重启kuasar服务,拉新的sandbox,先不启动容器,执行
$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":
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机密容器部署指南》配置机密容器参数章节,将镜像服务器的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地址错误,就会导致获取密钥失败。
其他
逐步确认打包加密镜像的过程,确认加密镜像打包正确,并且存放了正确的密钥在远程证明密钥托管服务器。