instance 網卡是如何被拉起來的?- 天天5分鐘玩轉 OpenStack(172)

instance 的網卡是如何被配置並拉起的?這是理解和用好 cloud-init 很是關鍵的一步。咱們先討論一個最簡單基礎的場景:鏡像中沒有安裝 cloud-init。ubuntu

此時 instance 啓動時網卡能不能被拉起來徹底 靠運氣!是的,就是運氣。centos

由於這種狀況下網卡的配置是死的,徹底依賴於鏡像中 /etc/network/interfaces 原有的配置。好比原鏡像中的配置是:

auto eth0
iface eth0 inet dhcp

instance 只有知足下面全部條件網卡才能被拉起來:網絡

  1. 正好只有一塊網卡spa

  2. 正好網卡就叫 eth0操作系統

  3. 正好 subnet 開了 DHCPcode

只要出現下面任意一種狀況就會失敗:ip

  1. 還有其餘網卡,好比 eth1,或者部署

  2. 網卡不叫 eth0 ,好比 ens3,或者get

  3. 沒有 DHCPit

不一樣 instance 的網絡配置差異很大,在 image 中寫死的方法幾乎是無效的,只能依靠 cloud-init 動態寫入,接下來咱們詳細分析 cloud-init 的解決方案。

dhcp

先考慮 subnet 有 DHCP 服務的狀況。

咱們使用的鏡像是 ubuntu 的 cloud image,已經預裝的 cloud-init,下載地址爲 http://cloud-images.ubuntu.com/ ,國內鏡像http://mirrors.ustc.edu.cn/ubuntu-cloud-images/

部署成功後,登陸 instance,ip a 顯示網卡 ens3 已經正確配置。


 

41.png

下面分析這個 IP 是怎樣配置上去的。

上一節咱們討論到,cloud-init 是在 local 階段完成網絡配置的,cloud-init 的執行過程被詳細記錄在 /var/log/cloud-init.log 中,讓咱們找找相關操做。

這裏能夠看到,cloud-init 會作以下工做:

① 掃描出 instance 中的全部網卡(這裏是 ens3)

② 獲取該網卡的配置信息。 由於沒有 config drive,沒法得知網卡的詳細配置信息,只能採用默認的 fallback 配置,即 dhcp 配置。

③ 將配置信息寫入 /etc/network/interfaces.d/50-cloud-init.cfg,內容爲:

這樣網卡就以 dhcp 模式拉起來,正好與 subnet 的 dhcp 服務對接上,IP、網關等信息就配上去了。

幾點說明:

  1. instance 上的每一塊網卡都會被 cloud-init 掃描出來。

  2. 若是沒有 config drive 將採用 fallback 配置,將掃描出來的第一塊 (只有這一塊)網卡配置成 dhcp 模式。請注意:這是 cloud-init 默認行爲,跟這塊網卡對應的 subnet 是否開啓了 DHCP 沒有任何關係。

  3. cloud-init 會根據 instance 操做系統類型生成網卡配置文件。例如操做系統是 centos 的話則會將配置寫到 /etc/sysconfig/network-scripts 目錄下。

如今請你們思考一個問題:若是 subnet 沒有開 DHCP,會是怎樣一個狀況?下節將分析這個問題。

相關文章
相關標籤/搜索