Kubernetes-在-容器集群-Azure-中部署 (kubernetes与docker的关系)

教程大全 2025-07-18 19:17:41 浏览

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

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

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

登录 Azure 云控制台

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

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

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

创建一个资源组

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

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

az group create --name myResourceGroup --location eastus

输出:

{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup","location": "eastus","managedBy": null,"name": "myResourceGroup","properties": {"provisioningState": "Succeeded"},"tags": null}

创建一个 Kubernetes 集群

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

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 以使用它们。

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

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

kubectl get nodes

输出:

NAMESTATUSAGEVERSIONk8s-agent-14ad53a1-0Ready10mv1.6.6k8s-agent-14ad53a1-1Ready10mv1.6.6k8s-agent-14ad53a1-2Ready10mv1.6.6k8s-Master-14ad53a1-0Ready,SchedulingDisabled10mv1.6.6

运行应用程序

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

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

apiVersion: apps/v1beta1kind: Deploymentmetadata:name: azure-vote-backspec:replicas: 1template:metadata:labels:app: azure-vote-backspec:containers:- name: azure-vote-backimage: redisports:- containerPort: 6379name: redis---apiVersion: v1kind: Servicemetadata:name: azure-vote-backspec:ports:- port: 6379selector:app: azure-vote-back---apiVersion: apps/v1beta1kind: Deploymentmetadata:name: azure-vote-frontspec:replicas: 1template:metadata:labels:app: azure-vote-frontspec:containers:- name: azure-vote-frontimage: microsoft/azure-vote-front:redis-v1ports:- containerPort: 80env:- name: REDISvalue: "azure-vote-back"---apiVersion: v1kind: Servicemetadata:name: azure-vote-frontspec:type: LoaDBAlancerports:- port: 80selector:app: azure-vote-front

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

kubectl create -f azure-vote.yaml

输出:

deployment "azure-vote-back" createdservice "azure-vote-back" createddeployment "azure-vote-front" createdservice "azure-vote-front" created

测试应用程序

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

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

kubectl get service azure-vote-front --watch

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

azure-vote-front10.0.34.24280:30676/TCP7sazure-vote-front10.0.34.24252.179.23.13180:30676/TCP2m

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

删除集群

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

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

获取示例代码

在这个快速入门教程中,预先创建的容器镜像已被用于部署 Kubernetes 。相关应用程序代码 Dockerfile 和 Kubernetes 清单文件可在 GitHub 中获得。Github 仓库地址是

下一步

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

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



Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。 它可以完美运行在现代的操作系统环境(比如CoreOS和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。 Kubernetes使用Golang开发,具有轻量化、模块化、便携以及可扩展的特点。 我们(Kubernetes开发团队)正在和一些不同的技术公司(包括维护着Mesos项目的MesoSphere)合作来把Kubernetes升级为一种与计算集群交互的标准方式。 Kubernetes重新实现了Google在构建集群应用时积累的经验。 这些概念包括如下内容:Pods:一种将容器组织在一起的方法;Replication Controllers:一种控制容器生命周期的方法(译者注:Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行);Labels:一种可以找到和查询容器的方法;Services:一个用于实现某一特定功能的容器组;因此,只要使用Kubernetes你就能够简单并快速的启动、移植并扩展集群。 在这种情况下,集群就像是类似虚拟机一样灵活的资源,它是一个逻辑运算单元。 打开它,使用它,调整它的大小,然后关闭它,就是这么快,就是这么简单。 Mesos和Kubernetes的愿景差不多,但是它们在不同的生命周期中各有不同的优势。 Mesos是分布式系统内核,它可以将不同的机器整合在一个逻辑计算机上面。 当你拥有很多的物理资源并想构建一个巨大的静态的计算集群的时候,Mesos就派上用场了。 有很多的现代化可扩展性的数据处理应用都可以在Mesos上运行,包括Hadoop、Kafka、Spark等,同时你可以通过容器技术将所有的数据处理应用都运行在一个基础的资源池中。 在某个方面来看,Mesos是一个比Kubernetes更加重量级的项目,但是得益于那些像Mesosphere一样的贡献者,Mesos正在变得更加简

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