(已弃用)在 Kubernetes 中更新应用程序

小窍门

有关本教程使用 Azure Kubernetes 服务的更新版本,请参阅 教程:在 Azure Kubernetes 服务(AKS)中更新应用程序

警告

Azure 容器服务 (ACS) 正在被弃用。 不会向 ACS 添加新特性或功能。 所有 API、门户体验、CLI 命令和文档都标记为已弃用。

2017 年,我们推出了 Azure Kubernetes 服务 (AKS),以简化 Kubernetes 的管理、部署和操作。 如果使用 Kubernetes 业务流程协调程序,请在 2020 年 1 月 31 日前迁移到 AKS。 若要开始,请参阅 迁移到 Azure Kubernetes 服务

有关详细信息,请参阅 Azure.com 上的 Azure 容器服务弃用声明

在 Kubernetes 中部署应用程序后,可以通过指定新的容器映像或映像版本来更新它。 在执行更新时,更新会分阶段进行,以便仅更新部署的一部分。 此暂存更新使应用程序能够在更新期间继续运行。 如果部署失败,它还提供回滚机制。

在本教程的第 6 部分(共 7 部分)中,将更新示例 Azure Vote 应用。 完成的任务包括:

  • 更新前端应用程序代码
  • 创建更新的容器映像
  • 将容器映像推送到 Azure 容器注册表
  • 部署更新的容器映像

在后续教程中,Log Analytics 配置为监视 Kubernetes 群集。

在您开始之前

在前面的教程中,应用程序被打包成一个容器映像,该映像上传到了 Azure 容器注册表,并且创建了 Kubernetes 集群。 然后,应用程序在 Kubernetes 群集上运行。

还克隆了应用程序存储库,其中包括应用程序源代码,以及本教程中使用的预先创建的 Docker Compose 文件。 验证是否已创建存储库的克隆,以及是否已将目录更改为克隆的目录。 内部有一个名为 azure-vote 的目录和一个名为 docker-compose.yml 的文件。

如果尚未完成这些步骤,并且想要继续执行,请返回到 教程 1 – 创建容器映像

更新应用程序

在本教程中,对应用程序进行了更改,并将更新后的应用程序部署到 Kubernetes 群集。

可以在目录中找到 azure-vote 应用程序源代码。 使用任何代码或文本编辑器打开config_file.cfg文件。 在此示例中使用了vi

vi azure-vote/azure-vote/config_file.cfg

更改其值 VOTE1VALUEVOTE2VALUE然后保存文件。

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

保存并关闭该文件。

更新容器映像

使用 docker-compose 重新创建前端映像并运行更新的应用程序。 该 --build 参数用于指示 Docker Compose 重新创建应用程序映像。

docker-compose up --build -d

在本地测试应用程序

浏览至 https://localhost:8080 查看更新后的应用程序。

Azure 上 Kubernetes 群集的图像

标记和推送图像

azure-vote-front使用容器注册表的 loginServer 标记映像。

使用 az acr list 命令获取登录服务器名称。

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

使用 docker 标记 标记映像。 将 <acrLoginServer> 替换为 Azure 容器注册表的登录服务器名称或公共注册表主机名。 另请注意,映像版本已更新为 redis-v2

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:redis-v2

使用 docker 推送 将映像上传到注册表。 将 <acrLoginServer> 替换为你的 Azure 容器注册表登录服务器名称。

docker push <acrLoginServer>/azure-vote-front:redis-v2

部署更新应用程序

为了确保最大运行时间,必须运行应用程序 Pod 的多个实例。 使用 kubectl get pod 命令验证此配置。

kubectl get pod

输出:

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-217588096-5w632    1/1       Running   0          10m
azure-vote-front-233282510-b5pkz   1/1       Running   0          10m
azure-vote-front-233282510-dhrtr   1/1       Running   0          10m
azure-vote-front-233282510-pqbfk   1/1       Running   0          10m

如果没有运行 azure-vote-front 映像的多个 Pod,请 azure-vote-front 缩放部署。

kubectl scale --replicas=3 deployment/azure-vote-front

若要更新应用程序,请使用 kubectl set 命令。 请将 <acrLoginServer> 更新为容器注册表的登录服务器或主机名。

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:redis-v2

若要监视部署,请使用 kubectl get pod 命令。 部署更新的应用程序后,Pod 将终止,并使用新的容器映像重新创建。

kubectl get pod

输出:

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-2978095810-gq9g0   1/1       Running   0          5m
azure-vote-front-1297194256-tpjlg   1/1       Running   0         1m
azure-vote-front-1297194256-tptnx   1/1       Running   0         5m
azure-vote-front-1297194256-zktw9   1/1       Terminating   0         1m

测试更新的应用程序

获取服务的外部 IP 地址 azure-vote-front

kubectl get service azure-vote-front

浏览到 IP 地址以查看更新的应用程序。

Azure 上 Kubernetes 群集的图像

后续步骤

在本教程中,你更新了一个应用程序,并向 Kubernetes 群集推出此更新。 已完成以下任务:

  • 更新了前端应用程序代码
  • 已创建更新的容器映像
  • 将容器映像推送到 Azure 容器注册表
  • 已部署更新的应用程序

转到下一教程,了解如何使用 Log Analytics 监视 Kubernetes。