向 Kubernetes 低頭?Mesosphere 添加 Kubernetes 支持
1. Mesosphere 向其數據中心操作系統添加 Kubernetes 支持
毫無疑問,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 這樣的容器上運行的工作流。
2. 系列視頻推薦: 面向 IT 專業人員,現代化你的 .Net 應用程序
道客船長為大家推薦一個全新的共五部分的 Docker 的現代化傳統應用(MTA)程序視頻合集,主要針對 Microsoft IT 專業人員。該視頻系列演示如何將. NET 3.5 應用程序從 Windows 服務器遷移到 Windows Docker 容器,并將其部署到云上的可伸縮、高度可用的環境中,而無需對應用程序進行任何更改。
視頻地址:
https://www.youtube.com/playlist?list=PLkA60AVN3hh88hW4dJXMFIGmTQ4iDBVBp
3. Docker 小貼士:如何忽略你的 Docker 鏡像中的文件
以下是從 Docker 鏡像中忽略某些文件和文件夾的方法。這可以讓你只復制你想要的所有內容,而不受其他東西的影響。
在大多數情況下,將應用程序的源代碼復制到 Docker 鏡像中,通常會通過添加COPY src/ dest/或類似于你的 Dockerfile。
這是一個很好的方法,但這也將包括屬于你項目的.git/目錄或/tmp文件夾。這將嚴重影響 Docker 鏡像。
對我們來說非常幸運的是,Docker 可以很簡單的排除你選擇的文件和文件夾。你需要做的是在 Dockerfile 創建一個.dockerignore文件。
在這一點上,它非常類似于.gitignore文件對你git repos的影響。你只需要告訴你想忽略什么。
例如,要忽略 git 目錄和.dockerignore文件本身,便可以創建一個 名為.dockerignore的 文件,然后添加以下行:
- .git
- .dockerignore
刪除特定的編程語言,框架或代碼編輯器的臨時文件也是一個不錯的主意。
4. 使用 Docker 和 MySQL 部署 Mayan EDMS
就實際情況來講,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 是一個優秀的解決方案了吧。
【本文是51CTO專欄機構“道客船長”的原創文章,轉載請通過微信公眾號(daocloudpublic)聯系原作者】