最近我在Twitter上看到一个有趣的聊天,不禁想到也许不是每个人都知道这一点:通用操作系统正在从我们的服务器中挤出。将军是什么意思?死胡同是什么意思?首先,有必要澄清一下。我所说的通用操作系统是指当今大多数人用来运行服务器工作负载的操作系统,无论是RHEL、CentOS、Fedora或Debian等变体,还是Ubuntu等衍生产品。我们还包括Arch、各种BSD和opensolaris风格,以及Windows。所谓死胡同,我并不是真的意味着它们会死亡或不再有用。我的假设是,它们不再是我们启动新服务时使用的默认操作系统,最初速度较慢,然后速度更快。容器管理程序本文的第一部分讨论了我称之为容器管理程序的东西,现在更可能被称为CaaS或容器即服务。我什至推测VMWare必须在这个领域提供一些东西(看看vSphereIntegratedContainers和PhotonOS上的工作);也许现在排除OpenShift还为时过早(OpenShift3主要作为Kubernetes发行版交付)。我很快会回来解释为什么这对您心爱的Debian服务器构成威胁。争当PID1对于任何运行过Docker的人来说,您可能都在为这个问题而苦恼:主机进程主管(可能是systemd)的角色从哪里开始,容器进程主管(DockerEngine)又从哪里结束?你必须直接与两者互动吗?现在想象一下:您服务器上的所有软件都在容器中运行。为什么我现在需要两个重叠的过程监督工具?显而易见的答案是否定的,这就是为什么Docker与systemd之争不可避免的原因。请注意:这也不是Docker特有的。对于cri-o(https://github.com/kubernetes-incubator/cri-o),容器进程生命周期管理是其范围内的职责。容器成为软件单元我的假设背后没有说明的是容器成为软件单元。我在这里的意思是,我们构建或购买的软件将越来越多地作为容器发布并作为容器运行。容器将带有足够的元数据,运行时环境可以确定运行容器所需的资源。不要低估来自这个共享契约的简化假设的数量。至少在主机级别,您可能需要大量几乎相同的主机,它们都向容器调度程序共享它们的功能。操作系统实施细节我们已经看到垂直集成堆栈在这个市场上的兴起。适用于Mac/Windows/AWS/Azure的Docker附带了自己的操作系统,这是一种名为Moby的AlpineLinux衍生产品,它并非旨在由最终用户直接管理。CoreOS的Tectonic是一个Kubernetes发行版,运行在CoreOS主机的托管集群上。许多操作系统由频繁的原子滚动更新管理。来自RedHat的OpenShiftEnterprise是另一个Kubernetes变体,这次运行在Atomic主机上。PivotalCloudFoundry附带IaaS、主机操作系统、内核、文件系统和容器操作系统,所有这些都经过一起测试。在上述所有情况下,操作系统都是上层软件的实现细节。它不是为直接管理而设计的,或者至少与您今天运行的通用操作系统的管理程度不同。这就是为什么它们对于大多数运行服务器的通用操作系统来说是死胡同。运行容器的机器将运行更多单一用途的工作负载,你运行的越来越多的软件将在容器内运行。您这样做而不是自己构建所有内容的原因是兼容性。无论是内核版本、文件系统驱动程序、操作系统变量,还是使您的操作系统版本与我的不同的许多变量,构建和测试可在任何地方运行的软件都是一项艰巨而艰巨的任务。无尽的任务。商业因素也在这里发挥作用;毕竟,能够为每个人支持一个经过验证的产品是有很大好处的。影响此举有很多影响,看看它如何影响早期采用者和企业客户将会很有趣。这对企业操作系统策略意味着什么?标准的基于代理的监控系统如何在封闭的垂直堆栈环境中工作?我们会在AWS市场上看到其他类型服务的这种模式吗?在AWS市场中,启动的实例是不可访问的,但会自动更新。这种快速移动的软件如何在具有严格的变更控制流程或需要审计的环境中工作?许多大型企业最终运行不止一种类型的系统,如何最好地管理这种异构环境?看看有没有一些利益相关方的反对和抵制?尤其是开源社区,他们可能会觉得这主要是为了迎合供应商?通用操作系统的终结是否会导致系统管理员更加专业化?我很乐意与正在考虑上述任何主题的其他人进行对话。该行业将发生多大变化,并采用事后看来可能并不明显的模式,还有待观察。如果你喜欢这方面的内容,请在评论中告诉我,我会找时间写更多。
