Azure容器中建立Kubernetes群集

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

像Kubernetes这样的容器编排工具,对于容器化应用的管理至关重要。本文将分步讲解在微软Azure上建立Kubernetes集群。

尽管容器让开发人员建立和部署新应用变得更加容易,但是在开发和生产中运行容器却截然不同。现代,生产级别的应用程序都需要扩展以满足不断膨胀的需求,而且其支撑的基础架构也要对单个组件故障具有恢复性。这样,大多数公有云提供商提供了可以容纳生产环境的容器服务,例如Microsoft的Azure Container Service。

通过Azure Container Service,可以构建使用Docker容器支持预配置的VM群集。使用这一集群,你可以选择开源容器编排工具——Docker Swarm、DC/OS或Kubernetes来管理并扩展容器化应用。这些编排工具确保了容器所提供的服可以在集群中的多个节点之间进行负载平衡,并且可以水平扩展以满足需求峰值。

2014年,谷歌开发并开源的Kubernetes已经变得越来越流行。该平台已经成为生产环境中管理容器化应用的标准

为什么Kubernetes引领容器编排包

Kubernetes有一个蓬勃发展的开源贡献者社区。该项目是GitHub最活跃的项目之一,拥有超过12,000个贡献者,近50,000个贡献者和23,000个明星产品。Kubernetes社区在Stack Overflow和Slack上也非常活跃,新用户可以提出问题并利用社区的专业知识。

除了大量的支持者之外,Kubernetes可以在任何地方运行。因为它是一个开放源项目,组织可以在自己的私有云或公有云的虚拟机上运行它。而现在,通过谷歌和微软的容器服务,Kubernetes集群作为服务已经可用,企业不必再担心供应商锁定问题。一旦公司决定使用Kubernetes,它可以将生产应用移动到任何私有云或公有云。

Azure Container Service构建Kubernetes逐步讲解

Azure Container Service和它所支持的Kubernetes还相对较新。因此,在Azure Container Service上构建Kubernetes集群需要几步。先让我们看看当前的流程,然而探讨如何部署、扩展Docker容器便能的服务。

步骤1:安装Azure CLI 2.0

你可以使用Azure门户作为一个图形接口,来构建Azure Container Service集群。在门户中单击“新建(New)”,搜索Azure Container Service,然而创建一个新资源。这让你可以下载Azure Resource Manager模板,来构建新的Azure Container Service集群。但是,为此,要首先创建一个Secure Socket Shell(SSH)密钥对和Azure Active Directory(AD)服务主体。微软已经很好地记录了这个过程,但它仍然涉及到一系列的步骤。

另外,使用Azure命令行界面(CLI)更容易创建集群。使用单个命令,可以创建集群,以及生成SSH密钥和所需的Azure AD服务主体。 Azure CLI可以跨平台,用户可以 在Windows、Mac 和Linux上使用它。

骤2:创建 Azure Container Service集群

安装Azure CLI后,你只可以创建 这一集群。在下面,你将看到我自己构建的命令。注意,这是个单个命令,以 \ 区分每一行:

 
  1. az acs create --name kubecluster \ 
  2. --dns-prefix k8scluster2017 \  
  3. --resource-group ACSRG \  
  4. --orchestrator-type kubernetes \  
  5. --generate-ssh-keys \ 

你可以看到我使用“az acs create”命令创建了Azure Container Service集群。你需要提供唯一的DNS前缀和资源组名称。首先,创建一个空资源组,使用--resource-group参数作为新组的名称。

5到10分钟后,你将得到带有一个Kubernetes主虚拟机和三个代理节点虚拟机的集群。这一代理是那些为运行在集群上的服务托管容器的虚拟机。

步骤3:在 Azure Container Service集群加载服务

为了管理集群,使用“z acs kubernetes install-cli”命令安装Kubernetes CLI。

然后,你可以使用“kubectl”命令管理Kubernetes集群,这之中包括多个选项,如浏览当前节点和部署第一个服务。首先,使用“kubectl get nodes”命令浏览集群中的节点。(如图1)

图1 使用 kubectl浏览节点

在图1中,我们有3个托管服务的代理节点,还有一个控制集群的主节点。

为了在集群中加载一个新服务,你可以从大量的容器镜像进行选择,当然,你还可以使用“kubectl run nginx --image nginx ”命令创建 nginix服务。这将加载一个新的容器,带有即将运行在一个代理节点上的nginx镜像。

创建了这一服务后,你就可以以公共方式访问它。这样,通过Azure Load Balance显示这一服务,

创建该服务后,你可以启用它的公开访问。为此,请使用以下命令通过Azure Load Balancer公开服务,该负载平衡器将作为Azure Container Service部署的一部分来创建:

