首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Linode的Kubernetes部署应用程序是否绝对必要?

使用Linode的Kubernetes部署应用程序是否绝对必要?
EN

DevOps用户
提问于 2021-08-22 20:41:19
回答 3查看 865关注 0票数 5

学习和使用docker是否需要使用Linode的Kubernetes引擎部署应用程序?(艾克)

听起来很有趣,如果可能的话,我想避免学习额外的复杂性。

我有许多CentOS和Ubuntu服务器以及自定义(php)应用程序在Linode上运行,我有兴趣将其中的一个传输到LKE。

EN

回答 3

DevOps用户

发布于 2021-08-22 22:22:04

我有许多CentOS和Ubuntu服务器以及自定义(php)应用程序在Linode上运行,我有兴趣将其中的一个传输到LKE。

如果这是您的情况,您需要做的第一件事,就是能够在Kubernetes上运行您的应用程序,实际上是在一个docker容器中运行您的应用程序。

当您的应用程序在一个坞容器中运行时,您可以了解Kubernetes 部署入口配置吗?您将在Kubernetes集群中运行与您可以使用docker在本地运行的同一个码头容器。

要让应用程序在docker容器中运行,第一步是了解如何使用和编写Dockerfiles。当您已经建立了一个码头集装箱,这是您将使用的库伯内特斯以及。

票数 4
EN

DevOps用户

发布于 2021-08-23 09:22:01

TL;DR:你不需要它,但你也不能只把VM复制到Kubernetes。

TL;DR 2:在跑步前学会走路。

  1. 了解什么是进程以及名称空间如何在Linux上工作
  2. 了解如何组装文件系统映像(简单的mountchroot可能有助于构建该想法)
  3. 将文件系统层想象为git提交(Docker /文件系统diff)
  4. 了解如何为Kubernetes发布和提取文件系统
  5. 学习使用Kubernetes上的简单服务进行基本部署
  6. 学习关于Kubernetes的高级网络和文件系统概念

你把“复杂性”误认为是“构建步骤”。云厂商现在称它为"kubernetes引擎“,不过是纯粹的Kubernetes +一些使用Kubernetes API的特定厂商CRUD (与kubectl类似)。

现在,如果我们有Kubernetes,就有必要了解这些东西是如何被部署在那里的。Kubernetes是运行在名称空间(a.k.a )中的Linux进程的调度器。轻量级的"vm",尽管人们不喜欢"vm“这个术语)。进程需要从某个地方出现,这里有一个文件系统。

文件系统是由所谓的“映像”提供给Kubernetes的,如果Kubernetes支持它/有一个驱动程序,它可以由LXC或Docker或其他任何东西创建。格式的规范是开放的(因此,就连最近从码头到容器作为进程/容器运行程序的切换也是如此)。

这里是Docker或任何其他文件系统创建工具(尼克斯)出现的地方。您要么学习它,要么就可以从头创建文件系统(如果您不喜欢空闲时间的话,则基于容器规范)。一旦创建了文件系统映像,就可以在某个地方发布它,比如Docker图像注册表(一些供应商称它为“容器注册表”,尽管您实际上并不在那里存储容器),Kubernetes将文件系统映像从它的本地注册表(存储)中提取出来。

Alternatively!

如果您可以在Docker或其他公共注册中心上找到一个已经可用的映像,您甚至不需要碰Docker或构建一个文件系统。一旦您有了这样的映像,只需使用Kubernetes ConfigMap来替换这样一个文件系统中的文件--例如,使用自定义nginx.conf来替换文件,它就会运行得很好。Python、Java、Go等也是如此。如果您可以找到一个可用的映像,并且您的项目打包得很好,那么甚至不需要触摸Docker。但是,如果文件系统出现故障,您最终可能需要在本地复制一个问题。

对于正在使用例如PHP + Apache映像的用户来说,将您的Apache文件甚至php.ini安装在一个ConfigMap中,将项目文件作为另一个ConfigMap挂载到/some/php/location/www中,如果您想要将内容保存为文件而仅在DB中使用(在每个容器被杀死/删除后文件系统清除),您甚至可能会从云供应商添加一个卷。

示例:

  1. 使用Deployment图像:标记创建kubernetes php:-apache配置。
  2. 使用ConfigMap作为文件
  3. 检查如何用CSI驱动程序与Kubernetes PVC一起工作
  4. 将项目安装为tarball或linode卷。

但是!

通过使用公共映像,确保它不过时,如果您还没有设置某些系统/公司进程,那么您可以自己检查漏洞,否则,您将只需使用一个旧版本的文件系统,任何人都可以下载并尝试在本地攻击--即准备使用ddos,或者只是劫持您的容器,并根据文件系统中可用的二进制文件,设置用户权限,并允许网络连接到容器。

票数 4
EN

DevOps用户

发布于 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还是驱动集群的另一个容器后端。

票数 1
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/14558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档