LXD 2.0 系列(二):安裝與配置
這是 LXD 2.0 系列介紹文章的第二篇。
- LXD 入門
- 安裝與配置
- 你的第一個 LXD 容器
- 資源控制
- 鏡像管理
- 遠程主機及容器遷移
- LXD 中的 Docker
- LXD 中的 LXD
- 實時遷移
- LXD 和 Juju
- LXD 和 OpenStack
- 調試,及給 LXD 做貢獻
安裝篇
有很多種辦法可以獲得 LXD。我們推薦你配合最新版的 LXC 和 Linux 內核使用 LXD,這樣就可以享受到它的全部特性。需要注意的是,我們現在也在慢慢的降低對舊版本 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(Personal Package Archive)來安裝:
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, 你的發布版需也要使用比較新的內核(最起碼是 3.13)、比較新的 LXC (1.1.4 或更高版本)、LXCFS 以及支持用戶子 uid/gid 分配的 shadow 文件。
從源代碼編譯 LXD 的最新教程可以在上游 README里找到。
Ubuntu 上的網路配置
Ubuntu 的安裝包會很方便的給你提供一個「lxdbr0」網橋。這個網橋默認是沒有配置過的,只提供通過 HTTP 代理的 IPv6 的本地連接。
要配置這個網橋並添加 IPv4 、 IPv6 子網,你可以運行下面的命令:
sudo dpkg-reconfigure -p medium lxd
或者直接通過 LXD 初始化命令一步一步的配置:
sudo lxd init
存儲後端
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 的配置細節,然後為你配置好 ZFS。
btrfs
如果 ZFS 不可用,那麼 btrfs 可以提供相同級別的集成,但不能正確地報告容器內的磁碟使用情況(雖然配額仍然可用)。
btrfs 同時擁有很好的嵌套屬性,而這是 ZFS 所不具有的。也就是說如果你計劃在 LXD 中再使用 LXD,那麼 btrfs 就很值得你考慮。
使用 btrfs 的話,LXD 不需要進行任何的配置,你只需要保證 /var/lib/lxd
保存在 btrfs 文件系統中,然後 LXD 就會自動為你使用 btrfs 了。
LVM
如果 ZFS 和 btrfs 都不是你想要的,你還可以考慮使用 LVM 以獲得部分特性。 LXD 會以自動精簡配置的方式使用 LVM,為每個鏡像和容器創建 LV,如果需要的話也會使用 LVM 的快照功能。
要配置 LXD 使用 LVM,需要創建一個 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 不會監聽網路。和它通信的唯一辦法是通過 /var/lib/lxd/unix.socket
使用本地 unix 套接字進行通信。
要讓 LXD 監聽網路,下面有兩個有用的命令:
lxc config set core.https_address [::]
lxc config set core.trust_password some-secret-string
第一條命令將 LXD 綁定到 IPv6 地址 「::」,也就是監聽機器的所有 IPv6 地址。你可以顯式的使用一個特定的 IPv4 或者 IPv6 地址替代默認地址,如果你想綁定某個 TCP 埠(默認是 8443)的話可以在地址後面添加埠號即可。
第二條命令設置了密碼,用於讓遠程客戶端把自己添加到 LXD 可信證書中心。如果已經給主機設置了密碼,當添加 LXD 主機時會提示輸入密碼,LXD 守護進程會保存他們的客戶端證書以確保客戶端是可信的,這樣就不需要再次輸入密碼(可以隨時設置和取消)。
你也可以選擇不設置密碼,而是人工驗證每個新客戶端是否可信——讓每個客戶端發送「client.crt」(來自於 ~/.config/lxc
)文件,然後把它添加到你自己的可信證書中心:
lxc config trust add client.crt
代理配置
大多數情況下,你會想讓 LXD 守護進程從遠程伺服器上獲取鏡像。
如果你處在一個必須通過 HTTP(s) 代理鏈接外網的環境下,你需要對 LXD 做一些配置,或保證已在守護進程的環境中設置正確的 PROXY 環境變數。
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
這些命令讓 LXD 修改了它的默認屬性,緩存期替換為 5 天,更新間隔為 24 小時,而且只更新那些標記為自動更新(–auto-update)的鏡像(lxc 鏡像拷貝被標記為 –auto-update
)而不是 LXD 自動緩存的鏡像。
總結
到這裡為止,你就應該有了一個可以工作的、最新版的 LXD,現在你可以開始用 LXD 了,或者等待我們的下一篇博文,我們會在其中介紹如何創建第一個容器以及使用 LXD 命令行工具操作容器。
額外信息
- LXD 的主站在: https://linuxcontainers.org/lxd
- LXD 的 GitHub 倉庫: https://github.com/lxc/lxd
- LXD 的郵件列表: https://lists.linuxcontainers.org
- LXD 的 IRC 頻道: #lxcontainers on irc.freenode.net
如果你不想或者不能在你的機器上安裝 LXD ,你可以試試在線版的 LXD。
作者簡介:我是 Stéphane Graber。我是 LXC 和 LXD 項目的領導者,目前在加拿大魁北克蒙特利爾的家所在的Canonical 有限公司擔任 LXD 的技術主管。
via: https://www.stgraber.org/2016/03/15/lxd-2-0-installing-and-configuring-lxd-212/
作者:Stéphane Graber 譯者:ezio 校對:PurlingNayuki
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive