Categories
程式開發

如何构建以应用为中心的“Kubernetes”?


在上篇文章《上 Kubernetes 到底有什么业务价值?》,主要和大家介绍了上 Kubernetes 有什么业务价值,以及什么是“以应用为中心”的 Kubernetes。本文将跟大家具体分享如何构建“以应用为中心”的 Kubernetes。

如何构建“以应用为中心”的 Kubernetes?

如何构建以应用为中心的“Kubernetes”? 1

构建这么一个以用户为中心的 Kubernetes,需要做几个层级的事情。

1. 应用层驱动

首先来看最核心的部分,上图中蓝色部分,也就是 Kubernetes。可以在 Kubernetes 之上定义一组 CRD 和 Controller。可以在 CRD 来做用户这一侧的 API,比如说 pipeline 就是一个 API,应用也是一个 API。像运维侧的扩容策略这些都是可以通过 CRD 的方式安装起来。

2. 应用层抽象

所以我们的需要解决第一个问题是应用抽象。如果在 Kubernetes 去做应用层抽象,就等同于定义 CRD 和 Controller,所以 Controller 可以叫做应用层的抽象。本身可以是社区里的,比如 Tekton,istio 这些,可以作为你的应用驱动层。这是第一个问题,解决的是抽象的问题。不是特别难。

3. 插件能力管理

很多功能不是 K8s 提供的,内置的 Controller 还是有限的,大部分能力来自于社区或者是自己开发的 Controller。这时我的集群里面就会安装好多好多插件。如果要构建以应用为中心的 Kubernetes,那我必须能够管理起来这些能力,否则整个集群就会脱管了。用户想要这么一个能力,我需要告诉他有或者是没有。需要暴露出一个 API 来告诉他,集群是否有他需要的能力。假设需要 istio 的流量切分,需要有个接口告诉用户这个能力存不存在。不能指望用户去 get 一下 crd 合不合适,检查 Controller 是否运行。这不叫以应用为中心的 K8s,这叫裸 K8s。

原文链接:【https://www.infoq.cn/article/PHGbohj73SDPIH3roPTy】。未经作者许可,禁止转载。