如何制作 KubeVirt 的 Docker 镜像并更新?
1. 下载代码
使用 docker images 查看镜像版本,也即源代码的版本
以 virt-api 为例 ,tag 打的是 0.40.0-1
去 kubevirt 的 gtihub 仓库上切换到对应的 Tag :https://github.com/kubevirt/kubevirt/tree/v0.40.0,下载源代码到机器上并解压
2. 编译代码
进行解压过后项目根目录,执行如下命令编译
# 设置代理
go env -w GOPROXY=https://goproxy.cn,direct
# 编译代码 go build cmd/virt-api/virt-api.go
编译完成后,会在项目根目录下生成一个 virt-api
的可执行文件
3. 制作镜像
在集群中有 virt-api 镜像的节点上(一般是 worker 节点)新建 Dockerfile
FROM registry.suse.com/harvester-beta/virt-api:0.40.0-1
COPY virt-api /usr/bin/virt-api
然后把上面编译好的 virt-api 也放到与 Dockerfile 同级目录,执行如下命令
docker build -t egistry.suse.com/harvester-beta/virt-api:0.40.0-2
执行完成后,docker images 就会看到刚刚制作的 0.40.0-2
的镜像。
4. 更新 Pod
然后使用如下命令,更新 virt-api pod 所使用的 image,对应的 Pod 就会自动重启。
$ kubectl patch pod virt-api-775dd874f5-rjclv -n harvester-system -p '{"spec":{"containers":[{"name":"virt-api","image":"registry.suse.com/harvester-beta/virt-api:0.40.0-2"}]}}'