您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

实施虚拟 Kubernetes 集群时的关键注意事项

时间:2023-01-30 16:12:07  来源:51CTO  作者:赵立京
在 Kube.NETes 环境中,多租户是指在开发和测试等环境中,多个团队、应用程序或用户之间共享一个大型集群,主要是为了降低管理多个集群的成本和运营开销。多租户正在成为平台团队部署 Kubernetes 基础设施的基本要求。
使用 Kubernetes 命名空间实现多租户
到目前为止,实现多租户的最流行的方法是使用 Kubernetes 命名空间。Kubernetes 命名空间提供了一种简单的方法来划分一组资源,例如 Pod、服务和部署,这些资源只能在该命名空间内访问。
平台团队通常管理和操作集群,并具有完全集群级别的权限。它们通过创建一个或多个特定于每个团队、应用程序、用户的命名空间,并限制作为开发人员、DevOps 工程师和应用程序所有者的最终用户对这些命名空间的访问来实现多租户。最终用户只能执行特定于他们拥有所有权的命名空间的操作。这适用于绝大多数多租户用例。在这里,vcluster 框架可能很有用。
使用 Vcluster 开源框架的多租户
在某些极端情况下,限制最终用户仅访问命名空间不太合理,因为最终用户需要访问集群范围对象(如 CRD、入口控制器、集群 API 服务器等),来进行日常开发工作。通常,参与开发自定义资源和自定义控制器以扩展 Kubernetes API、准入控制器以实现变异和验证 Webhook ,以及其他可能需要自定义 Kubernetes 配置服务的用户需要集群级访问权限。虚拟集群(vcluster)是一个开源框架,旨在解决这个问题。vcluster 本质上是一个可以在物理集群中创建的虚拟集群。
默认情况下,Vcluster 在每个虚拟集群实例的主机集群命名空间中安装 K3s 集群(可选为 k0s、k8s 和 EKS),并安装 API 服务器、控制器管理器、存储后端和(可选)调度程序等核心 Kubernetes 组件。最终用户与虚拟群集 API 服务器交互并获得对虚拟群集的完全访问权限,但是仍保持资源隔离和安全性,因为他们仅限于主机命名空间,并且无权访问主机群集 API 服务器。平台团队在主机群集中创建命名空间,为主机命名空间配置资源配额和策略,创建虚拟群集实例,并将虚拟群集移交给最终用户。

部署 Vcluster 之前要回答的关键问题
虽然为一小组最终用户部署 vcluster 相当简单,但在进行大规模 vcluster 部署之前,平台团队必须要清晰的了解以下问题,并围绕 vcluster 实施其他解决方案,才能满足其组织的自动化、安全性、治理和合规性要求:
1、如何为每个命名空间创建主机级命名空间和资源配额,并将其映射到内部用户、团队?
平台团队仍然需要命名空间级多租户的解决方案,因为必须先创建主机命名空间才能部署 vcluster 实例。
2、如何自动执行 vcluster 的生命周期管理以应对大规模使用?
平台团队需要解决诸如创建、修改、删除虚拟集群实例、向最终用户公开虚拟集群 API 服务器(使用入口或负载均衡器)、将虚拟集群 Kubeconfig 文件安全地分发给最终用户以及升级虚拟集群实例 (K3), 以应对软件更新和安全漏洞等问题。
3、如何确保每个虚拟集群中仅运行已批准和授权的群集范围服务?是否在每个虚拟集群中部署它们?如何保证没有漂移?
这些服务通常包括安全插件、日志记录、监控、服务网格、入口控制器、存储插件等。
4、如何在命名空间级别为主机命名空间创建网络策略?
由于物理群集可能在多个 BU 和应用程序团队之间共享,因此仍然需要此级别的网络隔离,这需要在主机命名空间之间进行网络隔离。
5、如何在每个虚拟集群中实施 OPA 等安全策略?是否需要在每个虚拟群集中部署这些策略?
大多数平台团队会根据其安全团队的建议标准化一组安全策略,并将其部署到每个集群中,来保持安全状况。
6、如何检索每个虚拟集群的 Kubectl 审核日志?
对于某些组织来说,Kubectl 审计是一项关键要求,无论在什么样的环境中都是如此。
7、如何处理成本分配?
由于资源由不同的开发团队共享,因此它们可能属于不同的成本中心,平台团队需要实施适当的按存储容量使用计费策略,来进行成本分配。
8、如何让其他开发人员工具(如ArgoCD)与vcluster一起工作?
像ArgoCD这样的GitOps工具需要集群访问才能部署应用程序,必须在ArgoCD中配置每个vcluster实例,以便最终用户利用ArgoCD GitOps部署。这可能适用于其他常用工具,例如可观测性、日志记录和监视工具。
9、每个 vcluster 实例会产生哪些额外的资源和运营开销?
每个虚拟集群本质上都是一个 K3s/K8s 集群,其中包含所有附加组件,例如安全插件、日志记录插件、监控插件、入口控制器等。当部署更多虚拟集群实例时,每个 vcluster Kubernetes 资源和加载项可能会产生大量开销。同样,由于每个虚拟集群本质上都是一个 Kubernetes 集群,因此平台团队可能会产生额外的开销来管理这些集群,来进行 Kubernetes 版本更新、补丁管理和附加组件管理。
10、vcluster 是否与实际生产环境相匹配?
对于某些组织,开发环境必须与生产环境紧密匹配。vcluster 支持其他发行版,例如 K8s 和 EKS,但平台团队必须检查它是否等效于为接近生产环境的用例运行独立集群。例如,EKS 支持许多高级功能,包括第三方 CNI、各种存储类、自动扩展、IRSA 和附加组件,这些功能在虚拟 EKS 集群中可能不可用。
结论
对于大多数平台团队来说,基于命名空间的多租户以及围绕命名空间生命周期管理、安全性和成本控制的额外自动化,可以解决其多租户用例。vcluster 解决了 Kubernetes 命名空间多租户中的一个特定差距,没有集群级别权限的最终用户可以访问其虚拟集群中的集群范围对象。平台团队必须在内部验证其最终用户是否存在此类要求,根据其安全性、合规性和治理要求,进行彻底的成本效益分析,并围绕它实施额外的自动化操作,以确保它的成功部署。
 


