从 Docker 容器到 Google Kubernetes

从 Docker 容器到 Google Kubernetes

这个有点理论化,但请忍耐一下。

目前,我有一台服务器正在运行几个 Docker 容器(4 或 5 个,取决于日期和时间)。我计划添加另一个,就像第一个一样,甚至可能是第三个。

现在,我的问题是:如果我需要管理 15 个容器而不是 5 个,使用 Google Kubernetes 有什么好处吗?

此外,是否有一个“官方”或至少“明确”的工作流程来从 Docker 容器迁移到 Kubernetes 的原生单元“pod”。在你问之前,我确实知道 pod 是由容器组成的(有时甚至是一个容器)。我的主要问题是“dockerfiles”与 pod 配置完全不同。

有任何想法吗?

答案1

如果我需要管理 15 个容器而不是 5 个,那么使用 Google Kubernetes 有什么好处吗?

如果你使用Docker 守护进程和它的远程 API听起来很合适。

如果你需要在多台服务器上运行容器,那么就可以使用以下编排解决方案KubernetesDocker 集群舰队Mesos吉尔德变得有用。

我在这里的主要问题是“dockerfiles”与pod配置完全不同。

因为它们有不同的用途:

  • Dockerfile指定如何从源树构建容器镜像
  • pod.yaml定义如何在集群的某个节点上调度(图像、命令行、卷、端口)一组共置容器(共享网络命名空间和卷)。

您可以将 pod 视为声明性指定一组命令的方式docker run --net=container:... -v ... -p ...

此外,是否存在一个“官方的”或至少是“明确的”工作流程来从 Docker 容器迁移到 Kubernetes 的原生单元“pod”。

有一个小工具kubernetes/贡献称为波德克斯它允许您从存储在公共注册表中的图像元数据生成 pod 清单。

$ go get github.com/GoogleCloudPlatform/kubernetes/contrib/podex
$ podex google/nodejs-hello
id: nodejs-hello
kind: Pod
apiVersion: v1beta1
desiredState:
  manifest:
    version: v1beta2
    containers:
    - name: nodejs-hello
      image: google/nodejs-hello
      ports:
      - name: nodejs-hello-tcp-8080
        containerPort: 8080

答案2

@proppy 的回答是正确的:一个仅适用于单个服务器。

我最初的反应也是一样,但实际上你可以在一个文件中拥有多个服务和 Pod(以 分隔---)。这样,你通常每个容器仍然有 1 个服务 + 1 个 Pod,但这还不算太糟。

您还需要比在 docker-compose 中命名更多东西(有时我觉得这比必要的多)。一旦您学会了哪些名称在哪里很重要,您就会没事了,文件的维护也不会太难。

在我看来,部署要重得多,但它是分布式的,而且即将推出一种部署舱类型,可以简化升级(目前作为 v1.1 中的测试版扩展)。

相关内容