searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Serverless Kubernetes 多租户多集群管理方法

2023-12-08 09:19:53
30
0

背景技术

2019 年,Gartner 在报告《基础设施和运维十大趋势》中,将 Serverless(无服务器)定义为最具有潜力的云计算技术之一。 Serverless 是云原生时代的一种新兴的软件架构模式,旨在让用户不需要关注服务器运行所需的计算资源,从而专注于业务逻辑的开发,提高业务构建和交付的效率。在容器云原生领域,Serverless Kubernetes 是 Serverless 方式对传统 Kubernetes 的革新,是对未来 Kubernetes 演进方向的一种探索。不同于标准 Kubernetes,Serverless Kubernetes 一方面从根本性简化了容器平台的设计,降低了 Kubernetes 管理运维的复杂性,让用户无需受困于 Kubernetes 集群节点规划、故障诊断;另一方面,释放了计算资源的能力,将安全、可用性、可伸缩性等需求由底层基础设施实现,用户只关注上层业务逻辑的设计。由于 Serverless Kubernetes 具有架构免运维,无需关注集群和底层服务器,一站式部署和运维容器应用等优点,越来越多的云厂商致力于 Serverless Kubernetes 相关技术的研发。

Serverless Kubernetes 的目标之一是架构免运维,希望用户无需关注集群和底层服务器,专注于应用的业务逻辑。体现在 Kubernetes 集群中,用户应更多关注在 pod、job、service 等上层应用编排的语义上,减少对底层 node 的关注。其次,单个 k8s 集群的承载能力有限,在实际生产环境中使用的一般是多个 k8s 集群。根据 Kubernetes 的建议,接入集群的节点数量不超过 5000,每个节点部署的 Pod 数量不超过 100。在 Serverless Kubernetes 场景,提供面向多租户的多集群管理和应用部署能力非常有必要。现有的 k8s 多集群管理和应用部署方法一般通过 kubeconfig 切换多个集群管理集群,通过 api 接口创建应用。这类方法隔离性不够,不同租户共享同一个 node 节点,不适用于公有云环境下的多租户 Serverless Kubernetes 场景。因此,本文基于 virtual kubelet 和 k8s operator 提出了一种面向 Serverless Kubernetes 的多租户多集群管理方法。

 

技术方案

本文通过 virtual kubelet 和 k8s operator 实现多租户多集群管理方法。首先,基于 virtual kubelet 技术实现集群的无节点管理,在租户 k8s 集群,将原先接入 k8s master 的真实 node 节点用 virtual node 替换,由于接入的是虚拟节点而非真实节点,用户无需关心节点的实际物理资源;虚拟节点的创建、更新和删除由 k8s operator 进行控制,实现免运维。其次,每一个 virtual node 对应一个真实的边缘 k8s 集群,调度到 virtual node 上的 Pod 表示要下发到对应的边缘集群;边缘集群均接入到 provider 组件,provider 组件负责管理边缘集群的资源对象,并提供接口给 virtual kubelet 调用,实现多集群的应用部署。该方案的整体架构如下:

在 k8s 集群中,每个 node 节点都会启动一个 kubelet 进程,kubelet 是节点的代理,根据 PodSpec 进行 Pod 的创建、更新和删除,并定期上报 Pod 运行状态和节点健康状态。Virtual kubelet 基于 kubelet 实现,具有跟 kubelet 相同的功能,能够向上伪装成一个 kubelet,从而模拟出一个 virtual node对象,接入 k8s master,对接到 api-server 的原生资源对象。本文基于 virtual kubelet 技术将接入到租户 k8s 集群的真实 node 节点用 virtual node 进行替换,由于接入的是虚拟节点而非真实节点,用户无需关心节点的实际物理资源;其次,编写自定义 operator 管理和运维虚拟节点,实现虚拟节点的自动创建、更新和删除。具体过程如下:

 

 

0条评论
0 / 1000
郭瑞英
2文章数
0粉丝数
郭瑞英
2 文章 | 0 粉丝
郭瑞英
2文章数
0粉丝数
郭瑞英
2 文章 | 0 粉丝
原创

