学习和使用docker是否需要使用Linode的Kubernetes引擎部署应用程序?(艾克)
听起来很有趣,如果可能的话,我想避免学习额外的复杂性。
我有许多CentOS和Ubuntu服务器以及自定义(php)应用程序在Linode上运行,我有兴趣将其中的一个传输到LKE。
发布于 2021-08-22 22:22:04
发布于 2021-08-23 09:22:01
TL;DR:你不需要它,但你也不能只把VM复制到Kubernetes。
TL;DR 2:在跑步前学会走路。
mount和chroot可能有助于构建该想法)diff)你把“复杂性”误认为是“构建步骤”。云厂商现在称它为"kubernetes引擎“,不过是纯粹的Kubernetes +一些使用Kubernetes API的特定厂商CRUD (与kubectl类似)。
现在,如果我们有Kubernetes,就有必要了解这些东西是如何被部署在那里的。Kubernetes是运行在名称空间(a.k.a )中的Linux进程的调度器。轻量级的"vm",尽管人们不喜欢"vm“这个术语)。进程需要从某个地方出现,这里有一个文件系统。
文件系统是由所谓的“映像”提供给Kubernetes的,如果Kubernetes支持它/有一个驱动程序,它可以由LXC或Docker或其他任何东西创建。格式的规范是开放的(因此,就连最近从码头到容器作为进程/容器运行程序的切换也是如此)。
这里是Docker或任何其他文件系统创建工具(尼克斯)出现的地方。您要么学习它,要么就可以从头创建文件系统(如果您不喜欢空闲时间的话,则基于容器规范)。一旦创建了文件系统映像,就可以在某个地方发布它,比如Docker图像注册表(一些供应商称它为“容器注册表”,尽管您实际上并不在那里存储容器),Kubernetes将文件系统映像从它的本地注册表(存储)中提取出来。
如果您可以在Docker或其他公共注册中心上找到一个已经可用的映像,您甚至不需要碰Docker或构建一个文件系统。一旦您有了这样的映像,只需使用Kubernetes ConfigMap来替换这样一个文件系统中的文件--例如,使用自定义nginx.conf来替换文件,它就会运行得很好。Python、Java、Go等也是如此。如果您可以找到一个可用的映像,并且您的项目打包得很好,那么甚至不需要触摸Docker。但是,如果文件系统出现故障,您最终可能需要在本地复制一个问题。
对于正在使用例如PHP + Apache映像的用户来说,将您的Apache文件甚至php.ini安装在一个ConfigMap中,将项目文件作为另一个ConfigMap挂载到/some/php/location/www中,如果您想要将内容保存为文件而仅在DB中使用(在每个容器被杀死/删除后文件系统清除),您甚至可能会从云供应商添加一个卷。
示例:
Deployment图像:标记创建kubernetes php:-apache配置。ConfigMap作为文件通过使用公共映像,确保它不过时,如果您还没有设置某些系统/公司进程,那么您可以自己检查漏洞,否则,您将只需使用一个旧版本的文件系统,任何人都可以下载并尝试在本地攻击--即准备使用ddos,或者只是劫持您的容器,并根据文件系统中可用的二进制文件,设置用户权限,并允许网络连接到容器。
发布于 2021-08-23 13:07:27
Kubernetes本身可以与码头以外的其他集装箱化技术一起运行。
仔细阅读正式的Linode文档和常见问题解答( FAQ https://www.linode.com/docs/guides/kubernetes-reference/ ),他们似乎对这个问题不感兴趣。在" Kubernetes“常见问题中,他们正确地提到,Kubernetes可以使用多种集装箱化技术运行,但码头是最常见的。我没有从他们那里找到一个清晰的“一流公民”文档,其中描述了如何配置另一个解决方案。因此,我假设至少Linode的托管Kubernetes解决方案只提供了Docker作为容器后端。
这并不是出于技术原因,而是因为您希望避免学习Docker技术的开销,这仅仅是为了在Kubernetes环境中获得一个服务。
答案非常清楚:为了所有的手段和目的,使用非码头集装箱系统和Kubernetes来避免学习的努力是没有意义的。Docker是迄今为止使用最广泛和文档最多的备选方案,包括许多教程、常见问题、最佳实践、示例等等。
码头工人的基本用法非常简单。编写Dockerfile是非常容易的,因此它或多或少是微不足道的。所有困难都在于找到构建和运行应用程序的正确命令,并以简单的语法将它们列在文本文件中--对于任何和所有容器解决方案来说,这都是同样的努力。
当你在专业水平上经营你的集装箱时,码头工人的困难就会出现。这正是被管理的Kubernetes解决方案为您所做的。因此,您将不会接触到任何特定于Docker的“困难”任务(比如确保容器始终处于正常状态,使存储、网络、CPU配额等都能正常工作等等)。这都是由Kubernetes为您处理的,您不会注意到它是Docker还是驱动集群的另一个容器后端。
https://devops.stackexchange.com/questions/14558
复制相似问题