文章大纲
前面的 KubeVirt 所在的集群,为了实验外部网络和使用特定网络进行 VM 迁移,安装了 Multus ,但出现了点意外,Multus 网络没有就绪的情况下,集群重启导致所有 Pod 处于 unkown
的状态。
尝试着卸载 Mutus 进行还原,呃…
还是考虑重新安装 K8S 吧,但从头安装实在是复杂,趁这个机会找一找能快速部署 K8S 的发行版本吧。
最终选定的了 Rancher,因为它非常方便的部署集群,并提供了我所需要的 Multus 网络:
但在部署和安装集群时还是遇到了一些问题,在此记录一下。
安装 Rancher 遇到的问题
根据官网提供的 Docker 方式进行部署,在 Rancher 容器启动后,发现管理 Web 页面迟迟打不开,查看容器日志发现内部的 k3s 没有就绪,无法访问 api 地址。
解决办法是加载所需的模块:
modprobe iptable_filter
modprobe iptable_nat
modprobe iptable_mangle
为了能够重启后依旧生效,可以写入到 /etc/modules-load.d/rancher.conf
中:
iptable_filter
iptable_nat
iptable_mangle
然后对容器进行重启稍等几分钟后,就可以正常访问了。
容器运行时代理的问题
因为有些镜像国内网络无法访问,配置代理是最简单的方式了,通过 Rancher 部署的集群是 RKE2,使用的 Container Runtime 是 containerd 但不是通过 systemd 单元文件运行的。
添加针对容器运行时的代理,需要在 /etc/default/rke2-server
和 /etc/default/rke2-agent
文件中添加以下变量:
CONTAINERD_HTTP_PROXY=http://192.168.121.1:7890
CONTAINERD_HTTPS_PROXY=http://192.168.121.1:7890
CONTAINERD_NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
KubeVirt virt-handler Error
在部署 KubeVirt 时,在每个节点上运行的 virt-handler
Pod 处于失败的状态,日志显示为:
failed to install policy /var/run/kubevirt/virt_launcher.cil - out: "Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/400/virt_launcher/cil:15\nFailed to resolve AST\n/sbin/semodule: Failed!\n", error: exit status 1
解决方法是在每个节点上安装 container-selinux
软件包:
sudo dnf install -y container-selinux.noarch
部署完 Rook 和 KubeVirt 后,很方便在 Rancher 中查看: