(已弃用)为 Linux 容器部署 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 容器服务弃用声明

在本快速入门中,将使用 Azure CLI 部署 Kubernetes 群集。 然后,在群集上部署和运行包含 Web 前端和 Redis 实例的多容器应用程序。 完成后,即可通过 Internet 访问应用程序。

在本文档中使用的示例应用程序是以 Python 编写的。 此处详述的概念和步骤可以用来将任何容器映像部署到 Kubernetes 群集中。 GitHub 上提供了与此项目相关的代码、Dockerfile 和预先创建的 Kubernetes 清单文件。

浏览到 Azure Vote 的图像

本快速入门假定你基本了解 Kubernetes 概念。有关 Kubernetes 的详细信息,请参阅 Kubernetes 文档

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 显示 Azure Cloud Shell 的“试用”示例的屏幕截图。
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 Azure Cloud Shell,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块(或命令块)上的“复制”按钮以复制代码或命令。

  3. 在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。

  4. 选择“Enter”运行代码或命令。

如果选择在本地安装并使用 CLI,此快速入门教程要求运行 Azure CLI 2.0.4 版或更高版本。 运行 az --version 即可查找版本。 如需进行安装或升级,请参阅安装 Azure CLI

创建资源组

使用“az group create”命令创建资源组。 Azure 资源组是用于部署和管理 Azure 资源的逻辑组。

以下示例在“westeurope”位置创建名为“myResourceGroup”的资源组。

az group create --name myResourceGroup --location westeurope

输出:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

创建 Kubernetes 群集

使用 az acs create 命令在 Azure 容器服务中创建 Kubernetes 群集。 以下示例创建名为 myK8sCluster 的群集,其中包含一个 Linux 主节点和三个 Linux 代理节点。

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

在某些情况下(如限时试用),Azure 订阅对 Azure 资源的访问受限。 如果由于可用核心有限而导致部署失败,请将 --agent-count 1 添加到 az acs creat 命令中,以减少默认代理计数。

几分钟后,该命令完成并返回有关群集的 JSON 格式信息。

连接到群集

若要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl

如果使用的是 Azure Cloud Shell,则 kubectl 已安装。 如果想在本地安装,可以使用 az acs kubernetes install-cli 命令。

若要配置 kubectl 以连接到 Kubernetes 群集,请运行 az acs kubernetes get-credentials 命令。 此步骤下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

若要验证到群集的连接,请使用 kubectl get 命令返回群集节点列表。

kubectl get nodes

输出:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

运行应用程序

Kubernetes 清单文件用于定义群集的所需状态,例如,应该运行什么容器图像。 就此示例来说,清单用于创建运行 Azure Vote 应用程序所需的所有对象。

创建名为 azure-vote.yml 的文件,并将以下 YAML 复制到其中。 如果在 Azure Cloud Shell 中操作,则可使用 vi 或 Nano 来创建此文件,就像在虚拟或物理系统中操作一样。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

使用 kubectl create 命令运行该应用程序。

kubectl create -f azure-vote.yml

输出:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

测试应用程序

在应用程序运行以后,将创建 Kubernetes 服务,向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。

若要监视进度,请将 kubectl get service 命令与 --watch 参数配合使用。

kubectl get service azure-vote-front --watch

azure-vote-front 服务的 EXTERNAL-IP 一开始显示为“挂起”。 EXTERNAL-IP 地址从“挂起”变为 IP 地址以后,请使用 CTRL-C 停止 kubectl 监视进程。

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

现在可以浏览到外部 IP 地址来查看 Azure Vote 应用。

浏览到 Azure Vote 的图像

删除群集

如果不再需要群集,可以使用 az group delete 命令删除资源组、容器服务及所有相关资源。

az group delete --name myResourceGroup --yes --no-wait

获取代码

本快速入门使用预先创建的容器映像来创建 Kubernetes 部署。 GitHub 上提供了相关的应用程序代码、Dockerfile 和 Kubernetes 清单文件。

https://github.com/Azure-Samples/azure-voting-app-redis

后续步骤

在本快速入门中,部署了 Kubernetes 群集,并向该群集部署了多容器应用程序。

若要详细了解 Azure 容器服务并演练部署示例的完整代码,请继续阅读 Kubernetes 群集教程。