Serverless Kubernetes 多租户多集群管理方法

2023-12-08 09:19:53
30
0

背景技术

2019 年,Gartner 在报告《基础设施和运维十大趋势》中,将 Serverless(无服务器)定义为最具有潜力的云计算技术之一。 Serverless 是云原生时代的一种新兴的软件架构模式,旨在让用户不需要关注服务器运行所需的计算资源,从而专注于业务逻辑的开发,提高业务构建和交付的效率。在容器云原生领域,Serverless Kubernetes 是 Serverless 方式对传统 Kubernetes 的革新,是对未来 Kubernetes 演进方向的一种探索。不同于标准 Kubernetes,Serverless Kubernetes 一方面从根本性简化了容器平台的设计,降低了 Kubernetes 管理运维的复杂性,让用户无需受困于 Kubernetes 集群节点规划、故障诊断;另一方面,释放了计算资源的能力,将安全、可用性、可伸缩性等需求由底层基础设施实现,用户只关注上层业务逻辑的设计。由于 Serverless Kubernetes 具有架构免运维,无需关注集群和底层服务器,一站式部署和运维容器应用等优点,越来越多的云厂商致力于 Serverless Kubernetes 相关技术的研发。

Serverless Kubernetes 的目标之一是架构免运维,希望用户无需关注集群和底层服务器,专注于应用的业务逻辑。体现在 Kubernetes 集群中,用户应更多关注在 pod、job、service 等上层应用编排的语义上,减少对底层 node 的关注。其次,单个 k8s 集群的承载能力有限,在实际生产环境中使用的一般是多个 k8s 集群。根据 Kubernetes 的建议,接入集群的节点数量不超过 5000,每个节点部署的 Pod 数量不超过 100。在 Serverless Kubernetes 场景,提供面向多租户的多集群管理和应用部署能力非常有必要。现有的 k8s 多集群管理和应用部署方法一般通过 kubeconfig 切换多个集群管理集群,通过 api 接口创建应用。这类方法隔离性不够,不同租户共享同一个 node 节点,不适用于公有云环境下的多租户 Serverless Kubernetes 场景。因此,本文基于 virtual kubelet 和 k8s operator 提出了一种面向 Serverless Kubernetes 的多租户多集群管理方法。

 

技术方案

本文通过 virtual kubelet 和 k8s operator 实现多租户多集群管理方法。首先,基于 virtual kubelet 技术实现集群的无节点管理,在租户 k8s 集群,将原先接入 k8s master 的真实 node 节点用 virtual node 替换,由于接入的是虚拟节点而非真实节点,用户无需关心节点的实际物理资源;虚拟节点的创建、更新和删除由 k8s operator 进行控制,实现免运维。其次,每一个 virtual node 对应一个真实的边缘 k8s 集群,调度到 virtual node 上的 Pod 表示要下发到对应的边缘集群;边缘集群均接入到 provider 组件,provider 组件负责管理边缘集群的资源对象,并提供接口给 virtual kubelet 调用,实现多集群的应用部署。该方案的整体架构如下:

在 k8s 集群中,每个 node 节点都会启动一个 kubelet 进程,kubelet 是节点的代理,根据 PodSpec 进行 Pod 的创建、更新和删除,并定期上报 Pod 运行状态和节点健康状态。Virtual kubelet 基于 kubelet 实现,具有跟 kubelet 相同的功能,能够向上伪装成一个 kubelet,从而模拟出一个 virtual node对象,接入 k8s master,对接到 api-server 的原生资源对象。本文基于 virtual kubelet 技术将接入到租户 k8s 集群的真实 node 节点用 virtual node 进行替换,由于接入的是虚拟节点而非真实节点,用户无需关心节点的实际物理资源;其次,编写自定义 operator 管理和运维虚拟节点,实现虚拟节点的自动创建、更新和删除。具体过程如下:

 

 

文章来自个人专栏
Serverless Kubernete
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0