在Azure中部署Kubernetes容器集群

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

在Azure中部署Kubernetes容器集群

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

示例应用截图

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

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

登录 Azure 云控制台

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

Cloud Shell

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

Cloud Shell 截图

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

创建一个资源组

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

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

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

输出:

 
 
  1.   "id""/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup"
  2.   "location""eastus"
  3.   "managedBy"null
  4.   "name""myResourceGroup"
  5.   "properties": { 
  6.     "provisioningState""Succeeded" 
  7.   }, 
  8.   "tags"null 

创建一个 Kubernetes 集群

使用 az acs create 命令在 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。

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

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

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

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

 
 
  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 命令来运行该应用程序。

 
 
  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 服务,将应用程序前端暴露在互联网上。 此过程可能需要几分钟才能完成。

要监控这个进程,使用 kubectl get service 命令时加上 --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 命令删除资源组,容器服务和所有相关资源。

 
 
  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 集群教程。





本文作者:佚名
来源:51CTO
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1天前
|
Kubernetes 安全 API
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
|
1天前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
1天前
|
存储 运维 Kubernetes
Kubernetes学习-集群搭建篇(一) 搭建Master结点
Kubernetes学习-集群搭建篇(一) 搭建Master结点
|
1天前
|
Kubernetes API 调度
Kubernetes学习-核心概念篇(二) 集群架构与组件
Kubernetes学习-核心概念篇(二) 集群架构与组件
|
1天前
|
运维 Kubernetes Linux
Kubernetes详解(七)——Service对象部署和应用
Kubernetes详解(七)——Service对象部署和应用
8 3
|
3天前
|
存储 运维 监控
Kubernetes 集群的持续监控与性能优化策略
【5月更文挑战第11天】在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。随着其在不同规模企业的广泛采用,如何确保 Kubernetes 集群的高效稳定运行变得至关重要。本文将探讨一套系统的 Kubernetes 集群监控方法,并结合实践经验分享针对性能瓶颈的优化策略。通过实时监控、日志分析与定期审计的结合,旨在帮助运维人员快速定位问题并提出解决方案,从而提升系统的整体表现。
|
4天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes详解(六)——Pod对象部署和应用
在Kubernetes系列中,本文聚焦Pod对象的部署和管理。首先,通过`kubectl run`命令创建Pod,如`kubectl run pod-test --image=nginx:1.12 --port=80 --replicas=1`。接着,使用`kubectl get deployment`或`kubectl get pods`查看Pod信息,添加`-o wide`参数获取详细详情。然后,利用Pod的IP地址进行访问。最后,用`kubectl delete pods [Pod名]`删除Pod,但因Controller控制器,删除后Pod可能自动重建。了解更多细节,请参阅原文链接。
11 5
|
4天前
|
Kubernetes Linux Docker
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
15 2
|
5天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
1天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第13天】在微服务架构和容器化部署日益普及的背景下,对Docker容器的监控变得尤为重要。本文将探讨一种构建高效稳定Docker容器监控体系的方法,通过集成Prometheus和cAdvisor工具,实现对容器资源使用情况、性能指标和运行状态的实时监控。同时,结合Grafana进行数据可视化,为运维人员提供直观的分析界面,以便及时发现和解决潜在问题,保障系统的高可用性和稳定性。
15 6

相关产品

  • 容器服务Kubernetes版