文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

在当下的工作中,我的小组的工作基本上是为公司其他部门提供Heroku(一个支持多种编程语言的云平台即服务)——我们希望开发者能很容易地在我们的服务器上运行和操作代码。

我现在不想谈论为什么“让开发者更容易在我们的服务器上运行代码”可能涉及“容器”,因为这将完全是另一个帖子。假设我们相信是这样的。

因此,如果你有一堆现有的基础设施想移动到容器里面,迁移计划是什么?你怎么从这里到那里?

第 1 段(可获 1.29 积分)

我最开始很难提出一个我认为合理的迁移计划,但在一些好同事的帮助下,我想出了一个!这篇文章对迁移计划进行了阐述!如下所述(像往常一样,在这篇文章中的任何错误都是我的责任 :))

  1. 你可以不使用Docker、Kubernetes或类似的东西来运行容器
  2. 运行容器有一大堆的优点,即使不用Docker
  3. 如果你最终打算迁移到Docker / k8s ,你 无论如何 都需要容器化。你可以把这项工作分出来形成一个较小的项目!
  4. 所以如果你想最终迁移到Kubernetes或其他的什么上面,这可能是一个很好的迁移计划

像往常一样,我不是一个容器专家。我只是想弄清楚如何使用它们。也许这对你也有用!我写这篇文章是因为我认为在互联网上有更多的关于迁移计划的想法来思考和比较是一件好事。

第 2 段(可获 2.23 积分)

垂直变化 v.s. 水平变化

如果你想进行一个大的基础设施的变化(如迁移到Kubernetes),基本上有两种方法可以实现。你可以做一个包含你所有的希望和梦想的,新的小Kubernetes集群,并慢慢迁移到新的集群上。

第二种方法是增量进行小的变化。你首先在基础设施中水平地进行一系列改变,把所有的内容向Kubernetes移动一点点,再一点,再一点,再一点,最后希望你获得你想要的东西。

第 3 段(可获 1.26 积分)

现在,水平变化对我来说风险较小,因为这意味着你可以检查你的改变是否能在任何地方正确工作,而“我们有这个酷炫的新世界,但好多我们的软件实际上不能使用任何它”的危险较小。

但首先建设酷炫的新世界也有好的方面!你可以部署较少关键应用,开始学习如何操作你的酷炫新世界。

“使用容器而不用Docker”是什么意思(为什么你想开始不用Docker)

我是在说一个相当具体的事情:“只使用容器”。我们在一段时间前意识到,Docker有一个Daemon(守护进程)。这个Deamon为你做一系列事情,包括:

  • 监控容器并在停止时重新启动
  • 重定向程序日志
  • 让你运行像docker ps这样的命令,检查你的服务器上运行了哪些Docker容器
  • 有些我甚至不知道的其他事情
第 4 段(可获 2 积分)

很多酷炫的的编排特性,例如应用Kubernetes、Mesos或Docker Swarm,意味着我需要学习软件如何工作、如何运作,生产中会出现怎样的故障。我最终是可以做到这些的!但在短期内,如果我想部署我可以自信地运行在生产环境中的变化,像这样利用各种令人兴奋的功能只会让这个过程变慢。

那么,使用容器的最小方法是什么?你尽可能少地使用一些新特性,但还是会得到一些好处?

现在我认为是:

  • 建立一个容器镜像。使用任何你希望使用的工具(Dockerfile,packer等等)。你可以使用许多花式工具来制作容器。
  • 使用rkt运行容器。 rkt只运行容器,就像你运行程序一样。我知道如何运行程序!这太棒了。
  • 在你的主机网络空间中运行容器(与以前相同的地方),这样你就不必担心任何花哨的网络业务。
  • 用你目前监督的方式来监督容器。
  • 在它自己的pid命名空间中运行容器。
第 5 段(可获 2.44 积分)

而rkt基本上只是负责我在一个合理的环境中开始我的进程,以及为我的进程传递任何rkt能获取到的信号。这似乎很难搞砸(虽然,像往常一样,谁知道软件会发生什么,直到你尝试一下)。

rkt做的事情实际上比我所描述的要多一点——在你的机器上维护容器的一份本地存储,在运行时做一堆安全检查,并且运行systemd作为容器内部的初始化过程。可能还有更多我现在还不明白的事情。

第 6 段(可获 1.28 积分)

容器本身能为我做什么

我很喜欢它能帮我做的这三件事:

  • 减少我害怕改变的puppet配置的行数
  • 停止思考如何提供特定的计算机(“我需要把这个文件放在这台计算机的 /etc/awesome/blah.xml 目录”),而是更多担心服务 (“这个程序总需要 /etc/awesome/blah.xml 文件存在”)
  • 有针对我们如何运行服务的更好的标准(减少特殊性)

我认为,仅仅使用容器本身将迫使我们对如何包装和运行服务制定规矩(你必须安装容器内的所有服务需要的东西,否则服务将无法工作!)。

第 7 段(可获 1.44 积分)

因为容器的文件系统与主机的文件系统完全分离,所以容器没有办法依赖主机配置.。

要获得这些优势,你不需要运行Docker或Kubernetes!你只需要有一个容器,从你的操作系统的其余部分隔离开来。

声明一下,我并不认为应该在“仅仅使用容器”这一步停下来。这只是将工作分成更小的有用块。

迁移到不使用Docker的容器真的很简单!

对我来说,关于“使用容器而不用Docker”令人兴奋的事情是,我不需要学习在生产环境中如何操作新程序。我希望如果我们做到这一点,我们可以很快完成迁移,然后继续考虑如何管理容器。

如果你想要享受任何 容器带来的好处,“让你的程序在容器中工作”这件事情无论如何都是需要做的。因此你只是在做你无论如何都要做的事情。

第 8 段(可获 2.3 积分)

谨慎乐观

我曾经很不喜欢容器,因为这似乎只是一个流行语。但现在看来,很多围绕着“让开发者易于运行代码”的思想和软件基于容器产生。所以学习容器相关的技术是值得的!

所以我会尝试这些东西,但我想我们会慢慢开始,并在我能做到的时候,引入一个小的新软件到我们的生产环境中 :)

感谢Kamal的阅读和帮助。同样感谢我的同事Greg,他告诉了我很多关于容器的事情。

第 9 段(可获 1.54 积分)

文章评论