近日见闻
1、 ioredis 作者 @Luin 宣布该项目已被 Redis 公司收购。太强了,s十年坚持不懈做好自己的项目!十年的坚持有了很好的结果,羡慕的同时值得我们去学习!希望自己在不断努力后也有自己的好项目吧!地址https://github.com/luin
2、马斯克起诉 OpenAI 及其 CEO 奥特曼,要求公司恢复开源状态。马斯克在诉讼中表示,奥特曼和 OpenAI 违背了这家人工智能研究公司成立时达成的一项协议,即开发技术以造福人类而不是追逐利润。看完这个新闻,觉得马斯克真的不是一般人,他极度专注的做事,站在不一样的高度为人类社会做贡献。
3、Cloudflare 开源 Pingora Rust 框架,https://github.com/cloudflare/pingora
最新更行在两天前,Pingora 是一个 Rust 异步多线程框架,可以帮助构建 HTTP 代理服务。截至目前,Pingora 已在 Cloudflare 的全球网络中处理了近千万亿的互联网请求。仓库里是这么介绍的:A library for building fast, reliable and evolvable network services.
- 摘抄:
你从所有做对和做错的地方吸取教训,
然后再做下一件事。
直到有一天,你会忽然意识到,
自己居然做得还不错。
漫长的时间在默默地给你回报。
——尼尔·盖曼
最近在学习k8s官方文档的时候学到了不少,之前没有关注的知识点,今天就来分享一下所学
k8s多租户
官网关于多租户的介绍地址如下:https://kubernetes.io/zh-cn/docs/concepts/security/multi-tenancy/
,感兴趣的朋友可以去看看呢。 k8s官方文档[1]
首先聊聊什么是多租户?
多租户(Multi-tenancy)在Kubernetes中是实现资源共享、成本优化以及安全隔离的重要特性。它涉及到一系列的最佳实践和技术措施,确保不同的用户或团队(租户)可以安全地在同一个Kubernetes集群上运行他们的应用程序,而不会相互干扰。
官方解释就是确保工作负载彼此高度隔离,有如下隔离:控制面隔离、数据平面隔离、存储隔离、沙箱容器、节点隔离。详细机制如下:
命名空间(Namespaces)
- 隔离: 命名空间是Kubernetes中创建隔离环境的核心,每个租户的资源和服务在自己的命名空间中运行,从而实现逻辑上的隔离。
- 视角: 从用户的角度来看,命名空间相当于一个独立的“虚拟集群”,租户通常无法看到或影响其他命名空间中的资源。
资源配额(Resource Quotas)
- 限制: 管理员可以通过定义资源配额来设置每个命名空间可以使用的资源的上限。
- 灵活性: 配额可以针对各种资源进行设置,包括CPU、内存、存储、Pod数量、服务数量等。
网络策略(Network Policies)
- 控制流量: 网络策略用于控制Pod之间的通信方式。它可以限制哪些Pod可以相互通信,以及它们可以使用哪些网络端口。
- 默认拒绝: 最佳实践是默认禁止所有流量,然后逐步开放必要的通信路径。
角色基于访问控制(RBAC)
- 精细管理: RBAC允许管理员根据用户和团队的角色分配对Kubernetes资源的精确访问权限。
- 策略绑定: 可以将权限策略绑定到特定的命名空间,限制租户只能在自己的命名空间内操作。
服务账户(Service Accounts)
- Pod身份: 服务账户提供Pod身份,确保应用程序可以使用特定的权限和身份来运行。
- 自动化: Kubernetes自动为每个命名空间创建默认服务账户,并且可以创建更多自定义服务账户。
Pod安全策略(Pod Security Policies)
- 安全约束: 它为Pod的创建和更新提供一系列的安全约束条件,如禁止以root用户运行、限制特权模式等。
- 策略控制: 可以细粒度地控制哪些用户可以使用哪些安全策略来创建或修改Pod。
多租户的挑战
实现多租户环境时,存在一些技术和操作挑战:
- 安全隔离: 必须确保一个租户的行为不会对其他租户产生负面影响,特别是安全性方面。
- 资源公平: 确保资源配额和限制能够合理分配,避免“邻居效应”,即一个租户的过度资源消耗影响其他租户。
- 管理复杂性: 设置和维护多租户环境需要细致的规划和持续管理,可能涉及复杂的配置和策略制定。
第三方工具和解决方案
为了简化多租户管理,社区开发了一些第三方工具和平台,这些工具提供额外的功能来增强隔离、提高安全性以及优化资源管理:
- Kubeflow: 为机器学习工作负载提供多租户支持。
- Kubernetes Network Plugins: 如Calico和Cilium,提供高级网络策略和隔离功能。
- Kubernetes Gatekeepers: 使用策略即代码(Policy as Code)模式来强化多租户策略。
结论
多租户是Kubernetes中一个复杂但极其重要的特性。通过使用命名空间、资源配额、RBAC、网络策略和其他安全机制,可以构建一个既安全又高效的多租户Kubernetes环境。当然,随着业务和技术的发展,管理员需要不断调整和优化多租户策略以满足变化的需要。ChatGPT[2]