服务
关于
CloudProse博客
货柜

江苏体彩概述

不仅可以运行k8s,还可以至少了解它。
内桑·哈普尔 Trek10
内桑·哈普尔 | 2020年3月16日

江苏体彩比您想象的要简单。这篇文章是有关如何使用江苏体彩,到达那里时的操作以及如何使刚创建的江苏体彩 frankenstein自动化的高层讨论。

注意:如果您是江苏体彩的新手,我强烈建议您阅读 儿童江苏体彩图解指南,这是一个很棒的介绍。

关键技术都是熟悉的名称。这篇文章适用于所有级别,因此这里有一些专家可以跳过的定义:

  • Docker-服务产品的固定平台。 Docker将用于创建映像。
  • 容器-包含其自己的软件,库和配置文件的隔离实例
  • 江苏体彩-一个开源容器编排系统,用于自动化应用程序的部署,扩展和管理
  • Helm-在江苏体彩上运行的应用程序包管理器。与江苏体彩清单“ helm chart”相比,Helm可以以更友好的方式描述应用程序结构。

该过程是什么样的?

这篇文章遵循的过程是这样的:

  • 评估您的应用
  • 创建图像
  • 定义江苏体彩集群
  • 使用舵图进行参数化。

评估应用

评估应用程序是至关重要的第一步。在不先评估工作量,依赖性和环境变量的情况下将其分为建筑物图像是一种危险且可能耗时的方法。每个应用程序都是不同的。语言和工具还可以确定所需的工作量,例如Java,Node,Rails应用程序。所需的工具可能是Maven,NPM等。

您可能要问的其他问题:应用程序如何编译?服务如何互相通信?这个应用程式的健康状况如何?依赖关系是什么?另一个考虑因素是该应用程序将是巨大的整体还是相互交织的一组离散服务。

这里最好的情况是明确的自述文件和明确的与外部服务连接的方向。理想情况下,应使用 12因素 方法。生产中所有应用的10-20%可能是这种情况。

创建图像&作为容器运行

完成对应用程序的评估后,下一步就是估算工作量。工作量将因您的应用程序而异。根据我监督这些项目的经验,该项目运行如下内容:

  • 根据需要安装Docker和其他工具,例如Maven,NPM
  • 确定构建应用代码和文件编译的方法
  • 在某些环境(例如AWS)中测试开发过程
  • 在Docker中运行应用程序以收集必要的工件
  • 将应用打包为一组图像:基本图像,工作程序图像等。

为了进一步分解,Java应用程序的工件由JAR文件组成。这些是构成应用程序全部或一部分的单个可执行二进制文件。这里选择的工具是Maven或Ant,您可以选择自己喜欢的工具,但我相信Maven会更受欢迎。该应用程序本身在容器或VM上运行。然后,此容器或VM暴露给Web服务器。网络服务器或前端很可能是用javascript编译的,后端或“工作容器”是后端逻辑并用Java编写。测试需要JDK。

经过测试并且容器运行平稳(将需要几次尝试),然后使用Docker打包应用程序代码的工作映像。打包的代码可以称为映像,并且该映像的运行实例是容器。根据您的经验,您可以将此过程称为 码头化 要么 集装箱化.

上载图像

将功能正常的应用代码版本准备为docker映像后,就该将代码打包到容器中了。下一步是确定如何暴露容器。这可以通过Web层或Web容器直接暴露。

Web服务器拥有构成我们应用程序前端的所有精美静态资产。该Web服务器/容器将使用应用程序代码调用容器;由于此容器将执行“工作”,因此称为“工人”容器。

存储这些图像的最佳位置是本地的回购中或容器注册表中。一个很好的应用是AWS Elastic Container Registry(ECR)。

管理图像/容器

一个非常简单的应用 能够 在一个容器中运行。 Docker Run可以管理一个简单的应用程序。对于更复杂的应用程序,您可以使用Docker Compose。 Docker Compose可在单个服务器上为多个容器工作,并公开网络层以进行容器间通信。 Docker Compose与定义的YAML文件一起编排。在运行Compose时,您决定要在哪个节点上运行它,网络和存储层的配置也只是江苏体彩复杂程度的一小部分。这两种解决方案将适用于较小且简单的部署。

有太多服务可用于更复杂的部署。您还可以通过Docker Engine CLI使用Docker Swarm来编排集群中的多个容器。对于重要的部署,江苏体彩具有更多的功能和更多的配置。对于此用例,我们将继续使用江苏体彩。

为什么要使用江苏体彩?

江苏体彩是以下人员的最佳解决方案:

  1. 必须与云无关
  2. 需要部署到多个环境
  3. 具有Docker Run / Compose / Swarm无法处理的大型部署。

