LXD 2.0系列之二:LXD安装和配置


【编者的话】第三方调查报告显示LXD有潜质成为一款受欢迎的第三方容器管理工具。本文是LXD核心维护者、加拿大程序员Stéphane Graber有关LXD连载博文的第二篇。

containers.png


[LXD 2.0系列开篇:是时候讨论LXD的一切了]
[LXD 2.0系列之一:LXD简介]
[LXD 2.0系列之二:LXD安装和配置]
[LXD 2.0系列之三:你的第一个LXD容器]
[LXD 2.0系列之四:资源管理]
[LXD 2.0系列之五:镜像管理]
[LXD 2.0系列之六:远程主机和容器迁移]
[LXD 2.0系列之七:LXD中的Docker]
[LXD 2.0系列之八:LXD中的LXD]
[LXD 2.0系列之九:在线迁移]
[LXD 2.0系列之十:LXD和Juju]
[LXD 2.0系列之十一:LXD和OpenStack]
[LXD 2.0系列之十二:调试和改进LXD]

LXD 2.0系列的第二篇博文,关于LXD的安装和配置。

如何下载LXD及安装

很多的办法可以得到最新的LXD。我们推荐使用最新的LXC和Linux内核,因为这可以使用到它所有的功能,当然我们也会尽可能地通过谨慎的降级来支持老的Linux发行版。

通过Ubuntu档案

LXD所有新的版本,在上游版本发布后的几分钟内,会上传和发布Ubuntu开发版本。其中有一个包会为Ubuntu用户记录关联包的来源。

如果你使用的是Ubuntu开发版本(16.04),那么你可以简单执行:


sudo apt install lxd
如果运行的是Ubuntu 14.04,我们有向后兼容的版本供你使用:


sudo apt -t trusty-backports install lxd

通过Ubuntu Core

Ubuntu Core稳定版的用户可以这么来安装LXD:


sudo snappy install lxd.stgraber

通过官方 Ubuntu PPA

Ubuntu其他发行版本的用户,比如Ubuntu 15.10,可以通过PPA(个人包档案)来找到LXD:


sudo apt-add-repository ppa:ubuntu-lxc/stable
sudo apt update
sudo apt dist-upgrade
sudo apt install lxd

通过Gentoo档案

Gentoo也维护着最新的LXD包,你可以这么来安装:


sudo emerge --ask lxd

通过源码

如果你过去编译过Go语言项目的话,从源码来编译LXD并不难。需要注意的是,你将会依赖LXC开发版本的头文件做这个事。为了让LXD在系统中跑起来,你的反应版也必须是最近的Linux内核(至少3.13),LXC(1.1.5或更高版本),LXCFS以及相应的shadow程序,来支持用户id或组id的分配。

源码编译LXD的最新说明,可以在上游的README中找到。

存储方式

LXD支持很多存储方式。在使用LXD之前,你最好了解一下你使用的存储方式有哪些,我们目前不支持将现有的容器或者镜像在多个存储方式中迁移。

这儿有一张有关不同存储方式的功能比较表。

ZFS

我们推荐使用ZFS,因为它能支持LXD为提供最新最稳定的容器服务所需的所有功能,为每个容器提供包括:磁盘配额,即时快照/回滚,经过优化的迁移(发和收),以及快速从镜像中创建容器。而且技术上,它比btrfs要更成熟。

LXD搭配ZFS使用,你的系统必须先支持ZFS。

如果使用的是Ubuntu 16.04,简单地,这么安装:


sudo apt install zfsutils-linux
Ubuntu 15.10,可以这么安装:


sudo apt install zfsutils-linux zfs-dkms
对于老版本,你可以通过zfsonlinux PPA:


sudo apt-add-repository ppa:zfs-native/stable
sudo apt update
sudo apt install ubuntu-zfs
配置LXD,简单地,执行:


sudo lxd init
这个程序会询问有关zfs配置的问题,根据的回应帮你做相应的配置。

btrfs

如果没有合适的ZFS,btrfs也可以提供差不多的功能,除了一点,它不能准确地报告容器中磁盘的使用情况(磁盘配额的功能就无法支持了)。btrfs也有一个自己的特色,支持嵌套,ZFS还没有这个功能。也就是说,如果你打算在LXD中使用LXD,btrfs值得考虑。

