向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27

DaoCloud發表於2017-09-11

向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27

1.Mesosphere 向其資料中心作業系統新增 Kubernetes 支援

2.系列視訊推薦: 面向 IT 專業人員,現代化你的 .Net 應用程式

3.Docker 小貼士:如何忽略你的 Docker 映象中的檔案

4.使用 Docker 和 MySQL 部署 Mayan EDMS


➤ Mesosphere 向其資料中心作業系統新增 Kubernetes 支援

向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27

毫無疑問,Kubernetes 現如今是容器編排領域的領軍者。Mesosphere,是最早採用容器技術的致力於讓企業在雲上執行其大資料和分析工作負載,於 9 月 6 日宣佈,支援Kubernetes 在其 DC / OS 平臺上執行雲上的大資料應用程式。由於 Mesosphere 長期以Marathon 的形式為 DC / OS 和 Apache Mesos 提供了自己的容器編排工具,這一公告將會讓許多人感到非常驚訝。

Kubernetes 作為計劃於 9 月 11 日推出的 DC/OS 1.10 版本的一部分,將在 beta 版中被提供。有分析指出,這意味著“Mesosphere 向 Kubernetes 低頭”。但這一說法遭到了 Mesosphere 聯合創始人兼執行長 Florian Leibert 和 首席營銷官 Peter Guagenti 的強烈否認,他們強調,這樣的做法為 Mesosphere 的大型企業客戶提供了更多的選擇。Guagenti 表示:“我們的客戶往往是大型公司的基礎架構和實施運營的專業人員,他們為數以百計的開發人員提供服務。”“對他們來說,他們提供的最重要的東西是選擇的自由。”

Leibert 認為, 提供對 Kubernetes 作為容器編排引擎的支援與提供對多個資料服務、連續整合平臺和網路工具的支援沒有什麼不同。Guagenti 還強調, 重要的是要記住, 對於 Mesosphere 的客戶來說, 平臺不是關於容器的, 而是關於部署和管理資料密集型應用程式。

Leibert 還指出, Marathon 和 Kubernetes 有不同的使用用例, 因為 Marathon 也可以用來執行沒有容器技術的遺留應用程式, 而 Kubernetes 顯然只專注於容器。"因此, 我們很自然地支援這兩者," Leibert 說。"如同這樣的技術真的像一層層的蛋糕。Kubernetes 和 Mesos 可以很好地進行合作。Kubernetes 接管了容器的工作流, 但它不能處理通常不在像 Hadoop 這樣的容器上執行的工作流。


➤ 系列視訊推薦: 面向 IT 專業人員,現代化你的 .Net 應用程式

向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27

道客船長為大家推薦一個全新的共五部分的 Docker 的現代化傳統應用(MTA)程式視訊合集,主要針對 Microsoft IT 專業人員。該視訊系列演示如何將. NET 3.5 應用程式從 Windows 伺服器遷移到 Windows Docker 容器,並將其部署到雲上的可伸縮、高度可用的環境中,而無需對應用程式進行任何更改。

視訊地址:
www.youtube.com/playlist?li…


➤ Docker 小貼士:如何忽略你的 Docker 映象中的檔案

向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27

以下是從 Docker 映象中忽略某些檔案和資料夾的方法。這可以讓你只複製你想要的所有內容,而不受其他東西的影響。

在大多數情況下,將應用程式的原始碼複製到 Docker 映象中,通常會通過新增COPY src/ dest/或類似於你的 Dockerfile。

這是一個很好的方法,但這也將包括屬於你專案的.git/目錄或/tmp資料夾。這將嚴重影響 Docker 映象。

對我們來說非常幸運的是,Docker 可以很簡單的排除你選擇的檔案和資料夾。你需要做的是在 Dockerfile 建立一個.dockerignore檔案。

在這一點上,它非常類似於.gitignore檔案對你git repos的影響。你只需要告訴你想忽略什麼。

例如,要忽略 git 目錄和.dockerignore檔案本身,便可以建立一個 名為.dockerignore的 檔案,然後新增以下行:

.git
.dockerignore複製程式碼

刪除特定的程式語言,框架或程式碼編輯器的臨時檔案也是一個不錯的主意。


➤ 使用 Docker 和 MySQL 部署 Mayan EDMS

向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27

就實際情況來講,Python 應用(比如說 Django 應用)存在打包、分發起來比較複雜的問題。因此我們在這裡介紹一個使用 Docker 打包的解決方案。希望在您看完這篇部落格之後能夠明白為什麼使用 Mayan 建立映象是一個優秀的解決方案。Docker的包裝理念是,每個容器應該只執行一個功能。這被稱為“應用分離”,它使得對應用的特定部分的擴充套件變的相當容易。遵循這一理念,Mayan EDMS 映象只包含例項執行所需要的最小條件。也就是說,改映象包含:Mayan EDMS,網路伺服器(NGINX),用於為後臺任務移動訊息和儲存結果的 broker,和一個流程管理器。

