在Google Compute Engine 上建立一個免費的VM - GitHub Pages

文章推薦指數: 80 %
投票人數:10人

啟用GCP 的時候,Google 會給你一個免費的額度。

建議你可以在使用一段時間後進入“帳單” 的頁面看看這個額度有沒有被扣款。

藉此確保你一直 ... 在GoogleComputeEngine上建立一個免費的VM CreateafreemicroVPSonGoogleComputeEngine 前言 為了測試手邊的LTECAT-M1模組,我需要一台有publicIP的測試主機與之溝通。

大多時候你可以使用ngrok這樣的服務來進行這種測試,但ngrok目前似乎不支援我需要的UDP協定穿透。

所以得真的去好好研究一下這種VM服務了。

AmazomAWS和GoogleCloudPlatform(GCP)都有提供這樣的服務,最後選擇GCP的原因是在一些條件下能符合免費方案的條件。

如果只是為了短期的測試而使用是很方便的。

關於GoogleComputeEngine 你只要有gmail帳號,你就可以用這個帳號進入GCP的主控台操作 你可以把GCP想像成一個提供各種服務的平台商,你可以在GCP上購買各種不同的服務,我們今天要用的VM是隸屬於“ComputeEngine(GCE)”的服務。

廢話我就不多說,直接操作吧。

建立VM 建立專案 GCP上面有很多服務/資源可以使用,GCP的使用邏輯是–你要先建一個專案,然後將你要使用的服務掛在這個專案下面。

假如你是第一次進入這個畫面,注意上方藍色列的“選取專案”下拉選單,選單裡面可能是空的。

當你點選左邊選單的“VM執行個體”(翻譯很爛==)時,右邊內容頁會提示你得先建立一個專案。

下面的示範中,我建立了一個名為“test-VM”的專案。

然後你需要等個幾分鐘,讓系統啟用ComputeEngine… 有了專案後,你就可以在這個專案中建立一個VM。

按下“建立” 選擇Region GCP在很多國家都有建立機房,理論上我們應該選擇離台灣最近的比較好,但是因為想使用免費方案,而免費的方案中限制只能使用這三個區域的主機: us-central1 us-east1 us-west1 以下是GCE免費方案的條件: 你當然可以去ping這三個region的主機位址,然後根據TTL的時間決定使用哪一個,但如果你不知道主機位置的話,根據地理概念,美西應該會離台灣近一點,所以我這邊將會選擇使用us-west1。

us-west1還分為a,b,c三區,差別是支援不同的VM,例如a,b區可建立支援GPU的VM,c區就沒有了。

但是如果想使用免費方案的話,本來就沒有GPU可以用XD所以其實沒差。

VM基本設定 這邊是主要設定的部分,如果想使用免費方案,你需要注意: 區域使用us-west1 機器使用N1系列中的f1-micro類型 開機磁碟使用30GB以下 因為我只是要測試,就沒有動磁碟的部份了,維持它是預設的10GB。

但是作業系統可以改,點選“變更”。

有ubuntu18.04LTS可以使用。

VM其他設定 其他就看你想啟用什麼就打勾。

最底下有五個設定tabs,以下截圖給大家看。

根據需求自訂即可。

管理: 安全性: 磁碟: 網路: 單獨租用: 基本上我幾乎都使用預設的設定。

如果沒什麼問題就按“建立”,然後等待VM建立並啟用。

VM啟用後,你可以看到GCE會給你的VM配一個publicIP,VM預設的防火牆規則沒有阻擋ICMP,所以你可以在host主機上使用ping測試看看: 一旦VM被建立了,通常我們會希望能透過shell操作主機,如果你想要使用ssh連線,你首先需要做的事情就是設定金鑰。

設定金鑰 你需要在左邊的選單中選擇“中繼資料”,然後在右邊內容頁中的“安全殼層金鑰”(什麼翻譯==)中“新增SSH金鑰”。

在你需要連線的主機上以ssh-keygen產生key-pair,然後將~/.ssh/id_rsa.pub的公鑰內容貼在設定欄位中。

如下圖所示。

這邊注意一點,你的pub-key後面會帶host主機的使用者名稱(ex:andrew),最終當你連線GCE的VM時,需要使用這個名稱,而不是gmail的username。

後面的示範會說明。

新增完後的樣子,注意使用者名稱的欄位是host主機的username,而非gmail的帳號名稱。

SSH連線 真正可以用的ssh指令是:ssh-i@ 你可以看到以下一些嘗試錯誤時的錯誤訊息: 私鑰的位置在~/.ssh/id_rsa,username必須是剛剛金鑰設定頁面中所顯示的使用者。

以下是連線成功的畫面: 一旦連線成功,你就在publicIP網段上有一台測試主機可以使用啦!! 防火牆開port 為了系統安全考量,GCE所提供的VM預設會阻擋很多port。

當你的測試需求必須使用特定的port時,需要自行設定防火牆規則。

雲服務商通常都會提供簡易的網頁設定介面讓使用者設定。

以下示範“開啟VM上的UDP1701port”的步驟。

在GCP首頁的左邊選單點選“VPC網路”然後進入“防火牆”設定頁面中點選“建立防火牆規則” 然後就依照下圖的設定,設定輸入方向來自所有IP–0.0.0.0時 允許UDP1701port通行。

然後點選“建立” 這樣就完成了! Netcat測試 你可以使用nc的指令做測試,在VM主機上(左視窗)以nc指令開啟一個監聽UDP1701port的程序。

當host端(右視窗)對VM的publicip送出UDP訊息的時候,VM端就會收到訊息,代表這整段是通的。

當然,如果你在上一個步驟中沒有設定防火牆規則,這邊就會失敗。

CLI工具 理論上GCEVM給你的publicIP應該不會是永遠固定的,如果你嫌每次都得要進入GCP頁面中才能查到IP很麻煩,你可以考慮使用GCP提供的CLI工具–gcloud。

設定及安裝方法請參考官方文件:Quickstart:GettingstartedwithCloudSDK。

原則上只需要安裝一些套件,然後執行gcloudinit選擇專案名稱後就可以使用了。

以下是使用gcloudcomputeinstanceslist列出所有VM的資訊,該指令的輸出就可以帶出publicIP資訊了。

使用CloudShell GCE的頁面還提供了一個稱為CloudShell的CLI環境。

它是一個將shell畫面嵌入網頁的CLI介面。

點選選單上的圖示啟用即可 你會馬上進入一個以你gmail帳號為username的家目錄下。

你可以使用sudo操作指令,甚至是以apt安裝套件。

我原本以為CloudShell會連線到你所建立的VM但似乎不是,它像是一個獨立運作的VM。

老實說我不是很清楚為何需要CloudShell,我能想像的使用時機是當你不想安裝gcloud在你的主機上,又想透過gcloud操作GCP時,就可以使用這個環境。

關於收費問題 啟用GCP的時候,Google會給你一個免費的額度。

建議你可以在使用一段時間後進入“帳單”的頁面看看這個額度有沒有被扣款。

藉此確保你一直都在符合免費的限制下使用GCE。

~END~



請為這篇文章評分?