LXD 2.0 系列(二):安裝與配置
這是 LXD 2.0 系列介紹文章的第二篇。
安裝篇
有很多種辦法可以獲得 LXD。我們推薦你配合***版的 LXC 和 Linux 內(nèi)核使用 LXD,這樣就可以享受到它的全部特性。需要注意的是,我們現(xiàn)在也在慢慢的降低對舊版本 Linux 發(fā)布版的支持。
Ubuntu 標準版
所有新發(fā)布的 LXD 都會在發(fā)布幾分鐘后上傳到 Ubuntu 開發(fā)版的安裝源里。這個安裝包然后就會作為 Ubuntu 用戶的其他安裝包源的種子。
如果使用 Ubuntu 16.04,可以直接安裝:
- sudo apt install lxd
如果運行的是 Ubuntu 14.04,則可以這樣安裝:
- sudo apt -t trusty-backports install lxd
Ubuntu Core
使用 Ubuntu Core 穩(wěn)定版的用戶可以使用下面的命令安裝 LXD:
- sudo snappy install lxd.stgraber
Ubuntu 官方 PPA
使用其他 Ubuntu 發(fā)布版 —— 比如 Ubuntu 15.10 —— 的用戶可以添加下面的 PPA(Personal Package Archive)來安裝:
- sudo apt-add-repository ppa:ubuntu-lxc/stable
- sudo apt update
- sudo apt dist-upgrade
- sudo apt install lxd
Gentoo
Gentoo 已經(jīng)有了***的 LXD 包,你可以直接安裝:
- sudo emerge --ask lxd
使用源代碼安裝
如果你曾經(jīng)編譯過 Go 語言的項目,那么從源代碼編譯 LXD 并不是十分困難。然而注意,你需要 LXC 的開發(fā)頭文件。為了運行 LXD, 你的發(fā)布版需也要使用比較新的內(nèi)核(最起碼是 3.13)、比較新的 LXC (1.1.4 或更高版本)、LXCFS 以及支持用戶子 uid/gid 分配的 shadow 文件。
從源代碼編譯 LXD 的***教程可以在上游 README里找到。
Ubuntu 上的網(wǎng)絡配置
Ubuntu 的安裝包會很方便的給你提供一個“lxdbr0”網(wǎng)橋。這個網(wǎng)橋默認是沒有配置過的,只提供通過 HTTP 代理的 IPv6 的本地連接。
要配置這個網(wǎng)橋并添加 IPv4 、 IPv6 子網(wǎng),你可以運行下面的命令:
- sudo dpkg-reconfigure -p medium lxd
或者直接通過 LXD 初始化命令一步一步的配置:
- sudo lxd init
存儲后端
LXD 提供了幾種存儲后端。在開始使用 LXD 之前,你應該決定將要使用的后端,因為我們不支持在后端之間遷移已經(jīng)生成的容器。
ZFS
我們的推薦是 ZFS, 因為它能支持 LXD 的全部特性,同時提供最快和最可靠的容器體驗。它包括了以容器為單位的磁盤配額、即時快照和恢復、優(yōu)化后的遷移(發(fā)送/接收),以及快速從鏡像創(chuàng)建容器的能力。它同時也被認為要比 btrfs 更成熟。
要和 LXD 一起使用 ZFS ,你需要首先在你的系統(tǒng)上安裝 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 只需要執(zhí)行下面的命令:
- sudo lxd init
這條命令接下來會向你提問一些 ZFS 的配置細節(jié),然后為你配置好 ZFS。
btrfs
如果 ZFS 不可用,那么 btrfs 可以提供相同級別的集成,但不能正確地報告容器內(nèi)的磁盤使用情況(雖然配額仍然可用)。
btrfs 同時擁有很好的嵌套屬性,而這是 ZFS 所不具有的。也就是說如果你計劃在 LXD 中再使用 LXD,那么 btrfs 就很值得你考慮。
使用 btrfs 的話,LXD 不需要進行任何的配置,你只需要保證 /var/lib/lxd 保存在 btrfs 文件系統(tǒng)中,然后 LXD 就會自動為你使用 btrfs 了。
LVM
如果 ZFS 和 btrfs 都不是你想要的,你還可以考慮使用 LVM 以獲得部分特性。 LXD 會以自動精簡配置的方式使用 LVM,為每個鏡像和容器創(chuàng)建 LV,如果需要的話也會使用 LVM 的快照功能。
要配置 LXD 使用 LVM,需要創(chuàng)建一個 LVM 卷組,然后運行:
- lxc config set storage.lvm_vg_name "THE-NAME-OF-YOUR-VG"
默認情況下 LXD 使用 ext4 作為全部邏輯卷的文件系統(tǒng)。如果你喜歡的話可以改成 XFS:
- lxc config set storage.lvm_fstype xfs
簡單目錄
如果上面全部方案你都不打算使用,LXD 依然能在不使用任何高級特性情況下工作。它會為每個容器創(chuàng)建一個目錄,然后在創(chuàng)建每個容器時解壓縮鏡像的壓縮包,并在容器拷貝和快照時進行一次完整的文件系統(tǒng)拷貝。
除了磁盤配額以外的特性都是支持的,但是很浪費磁盤空間,并且非常慢。如果你沒有其他選擇,這還是可以工作的,但是你還是需要認真的考慮一下上面的幾個替代方案。
配置篇
LXD 守護進程的完整配置項列表可以在這里找到。
網(wǎng)絡配置
默認情況下 LXD 不會監(jiān)聽網(wǎng)絡。和它通信的唯一辦法是通過 /var/lib/lxd/unix.socket 使用本地 unix 套接字進行通信。
要讓 LXD 監(jiān)聽網(wǎng)絡,下面有兩個有用的命令:
- lxc config set core.https_address [::]
- lxc config set core.trust_password some-secret-string
***條命令將 LXD 綁定到 IPv6 地址 “::”,也就是監(jiān)聽機器的所有 IPv6 地址。你可以顯式的使用一個特定的 IPv4 或者 IPv6 地址替代默認地址,如果你想綁定某個 TCP 端口(默認是 8443)的話可以在地址后面添加端口號即可。
第二條命令設置了密碼,用于讓遠程客戶端把自己添加到 LXD 可信證書中心。如果已經(jīng)給主機設置了密碼,當添加 LXD 主機時會提示輸入密碼,LXD 守護進程會保存他們的客戶端證書以確??蛻舳耸强尚诺?,這樣就不需要再次輸入密碼(可以隨時設置和取消)。
你也可以選擇不設置密碼,而是人工驗證每個新客戶端是否可信——讓每個客戶端發(fā)送“client.crt”(來自于 ~/.config/lxc)文件,然后把它添加到你自己的可信證書中心:
- lxc config trust add client.crt
代理配置
大多數(shù)情況下,你會想讓 LXD 守護進程從遠程服務器上獲取鏡像。
如果你處在一個必須通過 HTTP(s) 代理鏈接外網(wǎng)的環(huán)境下,你需要對 LXD 做一些配置,或保證已在守護進程的環(huán)境中設置正確的 PROXY 環(huán)境變量。
- 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 發(fā)起的數(shù)據(jù)傳輸都使用 squid01.internal HTTP 代理,但與在 image-server.local 的服務器的數(shù)據(jù)傳輸則是例外。
鏡像管理
LXD 使用動態(tài)鏡像緩存。當從遠程鏡像創(chuàng)建容器的時候,它會自動把鏡像下載到本地鏡像商店,同時標志為已緩存并記錄來源。幾天后(默認 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
這些命令讓 LXD 修改了它的默認屬性,緩存期替換為 5 天,更新間隔為 24 小時,而且只更新那些標記為自動更新(–auto-update)的鏡像(lxc 鏡像拷貝被標記為 –auto-update)而不是 LXD 自動緩存的鏡像。
總結(jié)
到這里為止,你就應該有了一個可以工作的、***版的 LXD,現(xiàn)在你可以開始用 LXD 了,或者等待我們的下一篇博文,我們會在其中介紹如何創(chuàng)建***個容器以及使用 LXD 命令行工具操作容器。