书籍“ Kubernetes模式:本机云应用程序开发模式”

图片您好,habrozhiteli!

随着微服务和容器的发展,设计,创建和启动软件的方法已经改变。探索实现Kubernetes云应用程序所需的新设计模式和原理。

本书适用于希望为Kubernetes平台设计和开发基于云的应用程序的开发人员。这样做的最大好处是,至少对容器有一点点了解并希望提高到一个新水平的读者。每个设计模式都是对实际问题的描述,解决方案受特定代码示例的支持和说明。

摘抄。边车图案


Sidecar模式(Trailer)用于定义一个容器,该容器在不更改现有容器的情况下扩展了其功能。这是基本的容器模式之一,它使您可以创建相互紧密协作的高度专业化的容器。在本章中,您将学习与Sidecar模式(Trailer)概念有关的所有内容。在第16章和第17章中,您将熟悉这种模式的特殊变体-分别为Adapter和Ambassador模式。

任务


容器是一种流行的打包技术,它允许开发人员和系统管理员以统一的方式创建,交付和运行应用程序。容器通过其运行时,发布周期,API和它所属的开发团队来代表功能单元的自然边界。一个典型的容器就像在Linux上的一个进程一样,可以解决一个问题,并且可以很好地完成它,并且是在具有替换和重用可能性的前提下创建的。后者特别重要,因为它使您可以使用现有的专用容器快速创建应用程序。

当前,为了发送HTTP请求,您无需编写客户端库,只需使用现有的客户端库即可。同样,要维护网站,您无需使用Web服务器创建容器,只需使用现有的容器即可。这种方法使开发人员不必重新发明轮子,而是创建具有更少容器的生态系统,以提供更好的维护质量。但是,为了能够使用高度专业化的可重用容器,需要扩展其功能的方法以及用于组织它们之间的交互的方法。Sidecar模式(Trailer)描述了一种当一个容器扩展另一个现有容器的功能时组织交互的方式。

决断


在第1章中,我们了解了Pod如何使您将多个容器组合成一个块。在运行时,在幕后还有一个容器,但它是在炉膛中所有其他容器前面的一个暂停(实际上是使用pause命令)过程开始的。它什么也不做,只存储应用程序容器在整个pod生命周期中用于交互的所有Linux名称空间。除了此实现细节之外,炉床抽象提供的所有特征也很有趣。

Under是一个基本的原语,它存在于许多云平台中,尽管名称不同,但始终具有相似的功能。作为部署单元,在其下对其容器施加某些运行时限制。例如,所有容器都部署在一个节点上并具有共同的生命周期。另外,under允许其容器使用共享卷并通过本地网络或使用主机进程间通信工具交换数据。这就是为什么用户将容器组合到容器中的原因。 Sidecar模式(Trailer),有时也称为Sidekick(Companion),描述了向下方添加一个容器以扩展另一个容器的功能的场景。

演示此模式的典型示例是HTTP服务器以及与Git存储库的同步机制。 HTTP服务器容器解决了与通过HTTP服务文件相关的问题,并且不知道这些文件的来源和来源。同样,与Git进行同步的容器的唯一目的是使本地文件系统中的数据与Git服务器上的数据同步。他不在乎同步后文件将如何处理,他的唯一任务是将本地文件夹的内容与远程Git服务器上的内容进行同步。清单15.1提供了一个pod定义,其中两个容器配置为使用该卷进行文件共享。

清单15.1 Sidecar模式实施(预告片)

apiVersion: v1
kind: Pod
metadata:
    name: web-app
spec:
    containers:
    - name: app
      image: docker.io/centos/httpd ❶
      ports:
      - containerPort: 80
      volumeMounts:
      - mountPath: /var/www/html ❸
      name: git
    - name: poll
      image: axeclbr/git ❷
      volumeMounts:
      - mountPath: /var/lib/data ❸
        name: git
      env:
      - name: GIT_REPO
         value: https://github.com/mdn/beginner-html-site-scripted
      command:
      - "sh"
      - "-c"
      - "git clone $(GIT_REPO) . && watch -n 600 git pull"
      workingDir: /var/lib/data
volumes:
- emptyDir: {}
      name: git

(1)主应用程序容器通过HTTP提供文件。

(2)并行运行的辅助容器(拖车),并从Git服务器接收数据。

(3)一个共享文件夹,用于在主容器和辅助容器之间交换数据。

此示例显示了具有Git的同步容器如何添加HTTP服务器要提供的内容并使其保持最新状态。您也可以说两个容器紧密合作,并且同等重要,但是Sidecar模式(Trailer)假设存在一个主容器(主容器)和辅助容器,这些容器扩展了集体行为。通常,主要容器在容器列表中排在第一位,并代表默认容器(例如,由kubectl exec命令启动)。

这种简单的模式如图2所示。15.1确保容器在运行时紧密协作,同时允许使用不同的编程语言,不同版本的发布周期等共享可能属于不同开发团队的任务。它还促进了容器的互换性和重用性-从某种意义上说,HTTP服务器和Git同步机制可以在其他应用程序和其他设置中独立使用或与其他容器结合使用。

图片

说明


上面已经说过,容器图像类似于类,并且容器类似于面向对象编程(OOP)中的对象。继续这个类比,我们可以将容器功能的扩展与OOP中的继承进行比较,并将多个容器在炉膛中的联合工作与在OOP中接收组合进行比较。这两种方法都允许代码重用,但是继承定义了更紧密的关系并表示容器之间的“是”关系。

炉膛中的成分代表“有”的关系-更加灵活,因为在组装过程中不需要容器的组合,这使得稍后可以在炉膛定义中更改容器。但是组合还意味着存在同时运行的多个容器(进程),以及主应用程序容器,这些容器必须进行可操作性检查并重新启动并消耗资源,并且这些容器(进程)也必须同时运行。 Sidecar模式(Trailer)涉及创建占用最少资源的小型辅助容器,但是您决定是启动一个单独的进程还是将所有任务更好地组合到一个主容器中。

从另一个角度来看,容器的组成类似于面向方面的编程,当使用其他容器时,与主容器无关的正交(独立)功能将添加到子容器中。最近几个月,Sidecar模式已经越来越流行,特别是对于网络管理和服务监视任务,其中每项服务还以辅助容器的形式出现。

»关于这本书的更多信息上可以找到出版商的网站
» 目录
» 摘录

对于Khabrozhiteley 25%的优惠券折扣- Kubernetes

在缴付书的纸质版本,电子书是通过电子邮件发送。

All Articles