部署应用程序

本文介绍如何在 Kubernetes 群集上部署容器化应用程序。

先决条件

若要开始,请设置 单台计算机 Kubernetes完整的 Kubernetes 群集。

部署示例 Linux 应用程序

步骤 1:更新清单文件

本文使用一个示例应用程序,该应用程序是一个由前端和后端组成的简单投票应用,该应用基于 Microsoft 的 azure-vote-front 映像。 此应用程序的容器映像托管在 Azure 容器注册表 (ACR) 上。 有关部署清单,请参阅 GitHub 存储库包中的 linux-sample.yaml 。 在 YAML 中,我们将标记 nodeSelector 指定为 Linux

步骤 2:部署应用程序

若要部署应用程序,请使用 kubectl apply 命令。 此命令分析清单文件并创建定义的 Kubernetes 对象。 指定 YAML 清单文件,如以下示例所示:

kubectl apply -f  https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml

步骤 3:验证 Pod

等待几分钟,让 Pod 处于 运行 状态:

kubectl get pods -o wide

显示正在运行的 Linux Pod 的屏幕截图。

步骤 4:验证服务

若要监视进度,请使用 kubectl get services 命令和 --watch 参数:

kubectl get services

显示正在运行的 Linux 服务的屏幕截图。

最初, EXTERNAL-IP 服务的 azure-vote-front 显示为 pending。 当 EXTERNAL-IP 地址从 pending 更改为实际公共 IP 地址时,可以使用分配给服务的 IP 地址。

重要

在单台计算机群集上,如果在未指定 -ServiceIPRangeSize的情况下部署了 Kubernetes 群集,则不会为工作负荷服务分配 IP,并且没有外部 IP 地址。 在这种情况下,请查找 Linux VM (Get-AksEdgeNodeAddr) 的 IP 地址:

Get-AksEdgeNodeAddr -NodeType Linux

现在可以将外部端口追加到 VM 的 IP 地址 (例如 192.168.1.12:30432) 。

步骤 5:测试应用程序

若要查看应用程序的实际效果,请打开 Web 浏览器,以转到服务的外部 IP 地址:

显示正在运行的 Linux 应用的屏幕截图。

如果应用程序未加载,则可能是由于映像注册表存在授权问题。 若要查看容器的状态,请使用 kubectl get pods 命令。 如果无法检索容器映像,请参阅使用来自 Azure Kubernetes 服务 的Azure 容器注册表进行身份验证

步骤 6:删除应用程序

若要清理,请使用以下命令删除所有资源:

kubectl delete -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml

将示例 Windows 应用程序部署到群集

此示例基于 Microsoft 的示例映像 ASP.NET 应用程序 运行示例。 请参阅 win-sample.yaml。 YAML 将 nodeSelector 标记指定为 Windows

步骤 1:通过指定 YAML 清单的名称来部署应用程序

请确保位于 PowerShell 窗口中 YAML 的目录中,然后运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample.yaml

步骤 2:验证示例 Pod 是否正在运行

Pod 可能需要一段时间才能达到运行状态,具体取决于 Internet 连接。 ASP.NET 映像很大:

kubectl get pods -o wide

显示正在运行的 Windows Pod 的屏幕截图。

步骤 3:验证示例服务是否正在运行

kubectl get services

显示正在运行的 Windows 服务的屏幕截图。

由于此示例部署为 NodePort 类型的服务,因此可以检索运行应用程序的 Kubernetes 节点的 IP 地址,然后追加 NodePort 的端口。 使用以下命令获取 Kubernetes 节点的 Get-AksEdgeNodeAddrIP:

Get-AksEdgeNodeAddr -NodeType Windows

显示 Windows 群集信息的 Screesnhot。

步骤 4:验证正在运行的 Windows 示例

打开 Web 浏览器并找到 NodePort 以访问服务:

显示正在运行的 Windows 应用的屏幕截图。

步骤 5:清理

若要清理,请使用以下命令删除所有资源:

kubectl delete -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample.yaml

部署自己的应用程序

前面的步骤演示了如何部署示例应用程序。 若要部署自己的应用程序,请执行以下操作:

  • 将应用程序打包到容器映像中,然后将映像上传到Azure 容器注册表或所选容器注册表中。 查看这些步骤以 创建应用程序的容器映像

  • AKS Edge Essentials 支持混合 OS 群集。 确保 Pod 在具有相应 OS 的节点上进行计划。 将 添加到 nodeSelector 部署文件。 此选项告知 Kubernetes 在特定操作系统 (OS) 的节点上运行 Pod。 如果群集是单 OS,则可以跳过此步骤;但为了获得最佳做法,请使用节点选择器标记每个部署文件:

    nodeSelector:
        "kubernetes.io/os": linux
    
    nodeSelector:
        "kubernetes.io/os": windows
    

后续步骤