纯新手kata开发环境配置避坑指南


title: “纯新手kata开发环境配置避坑指南”
source: “https://www.cnblogs.com/hazir/p/linux_kernel_pid.html”
author:
published:
created: 2025-05-29
tags:

  • “kata-containers/开发环境”

前言

最近在学习kata containera,配一个开发环境显然是首要的,尽管之前已经有一些开发环境的配置教程,但是由于笔者初步接触,许多环节都难以知其所以然,在开发环境的配置上屡屡踩坑,在终于完成环境的配置并初步学习过代码后,决定写下这篇粗略的指南希望能帮到有需要的人。

本文参考了:

配置机器环境

kata containers的相关介绍想必读者阅读之前已经有所了解,虽然称作容器,但是其实质上管理和运行的是一些轻量化的虚拟机如qemucloudHypervisor和3.0版本后内置的dragonball

“跑虚拟机的机器一定要可以虚拟化!”,所以请读者一定要确保自己的运行linux操作系统的处理器是支持虚拟化的,另外最新版的kata containers对于linux的内核版本也有一定的要求,截至笔者写下这篇文档,wsl仍然处于5.15内核,无法用来开发kata containers,而笔者正在使用的ubuntu24.04当前的6.8内核则是支持的。

如果读者没有办法使用物理机,我们就只能在虚拟机里配置开发环境来开发虚拟机了,这里则需要开启所使用虚拟机的嵌套虚拟化功能。mac系统请参照前两篇参考文章;对于windows平台的用户来说,可能不得不面临和hypev搏斗的窘境,在这里笔者几乎一脚踩进了一个无底洞,不管如何追随网上的教程反复检查“启用或关闭windows功能”、删除wsl、调用命令行命令、修改注册表和组策略,virtualbox始终不愿意打开他的嵌套虚拟化功能,忍无可忍后选择换成vmware,仍然无法使用,但是它至少告诉了我是因为我的hypev没有关闭(所以到底为什么关不上呢?),自然尝试各种办法也无法关闭。

所幸笔者曾经因为懒得在电脑旁边拿手机使用过一段事件的安卓模拟器,兼容性不好的模拟器一定会提供一个一键关闭hypev的功能,不然模拟机就会完全卡住无法使用,所以如果你也拼尽全力无法战胜hypev不妨最后一试。

windows环境下安装vmware或者virtual box的教程比比皆是笔者不再赘述,而mac os下的安装可以参照使用 VirtualBox 安装虚拟机开发环境 · GitBook

当然如果你恰巧有一台闲置的实体机也可以直接进入下一环节。

安装kata containers

检测环境

尽管kata containers的官方文档中提供了相当多样的安装方法,但是我们这里只选择最简单的方法,因为再配置接下来的环境之前我们首先要使用kata containers的编译产物kata-runtime检验当前环境是否足以运行kata containers,上文中引用到的笔记在安装步骤已经非常全面,但是他们都是建立在默认有一个可以使用的机器环境中的,为了防止笔者在多个机器中做无用功的事情再次发生,所以这里进行一些小小的次序改动。

首先我们要用最方便的方式安装一个kata container来检测,KATA_VERSION可以设置为最新版。

KATA_VERSION="3.5.0" \
    && ARCH="amd64"
wget https://github.com/kata-containers/kata-containers/releases/download/$KATA_VERSION/kata-static-$KATA_VERSION-$ARCH.tar.xz
sudo tar -C / -Jxvf kata-static-$KATA_VERSION-$ARCH.tar.xz

解压完之后就可以先检测环境了。

sudo /opt/kata/bin/kata-runtime check

// 输出结果
//INFO[0000] IOMMUPlatform is disabled by default.
//WARN[0000] Not running network checks as super user      arch=amd64 name=kata-runtime pid=29458 source=runtime
//System is capable of running Kata Containers
//System can currently create Kata Containers

参照运行输出结果进行相应的改动即可,如果由无论如何都无法解决的ERROR,就可以直接换一台机器了,删除掉下载下来的压缩包和/opt/kata文件夹后即可回复机器最初的环境。

安装编程语言

kata containers对于编程语言的版本有一定的要求,具体要使用什么版本可以参照你解压出的/opt/kata/versions.yaml的内容。

golang

安装步骤:Download and install - The Go Programming Language

所有版本的压缩包:All releases - The Go Programming Language

rust

记得修改所需的版本

$ RUST_VERSION="1.72.0"
$ export RUSTUP_DIST_SERVER="https://rsproxy.cn" \
    && export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
$ curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh
$ . "$HOME/.cargo/env"
$ cat > ~/.cargo/config <<EOF
[source.crates-io]
replace-with = 'rsproxy-sparse'
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
[net]
git-fetch-with-cli = true
EOF
$ rustup default $RUST_VERSION
$ rustup target add x86_64-unknown-linux-musl
$ rustc --version
rustc 1.72.0 (5680fa18f 2023-08-23)

安装containerd

containerd的版本对于开发kata来说关系不大,但对于运行容器验证对kata的修改有所影响,至少其config的配置变了许多,所以如果读者有自己熟悉的containerd使用环境就不必再观看这一段,如果读者之前并没有接触过containerd的话,如果时间并不紧迫那从头搭建一边环境并且熟悉其架构和使用还是有些必要的,这方面的教程也很多,如果对其不感兴趣只想了解kata的话,笔者有一些建议。

由于之前提到的config有所更改,我建议读者直接照抄Kata Containers Runtime-rs 安装教程 - Xuewei’s Blog的安装教程包括配置设置,每一步都有说明,很适合新人学习,但当你进行到验证kata container是否可以工作的时候,

$ sudo ctr image pull docker.io/library/busybox:latest
$ sudo ctr run --runtime io.containerd.run.kata.v2 -t --rm docker.io/library/busybox:latest hello sh

非常容易遇到拉取不到镜像的问题,正如前文所说,笔者是个实实在在的新手,尽管之前使用docker能够顺利配好镜像源,但尝试过网上的诸多教程后也还是没有配好containerd的镜像源,实在是无可奈何。
如果读者恰好也有此问题并且短期内又不得不使用这里有两个办法。

  1. containerdctr指令有命名空间的概念,安装crictl工具中使用的crictl在笔者这里可以正常拉取镜像,所以读者可以稍微学习一下其使用方法。但是如果读者只是想单独运行一下容器,crictl拉取下来的镜像都属于k8s命名空间,所以在使用ctr命令的时候加入一个-n k8s.io就可以正常使用了,例如sudo ctr -n k8s.io run --runtime io.containerd.run.kata.v2 -t --rm docker.io/library/busybox:latest hello sh
  2. 倘若读者恰好不想使用命名空间来指定,不论是crictl还是docker,只要有其他方法拉取镜像,将镜像导出为压缩包再ctr image import也不失为一种临时的方法。
  3. 差点忘记还有代理,尽管镜像源设置不太容易,但是代理的设置还是很轻松的
    在/etc/systemd/system/containerd.service文件中,添加以下内容。请将代理服务器的地址和端口替换为自己的信息。
[Service]
Environment="HTTP_PROXY=http://your-proxy-server.com:8080"
Environment="HTTPS_PROXY=http://your-proxy-server.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"

小结

配置环境中碰到的坑和解决办法基本叙述完了,希望对读者有用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值