kata container
安装
2.x 版本
Kubernetes 环境中可以使用 kata-deploy 进行安装
$ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/kata-rbac/base/kata-rbac.yaml
$ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml
创建 runtimeclass
$ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/runtimeclasses/kata-runtimeClasses.yaml
在 yaml 中 spec 下添加 runtimeClassName: kata-qemu
即可使用
3.0
3.0 当前只支持默认的 Dragonball
做为 hypervisor.
Rust
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ source $HOME/.cargo/env
$ rustup install 1.58
$ rustup default 1.58-x86_64-unknown-linux-gnu
$ rustup target add x86_64-unknown-linux-musl
Musl libc
$ wget https://git.musl-libc.org/cgit/musl/snapshot/musl-1.2.3.tar.gz
$ tar vxf musl-1.2.3.tar.gz
$ cd musl-1.2.3/
$ ./configure --prefix=/usr/local/
$ make && sudo make install
编译安装
$ git clone https://github.com/kata-containers/kata-containers.git
$ cd kata-containers/src/runtime-rs
$ make && make install
参考 rust install
创建对应 runtimeclass
创建 yaml 并 apply
kind: RuntimeClass
apiVersion: node.k8s.io/v1
metadata:
name: kata
handler: kata
scheduling:
nodeSelector:
katacontainers.io/kata-runtime: "true"
在 yaml 中 spec 下添加 runtimeClassName: kata
即可使用
make install 后配置文件在 /usr/share/defaults/kata-containers/configuration.toml
内核编译
当时做 sriov 和 vhost-user 时需要内核支持,重新编译内核,加入 mlx5_core 和 uio 驱动
编译需要依赖包,yq 需要使用 pip3 安装,系统包 flex,jq,bison,openssl-devel;’不同的系统 ncurses-devel or libncurses-dev
$ cd kata-contaners/tools/packaging/kernel
// 下载内核包
$ ./build-kernel.sh setup
$ cd kata-linux-5.15.26-90
// 图形页面
$ make menuconfig
uio_pci_geniric 在 device driver > Userspace I/O drivers
mellanox 在 device driver > network device support > Ethernet driver support > Mellanox devices
build kernel
$ cd ..
$ ./build-kernel.sh build
在 kata-linux-5.15.26-90 可以看到编译好的内核文件
镜像制作
由于 image 需要一些额外的包进行测试使用,需要自己制作
使用 ubuntu
rootfs
$ cd kata-containers/tools/osbuilder
// 将想要安装的包写入
$ export EXTRA_PKGS="gcc make curl gnupg coreutils apt tar kmod pkg-config libc-dev libc6-dev pciutils iproute2 bind9-utils util-linux ethtool"
// 也可以 USE_PODMAN=true
$ make USE_DOCKER=ture image 2>&1 | tee logimage.txt
image
$ make USE_DOCKER=ture rootfs 2>&1 | tee logrootfs.txt
可以看到 kata-containers.img 镜像