【问题标题】:Deploy Docker container using Kubernetes使用 Kubernetes 部署 Docker 容器
【发布时间】:2016-01-18 09:58:47
【问题描述】:

我正在学习 Kubernetes,因为它是管理和部署容器的非常有用的工具。

所以我的问题是:

例如,我有两个名为 Kube1 和 Kube2 的 Amazon EC2 实例。所以在 Kube1 上,我使用 Docker 创建了一些容器并成功部署了 wordpress。现在我想在 Kube1 和 Kube2 之间建立一个集群,然后使用 Kubernetes 将 Kube1 上的所有容器部署到 Kube2。有没有分步教程让我完成它?我对 Kubernetes 的很​​多新概念有点坚持。

【问题讨论】:

    标签: amazon-web-services deployment docker kubernetes


    【解决方案1】:

    Kubernetes 是一个编排 工具。 我允许您在集群上部署容器以确保可用性。

    这意味着您定义称为 Pod 的容器规范(或容器集),然后将它们发送到集群管理器进行部署。

    您无需选择 Pod 的部署位置:Kubernetes 根据 Pod 所需的资源和集群中可用的资源来决定 Pod 的部署位置。

    有一个 服务 的概念,(我觉得这很令人困惑,因为在今天的行话中,“服务”通常意味着您的“应用程序”),但是一个 Kubernetes Service 是您目标 Pod 的负载平衡代理。 该服务确保您可以使用定义了目标 Pod 的“选择器”与 Pod 对话。

    如果您有一个 Wordpress 网站,它会提供内容。如果您有 2 个容器运行此站点,它们是相同的,那么 Service 会将请求负载平衡到 2 个 Pod 中的任何一个。

    现在,要使其工作,您需要 2 个 Pod 相同,这意味着如果数据更新(就像在博客上一样),数据需要到达 Wordpress 服务器以某种方式来自单一来源。 您可以拥有两个服务器都连接到的共享数据库 Pod。理想情况下,您使用负责复制的分布式数据库版本。或者你需要镜像数据库。

    您提到的用例有点不同:您正在谈论将基础架构移植到另一台服务器。 如果您的容器在一个节点上运行,那么在其他地方复制应该就像将容器推送到注册表然后拉到另一个节点一样简单。对于数据,您可能需要备份卷并手动移动它,或者创建一个 Docker 卷以推送到您的注册表。

    【讨论】:

    • 关于“您不选择部署 Pod 的位置”的一个说明。默认情况下,调度程序会找到一个放置 pod 的节点,但如果需要,您可以自己手动放置 pod(在极端情况下甚至可以在没有调度程序的情况下运行)。
    • 非常感谢您的评论。就我而言,我只想用 2 个实例进行测试。我想使用 kubernetes 将 1 个容器 docker(这是运行 Wordpress 的图像)从主实例部署到节点实例。就是这样。
    • 无意冒犯 K8s 团队,但为此,您最好直接进行 Docker 部署。
    • github.com/gear11/G11DockerWP 那么你认为这适合我的案例吗?