在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

时间: 2024-11-18 14:26:58

在Azure中部署Kubernetes容器集群的相关文章

Easystack发布新容器集群产品 成为中国首个OpenStack+K8S专业开源企业

3月29日,EasyStack(北京易捷思达科技发展有限公司)在德国柏林举行的CloudNativeCon+KubeCon容器大会上,正式发布基于Kubernetes技术的容器集群产品ESContainer.此举使得EasyStack同红帽.Mirantis一道成为全球三大同时具备OpenStack和Kubernetes(K8S)产品的专业开源企业,也是中国首个OpenStack+Kubernetes专业开源企业.   CloudNativeCon+KubeCon现场 2016年,是容器技术全面

开源容器集群管理系统Kubernetes架构及组件介绍

Together we will ensure that Kubernetes is a strong and open container management framework for any application and in any environment, whether in a private, public or hybrid cloud. --Urs Hölzle, Google Kubernetes 作为Docker生态圈中重要一员,是Google多年大规模容器管理技术的

容器集群部署 选好编排工具是关键

本文讲的是容器集群部署 选好编排工具是关键[IT168 评论]容器技术提供了组件化的环境,可以帮助业务应用在云之间轻松迁移而无需显著的返工.随着容器在企业持续获得发展,厂商将增加新的功能让用户可以创建可扩展的基于容器的环境.然而,大范围控制容器部署也会有一些并发症.容器肯定是跟资源相匹配的.这些挑战会导致集群管理和编排的并发需求. 集群管理工具是一个通过图形界面或者通过命令行来帮助你管理一组集群的软件程序.有了这个工具,你就可以监控集群里的节点,配置services,管理整个集群服务器.集群管理

京东大规模容器集群之 kubernetes 实践

01 容器时代已经到来 当前,容器的占有率可能比想象中还要快地增长,这个是使用 Docker 镜像的受欢迎的程度,可以看到几个排在前面的.然后平均一个公司有多少容器在跑,只有 7 个.但是在 06 年的时候,5 个都不到,其实增长还蛮快. 我觉得这个图挺有意思的,讲的是一个容器的平均生命周期,比较的是容器和未来的生命周期,容器的平均生命周期是 2.5 天,VM 是 23 天,这 2.5 天里面分了两部分,一部分是用了编排,一部分没有用编排.如果用户没有用 K8S 工具,平均的容器生命周期是一天,

[EWS系列分享]容器集群管理系统模型杂谈

前记     在开始动手设计EWS(即TAE3.0)之时, 我们参考了诸如swarm, kubernetes, mesos, yarn等众多与容器集群管理相关的系统或者设计思路, 当然最为**惊艳**的莫过于kubernetes了.考虑到历史数据及公司特有的网络, 运维环境, EWS不可能完全抛弃原有的数据模型而使用全新的设计或者说直接建立在诸如kubernetes上(感谢上帝我做了一个非常明确的决定!).     时至今日, kubernetes也刚刚发布了1.2版本, 一大波特性袭来. 在简

PaaS容器集群优化之路

本文讲的是PaaS容器集群优化之路[编者的话]本文探讨了在一个复杂的PaaS系统中,如何系统化.科学化的进行全系统的性能优化工作. [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述.架构.日志和监控,部署.自动驾驶.服务发现.网络方案等核心机制分析,进阶篇--Kubernetes调度工作原理.资源管理及源码分析等. 1. 性能优化面对的挑战 以下是整个PaaS平台的架构 其中主要包括这些子系统: 微服务治理框架:为应用提供自动注册.发现.治理.隔离.调用分析

从0到15万,回望京东容器集群的3年建设之路

  1 从0诞生  2013年初,京东商城研发布局虚拟化技术方向.那时的我们从0起步.从几人小团队开始起航.   在物理机时代,应用上线等待分配物理机时间平均在一周.应用混部要看脸看颜值的,没有隔离的应用混部如履薄冰,所以在物理机时代混部的比例平均每台物理机低于9个不同应用的tomcat实例.   从痛点入手可以极大提升新项目的落地实践机会.即刻我们着手规划京东虚拟化平台项目.从痛点以及当时2013-2014年的技术氛围可以容易想到,京东是从Openstack开始,那个时代Openstack研发

手把手教你用Docker部署一个MongoDB集群

本文讲的是手把手教你用Docker部署一个MongoDB集群,[编者的话]MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.本文介绍了如何使用Docker搭建MongoDB集群. 本文我会向大家介绍如何使用Docker部署一个MongoDB集群,具体如下: 2.6.5版本的MongoDB 有3个节点的副本集(Replica set) 身份验证 持

阿里云一键部署 Spark 分布式集群

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,可以完成各种各样的运算,包括 SQL 查询.文本处理.机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求.本文主要目的是为大家提供一种非常简单的方法,在阿里云上部署Spark集群. 通过<阿里云ROS资源编排服务>,将VPC.NAT Gateway.ECS创建,Hadoop和Spark部署过程自动化,使大家能够非常方便地部署一个Spark集群.本文创建的Spark集群包含三个节点:ma