使用btrfs,LXD中不需要做任何配置,你只要确认/var/lib/lxd在btrfs文件系统中已经存在,LXD会自动使用。

LVM

如果ZFS和btrfs都不是你的选择的话,你仍然可以使用LVM来获得一些类似的功能。LXD需要LVM的这些功能:精简资源调配(thin provisioning),为每个镜像和容器创建逻辑分区,使用LVM快照。

使用LVM需配置LXD,创建一个LVM卷组:


lxc config set storage.lvm_vg_name "THE-NAME-OF-YOUR-VG"
默认地,LXD为所有的逻辑卷使用ext4作为默认的文件系统。当然你可以把它改成你想要的XFS:


lxc config set storage.lvm_fstype xfs

简单文件目录的形式

如果上述都不是你的选项,LXD仍然能工作,不过会缺失这些高级功能。会简单地为每个容器创建一个目录,将镜像的压缩文件解开,当需要对容器进行复制或快照时,就做一个全文件系统的复制。

这些高级功能中,除了磁盘配额外都会支持。不过,会很浪费磁盘空间,而且读写速度也会很慢。如果你没有其他的选择,它还是能工作,不过你最好真的考虑一下上述其他的方式。

更多的配置项

这儿有一份LXD守护进程完整的配置项列表。

网络配置

默认地,LXD不会监听网络。唯一和它通信的方法就是通过本地Unix套接字/var/lib/lxd/unix.socket。

如果想使它监听网络,有两种键值需要设置:


lxc config set core.https_address [::]
lxc config set core.trust_password some-secret-string
第一键值,将LXD绑定在::的IPv6地址上,即,本机所有地址。显然你可以将它换成一个IPv4或IPv6的地址,也可以增加你需要的TCP端口(默认是8443)。

第二个键值,设置了一个密码,用于远端客户端将它们自己加到LXD证书信任库中。当增加LXD主机时,会提示输入密码,如果密码符合,LXD守护进程将会存下客户端的证书,把它们列为可信任的,以后就不再需要密码了(当然也可密码也可修改和重置)。

你也 可以选择不设置密码,让每个客户端给你他们的证书文件client.crt(存于~/.config/lxc目录中),手动把每一个客户端加入到信任列表:


lxc config trust add client.crt

代理设置

大多数情况下,你将需要LXD从远端服务器取一些镜像。

如果你的环境中,必须通过一个HTTP(s)的代理才能访问外面的网络,你会想做一些设置,或者通过标准的代理环境变量,设置在LXD守护进程中。


lxc config set core.proxy_http http://squid01.internal:3128
lxc config set core.proxy_https http://squid01.internal:3128
lxc config set core.proxy_ignore_hosts image-server.local
有了这些,LXD的所有流量都会使用squid01.internal这个HTTP代理,除了访问image-server.local的服务器。

镜像管理

LXD支持动态镜像缓存。从一个远端的镜像创建容器时,它会下载这个镜像到本地,将它标记为缓存,并记录它的来源。如果一段时间没有被使用(默认是10天),缓存的镜像就会被自动删除。每几个小时(默认是6),LXD也会去查看是否有新的版本,然后更新本地的镜像缓存。

所有这些,都可这么来配置:


lxc config set images.remote_cache_expiry 5
lxc config set images.auto_update_interval 24
lxc config set images.auto_update_cached false
这样我们就可以修改所有这些的默认值,未被使用的缓存镜像最多存在5个小时,并且每24小时去检查镜像是否有更新,只有那些有(--auto-update)标记的镜像才会被LXD更新。

结论

现在,你应该有最新的LXD工作版本,就可以开始使用,或者等待下一个博客帖子里,我们将用LXD命令行工具创建我们第一个容器。

参考文献



如果你等不及未来的博文,就想尝试LXD,你可以在网上根据我们的指导,通过浏览器免费在线试用LXD

原文链接:LXD 2.0: Introduction to LXD [2/12](翻译:Henry Huang )

==================================================
译者介绍
Henry Huang,供职于AWS,曾负责集群运维的工作。

0 个评论

要回复文章请先登录注册