查看原文
其他

在 Azure 中部署 Kubernetes 容器集群

2017-08-07 译者:rieonke Linux中国
在这个快速入门教程中,我们使用 Azure CLI 创建一个 Kubernetes 集群,然后在集群上部署运行由 Web 前端和 Redis 实例组成的多容器应用程序。一旦部署完成,应用程序可以通过互联网访问。
-- Neilpeterson,mmacy


本文导航


在这个快速入门教程中,我们使用 Azure CLI 创建一个 Kubernetes 集群,然后在集群上部署运行由 Web 前端和 Redis 实例组成的多容器应用程序。一旦部署完成,应用程序可以通过互联网访问。

示例应用截图

这个快速入门教程假设你已经基本了解了 Kubernetes 的概念,有关 Kubernetes 的详细信息,请参阅 Kubernetes 文档[1]

如果您没有 Azure 账号,请在开始之前创建一个免费帐户[2]

登录 Azure 云控制台

Azure 云控制台是一个免费的 Bash shell,你可以直接在 Azure 网站上运行。它已经在你的账户中预先配置好了, 单击 Azure 门户[3]右上角菜单上的 “Cloud Shell” 按钮;

Cloud Shell

该按钮会启动一个交互式 shell,您可以使用它来运行本教程中的所有操作步骤。

Cloud Shell 截图

此快速入门教程所用的 Azure CLI 的版本最低要求为 2.0.4。如果您选择在本地安装和使用 CLI 工具,请运行 az --version 来检查已安装的版本。 如果您需要安装或升级请参阅安装 Azure CLI 2.0 [4]

创建一个资源组

使用 az group create[5] 命令创建一个资源组,一个 Azure 资源组是指 Azure 资源部署和管理的逻辑组。

以下示例在 eastus 区域中创建名为 myResourceGroup 的资源组。

  1. az group create --name myResourceGroup --location eastus

输出:

  1. {

  2.  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",

  3.  "location": "eastus",

  4.  "managedBy": null,

  5.  "name": "myResourceGroup",

  6.  "properties": {

  7.    "provisioningState": "Succeeded"

  8.  },

  9.  "tags": null

  10. }

创建一个 Kubernetes 集群

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

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

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

连接到 Kubernetes 集群

要管理 Kubernetes 群集,可以使用 Kubernetes 命令行工具 kubectl[7]

如果您使用 Azure CloudShell ,则已经安装了 kubectl 。如果要在本地安装,可以使用 az acs kubernetes install-cli[8] 命令。

要配置 kubectl 连接到您的 Kubernetes 群集,请运行 az acs kubernetes get-credentials[9] 命令下载凭据并配置 Kubernetes CLI 以使用它们。

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

要验证与集群的连接,请使用 kubectl get[10] 命令查看集群节点的列表。

  1. kubectl get nodes

输出:

  1. NAME                    STATUS                     AGE       VERSION

  2. k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6

  3. k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6

  4. k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6

  5. k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

运行应用程序

Kubernetes 清单文件为集群定义了一个所需的状态,包括了集群中应该运行什么样的容器镜像。 对于此示例,清单用于创建运行 Azure Vote 应用程序所需的所有对象。

创建一个名为 azure-vote.yaml ,将下面的内容拷贝到 YAML 中。

  1. apiVersion: apps/v1beta1

  2. kind: Deployment

  3. metadata:

  4.  name: azure-vote-back

  5. spec:

  6.  replicas: 1

  7.  template:

  8.    metadata:

  9.      labels:

  10.        app: azure-vote-back

  11.    spec:

  12.      containers:

  13.      - name: azure-vote-back

  14.        image: redis

  15.        ports:

  16.        - containerPort: 6379

  17.          name: redis

  18. ---

  19. apiVersion: v1

  20. kind: Service

  21. metadata:

  22.  name: azure-vote-back

  23. spec:

  24.  ports:

  25.  - port: 6379

  26.  selector:

  27.    app: azure-vote-back

  28. ---

  29. apiVersion: apps/v1beta1

  30. kind: Deployment

  31. metadata:

  32.  name: azure-vote-front

  33. spec:

  34.  replicas: 1

  35.  template:

  36.    metadata:

  37.      labels:

  38.        app: azure-vote-front

  39.    spec:

  40.      containers:

  41.      - name: azure-vote-front

  42.        image: microsoft/azure-vote-front:redis-v1

  43.        ports:

  44.        - containerPort: 80

  45.        env:

  46.        - name: REDIS

  47.          value: "azure-vote-back"

  48. ---

  49. apiVersion: v1

  50. kind: Service

  51. metadata:

  52.  name: azure-vote-front

  53. spec:

  54.  type: LoadBalancer

  55.  ports:

  56.  - port: 80

  57.  selector:

  58.    app: azure-vote-front

使用 kubectl create[11] 命令来运行该应用程序。

  1. kubectl create -f azure-vote.yaml

输出:

  1. deployment "azure-vote-back" created

  2. service "azure-vote-back" created

  3. deployment "azure-vote-front" created

  4. service "azure-vote-front" created

测试应用程序

当应用程序的跑起来之后,需要创建一个 Kubernetes 服务[12],将应用程序前端暴露在互联网上。 此过程可能需要几分钟才能完成。

要监控这个进程,使用 kubectl get service[13] 命令时加上 --watch 参数。

  1. kubectl get service azure-vote-front --watch

最初,azure-vote-front 服务的 EXTERNAL-IP 显示为 pending 。 一旦 EXTERNAL-IP 地址从 pending 变成一个具体的 IP 地址,请使用 “CTRL-C” 来停止 kubectl 监视进程。

  1. azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s

  2. azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

现在你可以通过这个外网 IP 地址访问到 Azure Vote 这个应用了。

浏览 Azure Vote 应用截图

删除集群

当不再需要集群时,可以使用 az group delete[14] 命令删除资源组,容器服务和所有相关资源。

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

获取示例代码

在这个快速入门教程中,预先创建的容器镜像已被用于部署 Kubernetes 。相关应用程序代码 Dockerfile 和 Kubernetes 清单文件可在 GitHub 中获得。Github 仓库地址是 https://github.com/Azure-Samples/azure-voting-app-redis

下一步

在这个快速入门教程中,您部署了一个 Kubernetes 集群,并部署了一个多容器应用程序。

要了解有关 Azure 容器服务的更多信息,走完一个完整的从代码到部署的全流程,请继续阅读 Kubernetes 集群教程。


via: https://docs.microsoft.com/en-us/azure/container-service/kubernetes/container-service-kubernetes-walkthrough

作者:neilpetersonmmacy 译者:rieonke 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


LCTT 译者
Rieon (rieonke)共计翻译:3 篇贡献时间:42 天

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存