Tags: Kubernetes   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  Search: Kubernetes  点击:(40)  评论:(0)  加入收藏
管理 Kubernetes 集群这3年,我踩过的十个坑
作者 | Herve Khg编译 | 如烟出品 | 51CTO技术栈(微信号:blog51cto) Kubernetes 作为云计算领域的绝对主角,当仁不让地坐上了容器技术领域的“头把交椅”。它的精髓在于,你只要在...【详细内容】
2023-12-15  Search: Kubernetes  点击:(169)  评论:(0)  加入收藏
在 Kubernetes 中无侵入安装 OpenTelemetry 探针,你学会了吗?
OpenTelemetry 探针OpenTelemetry(简称 Otel,最新的版本是 1.27) 是一个用于观察性的开源项目,提供了一套工具、APIs 和 SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信...【详细内容】
2023-12-07  Search: Kubernetes  点击:(175)  评论:(0)  加入收藏
云原生小技巧 : 如何在本地调试 Kubernetes Webhook?
如果你是一名 Kubernetes Operator 的开发者,你曾经是否面临过这样一个棘手的问题:如何在本地环境中高效地调试 Webhook,尤其是在涉及有效证书回调的情况下。这篇文章旨在提供...【详细内容】
2023-11-27  Search: Kubernetes  点击:(228)  评论:(0)  加入收藏
使用 kube-downscaler 降低 Kubernetes 集群成本
介绍Kube-downscaler 是一款开源工具,允许用户定义 Kubernetes 中 pod 资源自动缩减的时间。这有助于通过减少非高峰时段的资源使用量来降低基础设施成本。在本文中,我们将详...【详细内容】
2023-10-27  Search: Kubernetes  点击:(319)  评论:(0)  加入收藏
在 Kubernetes 环境中实现 gRPC 负载均衡
前言前段时间写过一篇 gRPC 的入门文章,在最后还留了一个坑没有填:图片也就是 gRPC 的负载均衡问题,因为当时的业务请求量不算大,再加上公司没有对 Istio 这类服务网格比较熟悉...【详细内容】
2023-10-17  Search: Kubernetes  点击:(396)  评论:(0)  加入收藏
使用 Kubernetes 检查点 API 进行容器的备份和恢复
Kubernetes v1.25 引入了容器检查点 API 作为 alpha 特性。这提供了一种在不停止容器的情况下备份和恢复运行在 Pod 中的容器的方式。此功能主要用于调试分析,但任何 Kuberne...【详细内容】
2023-10-10  Search: Kubernetes  点击:(281)  评论:(0)  加入收藏
一文搞懂基于 OpenTelemetry 进行 Kubernetes 全链路观测
Hello folks,我是 Luga,今天我们来聊一下云原生生态核心技术—— 可观测性,即 “基于 OpenTelemetry 进行 Kubernetes 全链路观测” 。一、基于 OpenTelemetry 彻底...【详细内容】
2023-09-25  Search: Kubernetes  点击:(411)  评论:(0)  加入收藏
如何使用 Kaniko在 Kubernetes 集群中构建容器镜像
前言如何构建 Kubernetes 所需的容器镜像?我想你答案肯定是 Docker,没错,Docker 确实是首选。我们在使用 Jenkins 进行 CI/CD构建容器镜像的时候,做法通常是将 Jenkins 服务部署...【详细内容】
2023-09-15  Search: Kubernetes  点击:(185)  评论:(0)  加入收藏
一文搞懂 Kubernetes 编排工具 Minikube
Hello folks,我是 Luga,今天我们来聊一下云原生生态核心技术之 Kubernetes 编排工具 —— Minikube。— 01 —为什么需要 Minikube 工具 ? 随着容...【详细内容】
2023-09-03  Search: Kubernetes  点击:(241)  评论:(0)  加入收藏
▌简易百科推荐
Qt与Flutter:在跨平台UI框架中哪个更受欢迎?
在跨平台UI框架领域,Qt和Flutter是两个备受瞩目的选择。它们各自具有独特的优势,也各自有着广泛的应用场景。本文将对Qt和Flutter进行详细的比较,以探讨在跨平台UI框架中哪个更...【详细内容】
2024-04-12  刘长伟    Tags:UI框架   点击:(6)  评论:(0)  加入收藏
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(22)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(59)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(50)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(40)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(53)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(71)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(91)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(88)  评论:(0)  加入收藏
站内最新
站内热门
站内头条