Azure Kubernetes 服务 – 第一天 – 使用 Docker 容器化 ASP.NET Core 应用程序
介绍
曾经有一个单一的软件应用程序时代,整个应用程序被打包并部署在作为单个进程运行的单个服务器上。单体应用程序的架构和软件开发生命周期无疑容易出错,并且无论模块的根本原因与其他应用程序模块无关,单点故障都可能导致整个应用程序宕机。比这更糟糕的可能是硬件故障的情况,最终导致应用程序停止运行,并且 IT 团队参与新基础架构的设置或迁移。
微服务架构的发展是为了克服单体应用程序的情况。微服务一词描绘了一种软件开发风格,它从当代趋势发展到旨在提高大规模开发和管理软件解决方案的速度和效率的实践。微服务更多的是应用一定数量的原则和架构模式,而不是架构。每个微服务独立存在,但另一方面,也都相互依赖。项目中的所有微服务都按照自己的节奏部署在生产环境中,在本地、在云端、独立、并存。
如果组件较少,则可以轻松管理组件,但随着单个应用程序中组件数量的增加,与部署相关的风险也会增加。
随着应用程序开发和部署范式的变化,从单体到微服务再到更高级的,对自动化的需求出现了,其中包括将微组件自动调度到我们的服务器、自动配置、监督和故障处理。不仅部署组合数量增加,而且组件的相互依赖性也增加。这需要负责自动调度、配置、监控、错误处理和扩展的自动化。在容器中托管微服务解决了这个目的,但随之而来的是编排问题。如果微服务需要托管在容器中,它还需要容器的编排。
这正是 Kubernetes 出现的地方。
Kubernetes 不仅使开发团队在应用程序部署方面受益,而且对 DevOps 团队来说也是一个福音,有助于监控和错误处理。Kubernetes 提供了一个抽象层,DevOps 不必担心关注单个应用程序;相反,他们管理和监督 Kubernetes 和其他相关基础设施。
论文
在本文中,我们将演示如何使用 Docker 和 Azure Kubernetes 服务协调整个 ASP.NET Core 应用程序的部署和扩展。整篇文章将分为以下三个部分。
- 学习 Azure Kubernetes 服务 – 第一天:使用 Docker 容器化 ASP.NET Core 应用程序
- 学习 Azure Kubernetes 服务 – 第二天:在本地 Kubernetes 集群上部署 ASP.NET Core 应用程序
- 学习 Azure Kubernetes 服务 – 第三天:将 ASP.NET Core 应用程序部署到 Azure Kubernetes 服务
容器
容器基本上提供了操作系统的隔离。
容器提供轻量级进程和操作系统的隔离。使用虚拟机,硬件可以虚拟化,创建在单个物理机上运行的多个虚拟机,而容器有助于虚拟化操作系统并获得可以为应用程序提供计算服务的操作系统的隔离副本。
Docker
Docker 使容器具有可移植性,并简化了应用程序、相关库依赖项和操作系统本身的打包过程。该便携包可以轻松地在任何其他运行 docker 的机器上运行。在此处了解有关 Docker 的更多信息 。打开 此 URL 并单击从 Docker hub 下载。下载后,登录 Docker 并按照说明安装适用于 Windows 的 Docker。
Kubernetes
Kubernetes 作为一个系统,促进容器化应用程序的部署和管理。Kubernetes 独立工作,无需担心底层基础架构是物理机还是虚拟机。在通过 Kubernetes 部署具有大量组件的应用程序时,它负责为每个组件选择一个服务器并进行部署,并帮助组件与应用程序的所有其他组件进行通信。它提供了底层硬件基础设施的抽象层,并自行管理组件。
Azure Kubernetes 服务 (AKS)
Microsoft Azure 提供 Azure Kubernetes 服务,可简化 Kubernetes 的部署、管理、监控和操作。AKS 管理托管的 Kubernetes 环境,使部署和管理容器化应用程序变得非常容易,而无需任何容器编排方面的专业知识。AKS 通过按需预配、升级和扩展资源来消除运行操作和维护的开销,而无需关闭应用程序。
应用概述
是时候亲身体验 Docker、容器、Kubernetes 和 AKS。我们将创建一个 ASP.NET Core 应用程序并首先使用 Docker 将其容器化,然后部署到 AKS 集群。应用程序的逻辑在这里并不重要,因为我们将使用应用程序只是为了部署应用程序。重点将放在 Docker、容器、Kubernetes 和 AKS 集群上。当应用程序被docker化后,我们将创建一个应用程序的本地镜像来进行本地测试。然后我们将在本地 Kubernetes 集群上部署应用程序,然后我们将相同的应用程序推送到 AKS。安装并运行 docker for Windows 后,转到设置并启用 Kubernetes 的复选框,如下所示。

必备条件
在我们开始之前,有一些先决条件需要处理。连同 Azure 帐户,确保在开发机器上安装了以下内容。
- 适用于 Windows 的 Git。
- .Net Core 2.1 或更高版本。
- Azure CLI
- Azure PowerShell
安装 Azure CLI 后,运行以下命令 (az –version) 以确保 CLI 已启动并正在运行。
ASP.NET Core应用程序
- 打开命令提示符并导航到需要克隆应用程序的文件夹,然后运行命令git clone 。这将克隆本地机器上的代码。
- 执行dotnet run,如下所示。这将运行服务器并告诉服务器正在侦听应用程序的端口,即http://localhost:5000。
- 浏览提供的 URL,即http://localhost:5000。这是一个简单的应用程序,仅显示运行应用程序的主机或容器。目前,它在没有容器的开发 Windows 机器上运行,因此它显示主机的名称,即 3593BH2。
容器化 ASP.NET Core 应用程序
导航到应用程序目录的根目录以查看已创建的 Docker 文件。
此 Docker 文件将用于构建映像。
运行时映像是使用 docker build 命令构建的,如下所示。
确保我们在包含 Docker 文件的目录中,然后运行 docker build 命令,后跟一个点表示 Docker 文件位于当前目录中,并使用 -t 开关指定aks:local.
这将启动构建过程。
构建完成后,运行 docker image list 命令,它会列出一个名为aks:local的全新镜像。
要测试此映像,请运行基于此映像的容器。因此,使用 -d 开关运行 docker run 命令以告诉 Docker 将其作为守护进程运行,并使用“-p”开关将主机上的端口 5000 映射到容器上的本地端口 80,然后,指定图像的名称,即aks:local。
执行命令 docker ps 以查看容器启动和运行。
现在转到浏览器并连接到http://localhost:5000。
我们看到应用程序现在在 docker 容器下运行,因为主机名现在在这里显示了容器的 id。
进一步,让我们删除新创建的容器,如下所示。
结论
本文是了解如何容器化 ASP.NET 应用程序的端到端文章。在下一篇文章中,我们将看到如何将容器化的 ASP.NET Core应用程序部署到本地 AKS 集群。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!