Vcluster

在常规命名空间内运行的虚拟 Kubernetes 集群
授权协议 Apache-2.0
开发语言 Google Go
所属分类 服务器软件、 集群/负载均衡
软件类型 开源软件
地区 不详
投 递 者 邢俊悟
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

创建功能齐全的虚拟 Kubernetes 集群 - 每个 vcluster 都在底层 k8s 集群的命名空间内运行。这比创建独立的完整集群更便宜,而且它比普通命名空间提供了更好的多租户和隔离性。

为什么选择虚拟 Kubernetes 集群?

  • Cluster Scoped Resources:比简单的命名空间更强大(虚拟集群允许用户使用 CRD、命名空间、集群角色等)
  • 易用性:可在任何 Kubernetes 集群中使用,并通过单个命令或cluster-api在几秒钟内创建
  • 成本效益:比“real”集群便宜和高效(单个 pod 和共享资源,就像命名空间一样)
  • 轻量级:建立在超快的 k3s 发行版之上,每个虚拟集群的开销最小(其他发行版也可以)
  • 严格隔离:为每个vcluster完成独立的Kubernetes控制平面和接入点,同时仍然能够共享底层主机集群的某些服务
  • 集群范围权限:允许用户安装需要集群范围权限的应用程序,但实际上仅限于主机集群中的一个命名空间
  • 非常适合测试:允许你在单个主机集群内测试不同的 Kubernetes 版本,该主机集群的版本可能与虚拟集群不同

架构

特性

  • Certified Kubernetes Distribution - vcluster 本身是经过认证的 Kubernetes 发行版,并且 100% 符合 Kubernetes API。在常规 Kubernetes 集群中工作的一切都在 vcluster 中工作
  • 轻量级和低开销- 基于 k3s,捆绑在单个 pod 中,资源消耗超低。还支持其他发行版,例如 k0s 或 vanilla k8s
  • 没有性能下降- Pod 被安排在底层主机集群中,因此它们在运行时根本不会受到性能影响
  • 减少主机集群的开销- 将大型多租户集群拆分为更小的 vcluster,以降低复杂性并提高可扩展性。由于大多数 vcluster api 请求和对象根本不会到达宿主集群,因此 vcluster 可以大大降低底层 Kubernetes 集群的压力
  • Easy Provisioning - 通过 vcluster CLI、helm、kubectl、cluster api、Argo CD 或任何您喜欢的工具创建(它基本上只是一个 StatefulSet)
  • 无需管理员权限- 如果您可以将 Web 应用程序部署到 Kubernetes 命名空间,那么您也可以部署 vcluster
  • 单一命名空间封装- 每个 vcluster 及其所有工作负载都位于底层主机集群的单一命名空间内
  • Easy Cleanup - 删除主机命名空间,vcluster 及其所有工作负载将立即消失
  • 灵活和多功能- vcluster 支持不同的存储后端(例如 sqlite、mysql、postgresql 和 etcd)、插件、可自定义的同步行为、vcluster 设置中的 vcluster,并具有更多额外的配置选项以适应多种不同的用例
  • 还记得容器是新东西的时候,我们都担心干坏事的人从一个容器跳到另一个容器。容器通常是安全的,但可能会出事,如CVE-2019-5736。为此,开发工具和Kubernetes多租户初创公司Loft Labs宣布其开源vcluster可以用于虚拟集群的隔离模式。 vcluster追随k3v的脚步——它是基于流行的k3s Kubernetes发行版虚拟化Kubernetes的概念证明。如今,vcluste

  • 1) Add more disk space to RH VM by vSphere     a. Power off the RH VM     b. Click 'Edit Virtual Machine Setting' in the panel of vSphere     c. 'Hardware -> Hard Disk 1 -> Increase the provisioned si

  • 导语:k8s使用HNC创建vcluster。记录一下 大致流程 。 # Select the latest version of HNC HNC_VERSION=v0.8.0 # Forbid HNC from modifying system namespaces kubectl label ns kube-system hnc.x-k8s.io/excluded-namespace=true

 相关资料
  • 问题内容: 命名空间Python程序包(no )和常规Python程序包(具有)之间有什么区别,尤其是对于常规程序包为空时? 我很好奇,因为最近我一直忘了自己制作的包装,而且我从没发现任何问题。实际上,它们的行为似乎与常规软件包相同。 编辑:命名空间包仅受Python 3.3支持(请参阅PEP 420 ),因此自然地,此问题仅适用于Python 3。 问题答案: 阅读Aaron和PEP420的链接

  • 我有一个单节点K8s集群细分为几个命名空间,每个命名空间都有许多POD。来自一个命名空间的POD如何与不同命名空间中的另一个POD通信?我知道我可以有一个ClusterIP服务并向其公开部署,因此来自同一集群的其他POD可以通过该服务访问POD应用程序。来自不同命名空间的POD可以使用相同的ClusterIP服务来访问POD应用程序吗?另一个问题是,来自不同命名空间的POD是否可能共享相同的子网?

  • 我有一个库伯内特斯集群,同一个应用程序运行几次,但名称空间不同。想象一下 现在我需要在所有这些 Pod 中每 10 分钟执行一次 cronjob。路径每次都是一样的。 有没有“最佳方法”来实现这一目标? 我在想一个以“CronJob”类型运行的 kubectl 图像,如下所示: 但我很确定这不是解决问题的正确方法。

  • 我需要在集群级或命名空间级(尽可能)配置以下限制: 不允许运行pod作为previldged 不允许pod作为uid 0运行 不允许任何吊舱使用主机网络命名空间 Kubernetes 1.12,带RBAC

  • 本文向大家介绍javascript模拟命名空间,包括了javascript模拟命名空间的使用技巧和注意事项,需要的朋友参考一下 在 C++ 和 C# 中,命名空间用于尽可能地减少名称冲突。例如,在 .NET Framework 中,命名空间有助于将 Microsoft.Build.Task.Message 类与 System.Messaging.Message 区分开来。JavaScript 没有

  • 虚拟内存是在磁盘上的一块区域,用以扩充主存的容量。虚拟内存里放的数据是内核不常用的信息,内存管理机制会把这些不常用的内存块保存到磁盘上,当要使用时再重新调入主存。虚拟内存的速度比主存慢很多。用作虚拟内存的磁盘空间叫交换空间(swap)。在Linux下,交换空间可以是一个分区,叫交换分区;也可以是一个文件,叫交换文件。交换分区速度快,但一旦设置,不易修改分区大小;交换文件速度较交换分区慢,但它的容量

  • 内联命名空间旨在通过”版本”的概念,来实现库的演化。考虑如下代码: // 文件:V99.h inline namespace V99 { void f(int); // 对V98版本进行改进 void f(double); // 新特性 // … } // 文件:V98.h namespace V98 { void

  • 内核命名空间 Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。当用 docker run 启动一个容器时,在后台 Docker 为容器创建了一个独立的命名空间和控制组集合。 命名空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用。 每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的 sockets 或接口。不过,如果主机系统