要使用 MySQL 安裝 Mayan EDMS Docker,我們將使用兩個容器:一個用於 MySQL,一個用於 Mayan。通常,程式通過配置或“ini”檔案進行配置,但是 dockerized 程式的理念是通過環境變數配置容器。以下是要遵循的步驟。

Step 1

Docker 容器是相互隔離的,這意味著任務執行、檔案訪問和網路訪問的相互隔離。為了讓我們的兩個 Docker 容器能夠相互通訊,我們需要為他們建立一個網路。為此,我們使用命令:

docker network create mayan -d bridge複製程式碼

這建立了一個bridge網路,一種簡單的網路型別,用於連線主機而無需路由。我們把這個網路叫做mayan。我們使用這個網路部署我們的容器,以便它們互相訪問,就像它們是區域網(LAN)中唯一的兩臺計算機一樣。 Docker 最近新增了對動態域名的支援,這意味著我們可以通過名稱引用容器,而不僅僅是 IP 地址。

Step 2

如上所述,我們將使用環境變數來配置容器。由於我們將傳遞幾個變數,啟動容器的命令列將會有點長,容易出現資料輸入錯誤。對於這些情況,Docker 允許我們在檔案中定義這些環境變數,並在啟動容器時傳遞檔名。我們現在來建立名為envfile的環境配置檔案:

# MySQL container
MYSQL_ROOT_PASSWORD=mysql_root_password
MYSQL_PASSWORD=mayan_password
MYSQL_DATABASE=mayan_db
MYSQL_USER=mayan_user

# Mayan container
MAYAN_DATABASE_DRIVER=django.db.backends.mysql
MAYAN_DATABASE_NAME=mayan_db
MAYAN_DATABASE_USER=mayan_user
MAYAN_DATABASE_PASSWORD=mayan_password
MAYAN_DATABASE_HOST=mayan-mysql
MAYAN_DATABASE_PORT=3306複製程式碼

第一組變數配置 MySQL 容器以在啟動時建立資料庫,建立一個使用者並授予其對該資料庫的所有許可權。第二組變數配置 Mayan 容器以使用指定的憑據來訪問資料庫容器,從 Mayan 的角度來看,它是網路中的另一個主機,在這種情況下,這個主機將被稱為 mayan-mysql。這只是告訴 Mayan 在訪問資料庫時使用哪個 Django 資料庫驅動程式。

Step 3

現在我們繼續使用命令列建立和啟動第一個容器,MySQL 容器:

docker run -d --name mayan-mysql --restart=always --env-file envfile -v mayan_mysql:/var/lib/mysql --net=mayan mysql:latest複製程式碼

該命令使 Docker 建立並執行一個名為mayan-mysql的容器,每次停止(掛起或主機重新啟動)時都會重新啟動,使用檔案envfile進行配置,它將從目錄/var/lib/mysql轉換成持久化的 Docker 儲存(稱為卷),名為mayan_mysql。它使用mayan網路,並使用最新的官方MySQL Docker映象。

您可以使用命令初始化容器的日誌檔案:

docker logs mayan-mysql複製程式碼

Step 4

最後我們使用以下命令啟動Mayan容器:

docker run -d --name mayan-edms --restart=always --env-file envfile -v mayan_data:/var/lib/mayan --net=mayan -p 80:80 mayanedms/mayanedms:2.6.4-3複製程式碼

該命令使Docker建立並執行一個名為mayan-edms的容器,每次停止時都會重新啟動。它將使用檔案envfile進行配置,把資料從目錄/var/lib/mayan持久化到稱為mayan_data的卷(volumn)中。它會將其內部埠 80(HTTP)作為 80 埠暴露給外界,使用mayan網路,並使用官方Mayan EDMS Docker映象的 2.6.4-3 版本。

使用以下方式檢查容器的日誌:

docker logs mayan-edms複製程式碼

您應該看到建立資料庫的容器,並執行所有需要的初始化。幾分鐘後,您將可以瀏覽到執行容器的機器上 80 埠的 localhost(或127.0.0.1),並正常使用 Mayan。由於容器是使用--restart = always選項啟動的,因此下次啟動主機時不需要執行任何操作。

將以上打包步驟與 Mayan EDMS(或任何 Django 專案)的“裸機”生產部署所需的步驟數量進行比較,你就明白為什麼 Docker 是一個優秀的解決方案了吧。

這一期的『航海日誌』就到這裡,下期再浪~


參考連結


作者介紹

莫非 Beck:DaoCloud 微服務攻城獅,吃飽了就困的一流段子手。

劉璽元 Boring:DaoCloud 市場部門(偽)萌新程式猿。


Discussion | 你對今天的哪條新聞最感興趣?

  • 你對今天的哪條新聞最感興趣?你有什麼獨到的見解?

  • 本週你還有什麼更具爆炸性的容器圈新聞嗎?歡迎在留言區爆料!


向 Kubernetes 低頭?Mesosphere 新增 Kubernetes 支援|航海日誌 Vol.27


相關文章