Kubernetes 可以在没有 LXD 守护进程的情况下管理 LXC 容器吗?

Posted

技术标签:

【中文标题】Kubernetes 可以在没有 LXD 守护进程的情况下管理 LXC 容器吗?【英文标题】:Can Kubernetes manage LXC containers without LXD daemon? 【发布时间】:2020-12-06 10:09:21 【问题描述】:

我在 Oracle Linux(主机)上运行多个 LXC 容器,并在这些容器中运行 EBS 应用程序。 现在我每 5 台主机上就有 10 多个容器。 我正在寻找管理这些容器的解决方案。研究告诉我,Kubernetes 是一种用于管理容器并使用它执行其他一些活动的解决方案,例如自动缩放等。 但是 Kubernetes 与 LXD 一起用于 lxc 容器。 有什么方法可以直接用 Kubernetes 管理 lxc 容器吗? 任何帮助将不胜感激!

谢谢!!

【问题讨论】:

你用的是LXD还是经典的LXC? 我正在使用经典的 LXC 软件包,即将推出 oracle Linux Base repo 【参考方案1】:

你用的是 LXD 还是经典的 LXC?

我正在使用经典的 LXC 包,该包即将推出 oracle Linux Base repo。

好吧,官方LXE project description对此没有任何疑问。它明确指出LXD must be installed:

要求

你需要安装 LXD >= 3.3,官方提供的软件包 仅适用于via snap。 还支持源构建的 LXD。

所以这意味着你不能使用经典的 LXC。

您可能知道LXC 和LXD 是两个不同的产品,尽管第二个是建立在第一个之上的,正如您可以阅读here 一样,但最重要的区别是 LXD 公开 REST API

LXD 的核心是一个特权守护进程,它通过 本地 unix 套接字以及通过网络(如果启用)。

客户端,比如 LXD 本身提供的命令行工具 通过该 REST API 执行所有操作。这意味着无论你是 与您的本地主机或远程服务器交谈,一切正常 同样的方式。

这实际上是它的关键功能,它可以使用 LXE 等其他工具对其进行管理。

再说一遍:您的问题的答案是:不,您不能使用经典的 LXC。一定是 LXD。据我所知,没有其他方法可以直接使用 kubernetes 管理 LXC 容器。

【讨论】:

感谢您的回复,但是我们可以使用自定义 images.in LXC 创建容器吗? this 回答你的问题了吗?【参考方案2】:

我相信你可以安装 LXD,它应该会看到你所有的 lxc 容器(作为它和扩展)。如果没有,应该有简单的方法将 lxc 容器迁移到 lxd。后记,您可以将 LXE 扩展用于 kubernates。

【讨论】:

以上是关于Kubernetes 可以在没有 LXD 守护进程的情况下管理 LXC 容器吗?的主要内容,如果未能解决你的问题,请参考以下文章

[K8s]Kubernetes-工作负载(下)

如何在Kubernetes CI管道中使用Gradle守护程序?

“lxd”与 lxc/docker 有何不同?

kubernetes系列 - n. 设置kubelet 预留资源

第152天学习打卡(Kubernetes Service 部署有状态应用 部署守护进程 job corejob Secret ConfigMap )

关于 Kubernetes中DeamonSet的一些笔记