在Azure Container Service創建Kubernetes(k8s)群集運行ASP.NET Core跨平臺應用程式

来源:http://www.cnblogs.com/chenxizhang/archive/2017/07/24/7226903.html
-Advertisement-
Play Games

引子在此前的一篇文章中,我介紹瞭如何在本地docker環境中運行ASP.NET Core跨平臺應用程式(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起來非常不錯,不是嗎?那麼,如果我們希望真正在實際的生產環境去部署和運行這個應用程式,應該怎... ...


引子

在此前的一篇文章中,我介紹瞭如何在本地docker環境中運行ASP.NET Core跨平臺應用程式(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起來非常不錯,不是嗎?那麼,如果我們希望真正在實際的生產環境去部署和運行這個應用程式,應該怎麼做呢?

通常來說,有兩種方案可以選擇

1. 在目標運行環境(可以是本地的伺服器,也可以是雲端)申請虛擬機,然後啟用docker運行這些應用程式,所有的細節都可以(也必須)由你自己控制。

2. 使用雲平臺的PaaS服務,尤其是支持容器化的雲平臺的PaaS服務,這裡面就包括了Azure Container Service,簡稱ACS。這種情況下,你可以將一些底層的細節工作交給Azure,而將你的精力專註在業務應用上面即可。


ACS簡介

Azure 容器服務讓創建、配置和管理預配置來運行容器化應用程式的虛擬機群集變得更簡單。 它使用熱門開源計劃和業務流程工具的優化配置。 通過此服務,用戶可使用現有技能或利用不斷增加的大量社區專業知識,在 Microsoft Azure 上部署和管理基於容器的應用程式。請參考下麵的鏈接瞭解一些細節,包括快速進行動手實驗

https://docs.microsoft.com/zh-cn/azure/container-service/ 


發佈本地的docker鏡像

其實,不管是你用哪種方案,一個前提條件是將你本地的鏡像發佈到一個公共可以訪問的倉庫。你可以發佈到hub.docker.com,也可以發佈到自己的倉庫。

如果要發佈到hub.docker.com,請參考下麵的步驟

1. 你需要擁有一個Docker ID。請前往https://hub.docker.com/註冊。

2.在本地將鏡像打上自己的tag。例如我的鏡像是mvcapp,我的Docker ID是chenxizhang,那麼要能發佈到Docker Hub的話,這個鏡像需要打上一個Tag,名稱為chenxizhang/mvcapp。請通過這個命令來完成此操作:docker tag mvcapp chenxizhang/mvcapp

你無需擔心,其實打上Tag,只是一個邏輯上面的映射,並不會增加本地的存儲占用空間。

image

3.使用docker login 命令 登陸hub.docker.com

4.使用docker push chenxizhang/mvcapp 這樣的命令,將本地的鏡像推送到hub.docker.com ,這可能需要一定的時間,取決於你的網路配置

如果一切順利的話,你將可以看到如下的結果

image


備註:如果要創建自己的docker 倉庫,可以瞭解  Azure Container Registry 這個服務。(https://azure.microsoft.com/zh-cn/services/container-registry/),這裡不做展開。


在Azure Container Service創建 Kubernetes群集


你可以完全參考這篇入門文章(https://docs.microsoft.com/zh-cn/azure/container-service/container-service-kubernetes-walkthrough),通過幾個簡單的命令創建Kubernetes群集


1. az group create

2.az acs create

3.az acs kubernetes install-cli (這一步是可選的,如果是在azure cloudshell中可以省略)

4.az acs kubernetes get-credentials

5.kubectl get nodes (請等待各個節點的Status值變成Ready)



在k8s群集中部署ASP.NET Core應用程式


我們已經有了一個公共可以訪問的鏡像,同時也有了一個容器的集群。下麵就能看看怎麼樣讓這個應用在k8s群集中部署和運行起來了。

實際上,很簡單。(當然,這隻是入門級的演示,每個命令都還有很多細節可以調整)


1.通過kubectl run 命令指定要拉取的鏡像,並且通過設置一定的參數將其運行起來。k8s的術語將這個過程稱為創建一個部署(deployment)

kubectl run mvcapp --image chenxizhang/mvcapp --env="ASPNETCORE_URLS=http://+:80"


2. 將這個部署通過某種方式暴露給外部可以訪問

kubectl export deployments mvcapp --port=80 --type=LoadBalance


3.查看服務狀態,直到EXTERNAL-IP有返回具體的值,這就表示容器已經創建並且運行起來了。

kubectl get svc

image

4. 通過這個外部的IP地址就可以訪問到你的應用

image


其他有意思的信息和控制項

如果將應用部署到ACS只是這樣的功能,當然沒有什麼可以值得稱贊的,實際上ACS的最大價值是提供了一個強大的容器運行平臺,它可以幫助開發人員完成很多細節的工作,包括擴展和收縮容器規模等等。下麵是一些有意思的信息和控制項

1. 通過kubectl get deploy可以查看關於每個部署的一些細節信息

image

2.通過kubectl get rs 可以獲取到每個部署相關的複製集(replicas)

image

3.通過kubectl scale 命令可以指定針對某個應用要運行幾個容器

kubectl scale --replicas=3 rs/mvcapp-1456147153

image

備註:實際上在kubectl run的時候,就可以指定要同時運行的容器數量,同時,如果你願意,也可以設置為autoscale(自動擴展)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在使用電腦時,其最大支持的記憶體是由 操作系統 和 硬體 兩方面決定的。 先說一下硬體方面的因素,在電腦中 CPU的地址匯流排數目 決定了CPU 的 定址 範圍,這種由地址匯流排對應的地址稱作為物理地址。假如CPU有32根地址匯流排(一般情況下32位的CPU的地址匯流排是32位,也有部分32位的CPU地址 ...
  • 本文為命令rsync的man文檔翻譯,幾乎所有的選項都翻譯了,另外關於篩選規則部分只翻譯了一部分。由於原文很多地方都比較啰嗦,所以譯文中有些內容可能容易讓國人疑惑,所以我個人在某些地方加上了註釋。若有錯誤之處,盼請指出。 回到系列文章大綱:http://www.cnblogs.com/f-ck-ne ...
  • 本篇為rsync官方推薦文章How Rsync Works的翻譯,主要內容是Rsync術語說明和簡單版的rsync工作原理。本篇沒有通篇都進行翻譯,前言直接跳過了,但為了文章的完整性,前言部分的原文還是保留了。 How Rsync WorksA Practical Overview Foreword ...
  • 1. 首先進入單用戶模式: 1). ubuntu : 上述情況可以在grub界面選擇第二項修複,但沒有grub可以參考: 1、重啟ubuntu,隨即長按shirft進入grub菜單; 2、選擇recovery mode,按"e"鍵進入編輯頁面;如下: 非恢復模式為: 3、將ro recovery n ...
  • 1.先創建一個文件夾用以存放鏡像 2.運行vmware,點擊創建新的虛擬機 3.選擇典型安裝 4. 選擇稍後安裝操作系統 5.選擇客戶機操作系統為Linux,版本為CentOS 64位 6. 選擇一開始創建的用以存放鏡像的文件,並給虛擬機命名 7.選擇磁碟大小,選擇預設20G即可 8.點擊完成 9. ...
  • 做為程式員的我們,經常會要用到文件的上傳和下載功能。到了需要用的時候,各種查資料。有木有..有木有...。為了方便下次使用,這裡來做個總結和備忘。 利用表單實現文件上傳 最原始、最簡單、最粗暴的文件上傳。 前端代碼: 【註意】 1、需要post提交 2、enctype="multipart/form ...
  • 背水一戰 Windows 10 之 控制項(媒體類): 通過處理 Pointer 相關事件實現一個簡單的塗鴉板, InkCanvas 基礎知識 ...
  • 一個基於Entity Framework的自定義分頁,增刪改的通用實現,同時包含Entity的生成,Specification模式,Unit of Work實現。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...