让我们花点时间回顾一下江苏体彩的优势。 江苏体彩的主要优势之一是集群的所谓“大脑”,也称为控制平面。使用控制平面意味着可以在所有集群之间统一公开资源。其他优点包括声明式部署,该部署详细描述了部署的外观,应如何进行配置,资源要求和通信方法。在许多不同的地方也有自动化的范围。更不用说,江苏体彩社区庞大且不断发展,拥有强大的基础 文件资料.

也有缺点。第一个是复杂性。 江苏体彩的使用通常过于复杂。有大量的定制空间,这些定制功能强大,但需要开发人员和维护人员。

当您具有引用环境中不存在的DB或存储的复杂体系结构时,可能需要使用江苏体彩的一个示例。 江苏体彩更适合这种设置。

AWS中的示例江苏体彩体系结构高度可用,并在VPC中使用多个名称空间。

定义江苏体彩集群

江苏体彩将协调我们创建的容器映像。我们从这里开始有两个选择:从头开始构建或设置托管集群。

从头开始构建集群既耗时又复杂。它需要对服务器和节点进行分区,构建组件并确定与集群大脑(也称为控制平面)的连接。休眠节点是通过运行Docker守护程序构建的。 江苏体彩告诉Docker守护程序运行事物。

建议设置托管群集。 AWS具有Elastic 江苏体彩服务(EKS),该服务提供预定义的集群。 EKS可以接管您的集群管理的一部分,包括管理控制平面,并“自动将您的节点与控制平面同步。AWS在一月份将其价格降低了50%,以运行EKS集群。

在EKS上进行设置的过程概述。

在控制台中设置集群

EKS的其他优势之一是,您必须使用EKS命令行工具eksctl。由于EKS提供了江苏体彩 API,因此可以轻松地从命令行使用它来创建集群。

部署集群时,江苏体彩会使用这些资源告诉节点在该网络上运行。 江苏体彩接受部署对象后,服务器将选择一个节点以运行映像并在运行Docker容器之前预配资源。如果配置正确,江苏体彩还具有内置的负载平衡功能,可以在使用高峰时平衡负载。

使用江苏体彩

一旦定义了群集,就需要链接或引用图像。如果图像在AWS ECR中,则可以引用URL。下一步是部署集群。

部署后,EKS将提供凭据,该凭据与eksctl / kubectl一起用于与江苏体彩 API进行通信。 Kubectl用于告诉江苏体彩构建集群,并使用称为江苏体彩清单的声明性配置向集群文件提供文件。如果您决定使用头盔,则这些文件将通过头盔图表编排为模板。

还可以为江苏体彩中的更新配置自动化。自动执行江苏体彩映像提取时,映像会自动部署到江苏体彩。如果有新代码,自动映像将拉起旋转新容器。新的Docker容器是所实现的江苏体彩的功能。

在江苏体彩上进行监控

在江苏体彩中设置物理或集群级别的监视可能很简单。 江苏体彩社区和可用文档非常庞大。

江苏体彩集成了本地和云中的所有内容。开箱即用,内置了许多功能,并且在提前确定时,监控部分的工作量就更少了。

只需进行有限的自定义,就可以在整个集群范围内进行监控,并深入研究其工作原理和工作原理的每个组成部分。有非常好的开箱即用的解决方案。

舵图

舵图对江苏体彩集群进行参数化。 Helm图表通过使用变量对江苏体彩清单文件进行模板化来实现参数化。

变量的使用使QA和Dev团队更容易使用江苏体彩命名空间进行测试。变量的值在YAML的值文件中。这些文件可用于单独的环境,例如AWS,本地或vSphere。在在新环境中创建部署的示例中,helm CLI工具创建了新部署,提供了值文件,并使用这些值构建了更新的模板。一旦发生这种情况,模板将成为江苏体彩清单文件,在后台运行kubectl。

Helm内的自动化使用Tiller。 Helm将江苏体彩包裹在Chef中,并且可以与Ansible一起运行。如果更新是自动化的,则Tiller是部署在群集上的代理。 Tiller使用跨集群的自动扩展容器来管理版本并创建副本集。在将Helm打包到类似的文件夹结构之前,可以手动完成YAML文件和服务文件。然后,Helm部署可以使用rollback命令管理回滚。舵图可以自动从docker映像存储库中提取最新映像。通过指定“最新”图像来进行自动拉动。

Helm图表是目录内文件的集合。这是一个示例,说明如何在/ wordpress目录中使用它。每 官方头盔文件 ,这是预期的结构:

要创建图表,必须创建Chart.yaml文件。以下字段是该文件中预期内容的示例,其他字段将被忽略。

这应该用作将应用程序放入Docker容器,通过江苏体彩进行编排以及使用Helm图表自动化的高级指南。

作者
内桑·哈普尔 Trek10
内桑·哈普尔