kubectl expose deployments nginx --port=80 --type=LoadBalancer

步骤4:通过网络UI扩展服务

除了命令行工具外,你可以访问Kubernetes网络UI管理和扩展服务。使用“kubectl proxy”命令创建 为Kubernetes主节点创建一个代理。

现在,你可以在本地打开一个网络浏览器,并查看网页 http://localhost:8001/u。你应该看如图2这样的网络控制台。

图2 Kubernetes网络控制台

图2 Kubernetes网络控制台

左侧,在“工作负载”下,单击“部署”。 你会看到一个类似图3的屏幕。

图3 Kubernetes部署

图3 Kubernetes部署

注意,图3中的部署在单个pod上运行了我们的nginx服务。Kubernetes中的pod是在Azure中作为虚拟机运行的代理节点。

为了手动扩展该服务并添加额外的节点,单击服务名称右侧的下拉列表,然后单击查看/编辑YAML。“replicas”属性当前应设置为1.您可以将此字段编辑为2或3来手动扩展服务。完成后单击“更新”(图4)。

图4.扩展Kubernetes

图4.扩展Kubernetes

此时,你可以导航回“部署”,以查看多个现在支持nginx服务的pod(图5)。

图5 扩展后Kubernetes的部署

图5 扩展后Kubernetes的部署

Kubernetes已经获得了最成熟的,也是最复杂的容器编排引擎之一的声誉。虽然管理员必须采取若干个步骤在Azure容器服务上设置Kubernetes集群,但它比从头开始构建一个更容易。 


本文作者:Mike Pfeiffer

来源:51CTO

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
14天前
|
Kubernetes 调度 Docker
深入探讨容器编排技术:从Docker到Kubernetes
容器编排在现代IT中日益关键,从Docker到Kubernetes,助力应用的自动化部署和扩展。Docker提供容器技术,打包应用及环境为镜像,通过引擎、镜像、容器、网络和存储组件实现隔离运行。Kubernetes作为高级容器编排平台,管理Pod(多容器集合),其核心包括API服务器、控制器管理器、调度器和Kubelet。Kubernetes集群由Master和Worker节点构成,实现Pod的高效调度和运行。
37 6
|
7天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
10天前
|
运维 Kubernetes Linux
10分钟搭建Kubernetes容器集群平台(kubeadm)
10分钟搭建Kubernetes容器集群平台(kubeadm)
|
10天前
|
Kubernetes Ubuntu Linux
Kubernetes(K8S)集群管理Docker容器(部署篇)
Kubernetes(K8S)集群管理Docker容器(部署篇)
|
10天前
|
存储 Kubernetes Docker
Kubernetes(K8S)集群管理Docker容器(概念篇)
Kubernetes(K8S)集群管理Docker容器(概念篇)
|
10天前
|
Kubernetes Ubuntu Docker
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
|
20天前
|
存储 运维 Kubernetes
构建高效稳定的容器化运维环境:Docker与Kubernetes的协同
【4月更文挑战第14天】 在当今快速发展的云计算时代,容器技术以其轻量级、快速部署和易于管理的优势,成为现代应用交付的标准。本文将深入探讨如何通过Docker和Kubernetes的整合使用来构建一个高效且稳定的容器化运维环境。我们将分析Docker容器的基本概念,探索Kubernetes在容器编排方面的强大能力,以及两者结合所带来的益处。文章还将讨论在实际部署中可能遇到的挑战,并提出相应的解决方案。
|
Kubernetes Docker 容器
Kubernetes之路 2 - 利用LXCFS提升容器资源可见性
这是本系列的第2篇内容,将介绍在Docker和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。 Linuxs利用Cgroup实现了对容器的资源限制,但在容器内部依然缺省挂载了宿主机上的procfs的/proc目录,其包含如:meminfo, cpuinfo,stat, uptime等资源信息。
2252 0
|
Kubernetes Docker 容器
Kubernetes之路 2 - 利用LXCFS提升容器资源可见性
这是本系列的第2篇内容,将介绍在Docker和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。
15035 0
|
8天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【4月更文挑战第26天】 在动态且不断增长的云计算环境中,维护高性能的 Kubernetes 集群是一个挑战。本文将探讨一系列实用的策略和工具,旨在帮助运维专家监控、分析和优化 Kubernetes 集群的性能。我们将讨论资源分配的最佳实践,包括 CPU 和内存管理,以及集群规模调整的策略。此外,文中还将介绍延迟和吞吐量的重要性,并提供日志和监控工具的使用技巧,以实现持续改进的目标。

相关产品

  • 容器服务Kubernetes版