英文原作者:Sahiti Kappagantula 翻译&转载:https://www.edureka.co/blog/kubernetes-tutorial/
Kubernetes是一个平台,可以消除部署容器化应用程序所涉及的手动过程。在这篇关于Kubernetes Tutorial的博客中,您将了解与此多容器管理解决方案相关的所有概念。
本教程将介绍以下主题:
现在,在本博客向前推进之前,让我快速向您简要介绍一下集装箱化。
因此,在容器出现之前,开发人员和测试人员之间总是有一些关系。这通常是因为在开发方面工作的,在测试方面不起作用。它们都存在于不同的环境中。现在,为了避免这种情况,引入了容器,以便开发人员和测试人员都在同一页面上。
同时处理大量容器也是一个问题。有时在运行容器时,在产品方面,几乎没有提出问题,这些问题在开发阶段并不存在。这种场景引入了Container Orchestration System。 在深入研究编排系统之前,让我快速列出没有这个系统所面临的挑战。
正如您在上图中看到的,当多个服务在容器内运行时,您可能希望扩展这些容器。在大型工业中,这很难做到。那是因为它会增加维护服务的成本,以及并排运行它们的复杂性。
现在,为了避免手动设置服务并克服挑战,需要一些重要的东西。这就是Container Orchestration Engine的用武之地。
这个引擎允许我们组织多个容器,以便启动所有底层机器,容器健康并在集群环境中分布。在今天的世界中,主要有两个这样的引擎:Kubernetes和Docker Swarm。
Kubernetes 和 Docker Swarm 是当今市场上领先的容器编排工具。所以在使用它们之前,你应该知道它们究竟是什么以及它们是如何工作的。
此外,在博客中,我将深入探讨Kubernetes,但要了解Docker,您可以点击这里。
正如您可以参考上面的图片,Kubernetes与Docker Swarm相比,拥有一个非常活跃的社区,并在许多组织中实现自动扩展。同样,与Kubernetes相比,Docker Swarm有一个易于启动的集群,但它仅限于Docker API的功能。
好吧,伙计们,这些不是这些顶级工具之间的唯一区别。如果您想知道这两个容器编排工具之间的详细差异,可以单击此处。
如果我可以在两者之间选择我的选择,那么它必须是Kubernetes,因为容器需要被管理并连接到外部世界以执行诸如调度,负载平衡和分发之类的任务。
但是,如果你从逻辑上思考,Docker Swarm会提供更好的选择,因为它运行在Docker之上吗?如果我是你,我肯定会对使用哪种工具感到困惑。但是,嘿,Kubernetes是市场上无可争议的领导者,并且还拥有更好的功能性Docker容器。
现在,您已经了解了对Kubernetes的需求,这是一个美好的时光,我告诉您什么是Kubernetes?
Kubernetes是一个开源的系统,负责处理将容器调度到计算群集的工作,并管理工作负载以确保它们按用户的意图运行。作为Google的佼佼者,它提供了出色的社区,并与所有云提供商合作,成为一个 多容器管理解决方案。
Kubernetes的功能如下:
Kubernetes Architecture具有以下主要组件:
我将逐一讨论它们中的每一个。所以,首先让我们从理解主节点开始。
主节点负责管理Kubernetes集群。它主要是所有管理任务的切入点。群集中可以有多个主节点来检查容错。
如上图所示,主节点具有各种组件,如API服务器,控制器管理器,调度程序和ETCD。
工作节点包含管理容器之间的网络,与主节点通信以及将资源分配给预定容器的所有必要服务。
如上图所示,worker节点有各种组件,如Docker Container,Kubelet,Kube-proxy和Pods。
如果您想要详细解释Kubernetes Architecture的所有组件,那么您可以参考我们的 关于Kubernetes Architecture的博客。
Yahoo JAPAN 是一家总部位于加利福尼亚州桑尼维尔的网络服务提供商。由于该公司旨在虚拟化硬件,公司 于2012年开始使用 OpenStack 。他们的内部环境变化非常快。然而,由于云和容器技术的进步,该公司希望能力在各种平台上推出服务。
问题:如何从一个应用程序代码为所有必需的平台创建映像,并将这些映像部署到每个平台上?
为了便于您更好地理解,请参阅下图。在代码注册表中更改代码后,裸金属映像,Docker容器和VM映像由持续集成工具创建,推送到映像注册表,然后部署到每个基础架构平台。
现在,让我们关注容器工作流,以了解他们如何使用Kubernetes作为部署平台。请参阅下图,了解平台架构。
使用OpenStack实例,其上有Docker,Kubernetes,Calico等,以执行各种操作,如Container Networking,Container Registry等。
如果您有多个集群,那么管理它们会变得很难吗?
因此,他们只想创建一个简单的基础OpenStack集群,以提供Kubernetes所需的基本功能,并使OpenStack环境更易于管理。
通过图像创建工作流程和Kubernetes的组合,他们构建了以下工具链,使得从代码推送到部署变得简单。
这种工具链确保考虑了生产部署的所有因素,如多租户,身份验证,存储,网络,服务发现。
这就是人们,雅虎! 在Google和Solinea的帮助下,JAPAN为运行在OpenStack上的Kubernetes构建了一个自动化工具链,用于“一键式”代码部署。
在本动手中,我将向您展示如何创建部署和服务。我正在使用Amazon EC2实例,使用Kubernetes。好吧,亚马逊为Kubernetes(Amazon EKS)提供了Amazon Elastic Container Service,这使他们能够非常快速,轻松地在云中创建Kubernetes集群。如果您想了解更多相关信息,可以参考此处的博客。
步骤1:首先创建一个文件夹,您将在其中创建部署和服务。之后,使用编辑器打开部署文件。
1 2 3 |
|
步骤2:打开部署文件后,请提及要部署的应用程序的所有规范。在这里,我试图部署一个httpd应用程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
步骤3:编写部署文件后,使用以下命令应用部署。
1 |
|
这里-f是用于标记名称牛逼他的文件名。
第4步:现在,应用部署后,获取正在运行的pod列表。
1 |
|
这里,-o wide用于了解部署运行的节点。
步骤5:创建部署后,现在必须创建服务。为此,再次使用编辑器并打开一个空白服务。yaml文件。
1 |
|
步骤6:打开服务文件后,请提及该服务的所有规范。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
步骤7: 编写服务文件后,使用以下命令应用服务文件。
1 |
|
步骤8:现在,一旦您的服务应用于检查服务是否正在运行,请使用以下命令。
1 |
|
步骤9:现在,要查看服务规范,并检查绑定到哪个端点,请使用以下命令。
1 |
|
步骤10:既然我们正在使用amazon ec2实例,要获取网页并检查输出,请使用以下命令。
1 |
|
$ curl 10.97.46.48:8084
It works!