Azure容器中建立Kubernetes群集

像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网络控制台

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

图3 Kubernetes部署

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

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

图4.扩展Kubernetes

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

图5 扩展后Kubernetes的部署

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

本文作者:Mike Pfeiffer

来源:51CTO

时间: 2024-11-02 12:18:53

Azure容器中建立Kubernetes群集的相关文章

在Azure中部署Kubernetes容器集群

在这个快速入门教程中,我们使用 Azure CLI 创建一个 Kubernetes 集群,然后在集群上部署运行由 Web 前端和 Redis 实例组成的多容器应用程序.一旦部署完成,应用程序可以通过互联网访问. 示例应用截图 这个快速入门教程假设你已经基本了解了 Kubernetes 的概念,有关 Kubernetes 的详细信息,请参阅 Kubernetes 文档. 如果您没有 Azure 账号,请在开始之前创建一个免费帐户. 登录 Azure 云控制台 Azure 云控制台是一个免费的 Ba

Azure 容器实例:Microsoft 容器创新的有力证明

本文讲的是Azure 容器实例:Microsoft 容器创新的有力证明[编者的话]本文主要介绍了 Microsoft 在容器技术浪潮中所作出的创新与努力以及所取得的成果. 与其他企业级基础设施供应商相比,面对容器技术带来的挑战,Microsoft 处于一个比较微妙的位置.Microsoft 已经在受到容器应用增长冲击的系统中取得了很多既得利益,其中包括操作系统(Windows Server),虚拟机管理程序(Hyper-V),私有云产品(Azure Stack)和 公有云(Azure). 对于平

容器评估:Azure容器 VS. Google VS. AWS

越来越多的企业使用容器技术部署云应用,似乎容器和云的关系越来越紧密.因此三大云供应商--Amazon Web Services, Microsoft Azure和Google工--都推出了各自的容器服务.但是,这些服务并不完全一样. 为了达到本文的目的总部位于波士顿的云计算咨询公司,Cloud Technology Partners,深入分析了Amazon Web Services(AWS),Google和Azure容器服务,仔细考量了用例.该公司仔细考察了评估或使用基于云的容器服务时需要重点研

建立文件群集故障转移

文件共享服务器中建立故障转移群集 环境:群集PC1.PC2.域服务器.存储服务器 操作系统:windows server 2008 r2 步骤: 1.群集PC1中,在功能管理器角色中,添加文件服务器.使用基于域的命名名称(\\test.com\file).指定域角色成员.创建索引的卷,完成安装. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/zs/

Spring源代码解析(二):IOC容器在web容器中的启动

以下引用自博客:http://jiwenke-spring.blogspot.com/ 上面我们分析了IOC容器本身的实现,下面我们看看在典型的web环境中,Spring IOC 容器是怎样被载入和起作用的. 简单的说,在web容器中,通过ServletContext为Spring的IOC容器提供宿主环境,对 应的建立起一个IOC容器的体系.其中,首先需要建立的是根上下文,这个上下文持有的 对象可以有业务对象,数据存取对象,资源,事物管理器等各种中间层对象.在这个上下 文的基础上,和web MV

如何在Ubuntu14.04的Docker容器中运行OpenVPN?

本文讲的是如何在Ubuntu14.04的Docker容器中运行OpenVPN?,[编者的话]本文来自DigitalOcean,DigitalOcean是美国的虚拟专用服务器提供商,本文主要介绍了如何在Ubuntu14.04上创建使用OpenVPN Docker容器. 介绍 本教程将介绍如何使用Docker来设置和运行OpenVPN容器. OpenVPN提供了一种方法来创建TLS加密(SSL的演进)的虚拟专用网络(VPN).它可以防止网络流量被窃取和中间人(MITM)攻击.专用网络可以用来安全地连

.NET程序在Linux容器中的演变

本文讲的是.NET程序在Linux容器中的演变[编者的话]Linux容器技术已被开发人员所熟知,现在.NET程序可以跑在Docker容器中,这为以Windows中心的开发人员带来了好处. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spring Cloud.Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Sleuth等. 本文将首先讨论镜像的构建时间和启动时间,接着会将一个简单的.N

DockOne微信分享(七十五):应用容器化之Kubernetes实践

本文讲的是DockOne微信分享(七十五):应用容器化之Kubernetes实践[编者的话]本次分享主要以ZooKeeper.Redis.Kafka.MongoDB等应用容器化在Kubernetes平台上面实践.从计算.网络.存储方面解析应用在集成中的问题,以及部分传统应用在容器化过程中设计的应用二次开发等问题.首先介绍应用Docker化的需求和局限.接着介绍基础平台,整体环境包括Kubernetes和ECP,然后介绍具体应用如ZooKeeper在集成中的实践,最后介绍部分开源应用在容器化过程中

求解答 关于放入panel容器中的窗口传值问题

问题描述 我先建立一个主窗口mainform,内添加一个容器panel.然后panel里载入多个窗口form1.form2,form3等(此时这些窗口的toplevel=false),即可实现在主窗口内不同窗口的切换而不需要弹出窗口.那么问题来了:如何实现mainform窗口与这些子窗口的实时数据传输(mainform窗口内入职改变,子窗口数据也同时改变,反之亦然)有查资料,如果选取弹出窗口的形式,而不是将这些子窗口放入Panel容器中,用事件event,或者form1.owner=this的形