ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] 我们没办法通过ssh这种网络方法进入到kata虚拟机中,只能通过vsock的方法进入到kata虚拟机中。但是kata虚拟机中必须有bash或sh,否则无法进去。kata默认使用的是操作系统镜像为clear-linux,该系统是没有bash命令的,所以我们需要使用其他镜像 ### **准备工作** 1、根据 [kubernetes + kata](https://www.kancloud.cn/pshizhsysu/kubernetes/3113823) 一文档安装好单节点的k8s与kata 2、根据上文构建得到 kata-ubuntu.image 镜像 ### **配置kata使用kata-ubuntu.image镜像** 在k8s节点上,进入到`/opt/kata/share/kata-containers/`目录下,删除`kata-containers.img`这个软链接文件,然后为 kata-ubuntu.image创建软链接: ``` $ cd /opt/kata/share/kata-containers/ $ rm -f kata-containers.img $ ln -s kata-ubuntu.image kata-containers.img ``` ### **开启`debug_console_enabled`** 编辑`/opt/kata/share/defaults/kata-containers/configuration.toml`文件,找到`debug_console_enabled = true`一行,去掉注释(参考[set-up-a-debug-console](https://github.com/kata-containers/kata-containers/blob/2.5.2/docs/Developer-Guide.md#set-up-a-debug-console)) ``` [agent.kata] ... debug_console_enabled = true ... ``` ### **进入到虚机中** 创建一个kata容器,找到它的sandox的id,由于这里我们使用qemu作为hypervisor,且只创建了一个容器,所以通过如下命令就能找到: ``` $ ps -ef | grep qemu root 37855 1 0 20:04 ? 00:00:09 /opt/kata/bin/qemu-system-x86_64 -name sandbox-38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089 -uuid b2fbe069-3195-4280-99c4-5e013bb9a806 -machine q35,accel=kvm,kernel_irqchip=on,nvdimm=on -cpu host,pmu=off -qmp unix:/run/vc/vm/38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089/qmp.sock,server=on,wait=off -m 2048M,slots=10,maxmem=4920M -device pci-bridge,bus=pcie.0,id=pci-bridge-0,chassis_nr=1,shpc=off,addr=2,io-reserve=4k,mem-reserve=1m,pref64-reserve=1m -device virtio-serial-pci,disable-modern=true,id=serial0 -device virtconsole,chardev=charconsole0,id=console0 -chardev socket,id=charconsole0,path=/run/vc/vm/38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089/console.sock,server=on,wait=off -device nvdimm,id=nv0,memdev=mem0,unarmed=on -object memory-backend-file,id=mem0,mem-path=/opt/kata/share/kata-containers/kata-ubuntu.image,size=134217728,readonly=on -device virtio-scsi-pci,id=scsi0,disable-modern=true -object rng-random,id=rng0,filename=/dev/urandom -device virtio-rng-pci,rng=rng0 -device vhost-vsock-pci,disable-modern=true,vhostfd=3,id=vsock-3814740061,guest-cid=3814740061 -chardev socket,id=char-78737151f4b5b27d,path=/run/vc/vm/38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089/vhost-fs.sock -device vhost-user-fs-pci,chardev=char-78737151f4b5b27d,tag=kataShared -netdev tap,id=network-0,vhost=on,vhostfds=4,fds=5 -device driver=virtio-net-pci,netdev=network-0,mac=22:4d:e0:63:74:88,disable-modern=true,mq=on,vectors=4 -rtc base=utc,driftfix=slew,clock=host -global kvm-pit.lost_tick_policy=discard -vga none -no-user-config -nodefaults -nographic --no-reboot -daemonize -object memory-backend-file,id=dimm1,size=2048M,mem-path=/dev/shm,share=on -numa node,memdev=dimm1 -kernel /opt/kata/share/kata-containers/vmlinux-5.19.2-96 -append tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k cryptomgr.notests net.ifnames=0 pci=lastbus=0 root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro ro rootfstype=ext4 console=hvc0 console=hvc1 quiet systemd.show_status=false panic=1 nr_cpus=2 systemd.unit=kata-containers.target systemd.mask=systemd-networkd.service systemd.mask=systemd-networkd.socket scsi_mod.scan=none agent.log=debug agent.debug_console agent.debug_console_vport=1026 -pidfile /run/vc/vm/38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089/pid -smp 1,cores=1,threads=1,sockets=2,maxcpus=2 ``` 执行如下命令我们就可以进入到kata虚拟机中: ``` $ kata-runtime exec 38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089 ``` 可以看一下操作系统版本、kata-agent版本等信息: ``` root@localhost:/# cat /etc/os-release NAME="Ubuntu" VERSION="20.04 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal root@localhost:/# kata-agent --version kata-agent version 2.5.2 (api version: 0.0.1, commit version: 2.5.2-4b39dc0a390584d2ee21072cca7707f4ee7f56c5, type: rust) ``` 看一下里面的文件系统情况: ``` root@localhost:/# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT pmem0 259:0 0 126M 1 disk └─pmem0p1 259:1 0 124M 1 part / root@localhost:/# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/root ext4 117M 102M 8.5M 93% / devtmpfs devtmpfs 996M 0 996M 0% /dev tmpfs tmpfs 998M 0 998M 0% /dev/shm tmpfs tmpfs 200M 20K 200M 1% /run tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 998M 0 998M 0% /sys/fs/cgroup tmpfs tmpfs 998M 0 998M 0% /tmp kataShared virtiofs 2.0G 11M 1.9G 1% /run/kata-containers/shared/containers shm tmpfs 998M 0 998M 0% /run/kata-containers/sandbox/shm none virtiofs 50G 5.9G 45G 12% /run/kata-containers/38a3dea6f67691256d1fb09dd46988e44ca7e36330ec9c9f4b315c945bc49089/rootfs none virtiofs 50G 5.9G 45G 12% /run/kata-containers/dbf323183212dcc93b5560fa3765f4f491760cee7f5a628b9ee0a1feadaf5c39/rootfs ``` ### **参考** https://github.com/kata-containers/kata-containers/blob/2.5.2/docs/Developer-Guide.md#set-up-a-debug-console https://github.com/kata-containers/kata-containers/tree/main/docs/design/architecture#exec-command