是否可以在kubernetes(k-in-k)内运行多个嵌套的kubernetes集群

是否可以在kubernetes(k-in-k)内运行多个嵌套的kubernetes集群,kubernetes,Kubernetes,如果有人在kubernetes中尝试过嵌套的kubernetes集群,我想在我运行的kubernetes集群中模拟一个小的kubernetes集群,而不是在新集群中反复使用VM 我想用来测试和跟踪kubernetes的各种特性的新集群,有没有人尝试过它 我尝试了各种各样的解决方案,比如 我也尝试过,这对我来说是可行的,但它使用docker容器启动k8s集群,但我希望这种解决方案在kubernetes内部工作,这样就可以跨我拥有的节点进行缩放 如果有人尝试过它,或者可以指出人们尝试过的解决

如果有人在kubernetes中尝试过嵌套的kubernetes集群,我想在我运行的kubernetes集群中模拟一个小的kubernetes集群,而不是在新集群中反复使用VM

我想用来测试和跟踪kubernetes的各种特性的新集群,有没有人尝试过它

我尝试了各种各样的解决方案,比如

我也尝试过,这对我来说是可行的,但它使用docker容器启动k8s集群,但我希望这种解决方案在kubernetes内部工作,这样就可以跨我拥有的节点进行缩放

如果有人尝试过它,或者可以指出人们尝试过的解决方案,那么它会有很大的帮助

编辑1:

我知道k8s以容器的形式运行工作负载,这是我问题的一部分,“是否可以使用容器或吊舱或任何其他k8s构造来运行k8s?”

我知道,我们可以围绕它创建名称空间和网络策略,但这将规范系统,我希望人们可以自由地使用主/api服务器,就像我们在minikube做的那样,不受监管。想要自由地搞乱主/api服务器,清理混乱可能只需要像
k8s delete cluster c1
之类的东西


在沙盒集群中创建这些集群只是一个命令操作。只是不想再次旋转vm并设置集群,如果有人想玩它,

我想你对kubernetes的工作有一个基本的误解。Kubernetes作为工作负载,只能运行容器。如果要在现有集群中部署新的kubernetes集群,则必须在容器中运行。如果您不想配置新VM或在容器中运行,我不明白您打算如何在第一个集群中运行第二个集群。您看到您的集群在哪里运行?以下是我看到的一些选项:

用例1: 升级productioncluster之前测试kubernetes的新版本

解决方案: 您真的应该在与生产类似/相同的硬件/VM上测试这一点。如果在现有集群中启动,则无法完全验证

用户案例2: 测试新的容器版本、服务设置等

解决方案: 使用带有一些网络策略的新名称空间将其与集群的其余部分隔离开来。您可以更进一步,使用节点污染只允许在特定工作节点上运行带名称空间的POD

用例3: 您正试图让开发人员在不影响生产的情况下发挥作用

解决方案: 我建议使用一个单独的沙箱集群。但是,如果您愿意接受风险,请参见#2的解决方案

用例4: 您正在为CI/CD管道部署新的kubernetes群集

解决方案: 我建议将作业分离,然后分别测试kubernetes集群创建,然后再测试它将运行的工作负载。一个作业测试集群创建自动化,如果通过,您可以将其升级到临时集群。使用临时集群测试工作负载作业

用例5: 您真的只想在其中运行多个kubernetes集群

解决方案: 这是一个相当棘手的问题,我不知道如何避免创建新的虚拟机,但您可以研究自定义自动化和虚拟机的混合,将第二个集群注册为第一个集群上的“节点”。但这实际上只允许您部署吊舱。在相同的虚拟机上运行重复的kubernetes进程将非常困难,主要是从网络的角度来看


如果这些都不适用,您能更好地描述您的用例吗?

我知道出于某种原因您不想要VM,但如果您稍微改变一下想法,您可以使用这一示例来说明如何在kubernetes中启动kubernetes,而嵌套节点将是pods(更准确地说,是VM pods,开始使用Virtlet作为CRI兼容的运行时),基于此yaml中描述的StatefulSet。

请理解使用K8S的真正原因。迪恩说得通。但扭结毫无意义。我确实理解使用k8s的原因。问题是,对于一个中央沙盒集群,我们不能使用master/api服务器(学习的一部分),因为这会让所有其他人共享沙盒集群,而且如果设置每个人的saperate集群,那么vm就麻烦了,所以我一直在寻找其他解决方案。分层名称空间是解决问题的又一次尝试“n-名称空间对我来说永远不够”和“每个人都需要集群管理员”“试图在评论中回答您的建议,但随后更新了问题本身,使其更加清晰。我知道,可以围绕它创建名称空间和网络策略,但这将规范系统,我希望人们可以自由地使用master/api服务器,就像我们在minikube所做的那样,不受监管。想要自由地搞乱主/api服务器,清理混乱可能只需要像
k8s delete cluster c1
之类的东西。是的,这与我想要的非常接近,我将探索更多并尝试。