lala.im:甲骨文ARM机安装LXD开小鸡

運維技術·lala.im · 2021-06-03 · 108 人浏览

原文地址:https://lala.im/7919.html,請支持原作者!該處僅作轉載。

众所周知,甲骨文的ARM机有24G内存,这么大内存不如生点小鸡玩。而且甲骨文重装系统什么的比较麻烦,开小鸡可以用来随便折腾,不怕把宿主机搞坏了。
本来打算在上面折腾下kvm套娃的,后来发现母鸡没开嵌套虚拟化,那就没戏了。只能玩玩容器虚拟化了。
不过说实话,这个LXD用起来还真挺舒服的,后面详细说说。这里先把配置步骤记录一下。
咱用的系统是Debian10,如果你用的是别的系统,可以先按这篇文章重装一个:https://lala.im/7905.html
装snapd,然后用snap安装lxd:

apt -y update
apt -y install snapd
snap install lxd

注:安装完之后退出终端,重新登录一次。
执行下面的命令初始化:

lxd init

整个流程如下,除了存储后端的配置选择dir,其他的全部回车保持默认即可:

Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (ceph, btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like the LXD server to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

[重要]如果你的机器上安装了docker,docker往iptables里面自动添加的规则会导致lxd的容器没网,执行下面的命令修复:

iptables -A FORWARD -o lxdbr0 -j ACCEPT
iptables -A FORWARD -i lxdbr0 -j ACCEPT

如果要删除上面的规则:

iptables -D FORWARD -o lxdbr0 -j ACCEPT
iptables -D FORWARD -i lxdbr0 -j ACCEPT

现在就可以开一台小鸡了,首先查找你需要的系统镜像,这里我以opensuse为例:

lxc image list images: | grep opensuse

选择一个镜像创建小鸡,格式如下:

lxc launch images:[发行版]/[版本号]/[架构] [实例名]

比如说开一个opensuse15.2:

lxc launch images:opensuse/15.2/arm64 opensuse

进入你的小鸡:

lxc exec opensuse bash

简单测试一下网络:

範例
下面是一些常用的管理命令:

lxc list # 列出所有小鸡的运行状态
lxc storage list # 列出存储信息
lxc start opensuse # 启动
lxc stop opensuse # 停止
lxc restart opensuse # 重启
lxc delete opensuse # 删除

你也可以限制小鸡的cpu和内存使用:

lxc config set opensuse limits.cpu=2 # 限制cpu
lxc config set opensuse limits.memory=512MB # 限制内存
lxc config unset opensuse limits.cpu # 解除cpu限制
lxc config unset opensuse limits.memory # 解除内存限制

这里介绍一个lxd非常牛逼的功能,它可以把小鸡内的服务直接暴露出来。例如我在opensuse小鸡内先起一个nginx:

zypper in nginx
systemctl start nginx

然后在宿主机上执行如下命令,添加一个名为nginx的proxy设备:

lxc config device add opensuse nginx proxy listen=tcp:0.0.0.0:55555 connect=tcp:127.0.0.1:80

检查宿主机的55555端口:

curl -I localhost:55555

可以看到nginx服务的回显:

HTTP/1.1 403 Forbidden
Server: nginx/1.16.1
Date: Thu, 03 Jun 2021 12:20:31 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive

列出你给当前小鸡添加的设备:

lxc config device list opensuse

如果要删除刚才添加的proxy设备:

lxc config device remove opensuse nginx

文章最后,说说为啥我说lxd其实很好用。首先是安装用snap很简单,配置起来基本也是一路回车即可。。。
而且官方还提供了大量的系统镜像,几乎涵盖所有的linux发行版。。可以说你想用哪个,拉一个镜像下来启动就行了。并且还支持快照,可以随时给机器打快照。。
从lxd4.0开始其实还支持真正意义上的小鸡:虚拟机。基于kvm的。不过由于甲骨文的母鸡没嵌套我就没折腾了。

運維技術 lala.im
Theme Jasmine by Kent Liao