Kubernetes 服务目录设计
Kubernetes Service Catalog 是基于 Kubernetes 的孵化项目,通过 Open Service Broker API 集成服务中介,管理服务创建和管理。
功能特性
- 服务中介注册到 Kubernetes 上;
- 服务中介指定一组服务提供给用户;
- 用户可以发现可用服务;
- 用户可以请求新的服务实例;
- 用户可以链接服务实例到一组 Pods 上;
这种机制允许运行在 Kubernetes 中的应用与使用的服务之间松耦合。服务中介是一个黑盒实体,可运行在 Kubernetes 外,让应用专注于业务逻辑。
术语
- 应用(Application):表示 Kubernetes 的服务实例;
- 绑定或服务绑定(Binding):服务实例和应用之间的链接;
- 中介或服务中介(Broker):管理一组服务的实体;
- 凭证(Credentials):应用与服务实例通信所需的信息;
- 实例或服务实例(Instance):服务的实现;
- 服务类或服务(Service Class):服务中介提供的一种服务类型;
- 计划或服务计划(Plan):服务类型的变体,如不同 QoS;
Open Service Broker API
服务目录是 OSB API 的兼容实现。详细工作原理请参考官方文档。
服务目录设计
服务目录的核心是 API 服务器和控制器。API 服务器用于存储组件的 HTTP RESTful 前端,用户可通过 kubectl 命令行工具交互。
存储组件可以是 etcd 或 TPRs。使用 etcd 时,服务目录拥有独立的持久存储;使用 TPRs 时,资源存储在 Kubernetes 中。目前 API 服务器仅支持 etcd,未来将添加对 TPRs 的支持。
资源模型定义在 pkg/apis/servicecatalog/types.go 文件中,初始版本在 pkg/apis/servicecatalog/v1alpha1/。
控制器是服务目录的大脑,监视资源模型并根据更改采取行动。
服务中介注册
服务中介首先向平台注册。通过创建 Broker 实例:
kubectl create -f broker.yaml
broker.yaml 示例:
apiVersion: servicecatalog.k8s.io/v1alpha1
kind: Broker
metadata:
name: BestDataBase
spec:
url: http://bestdatabase.com
控制器查询中介获取服务列表,并创建相应的 ServiceClass 资源。
创建服务实例
创建 Instance 资源:
kubectl create -f instance.yaml
instance.yaml 示例:
apiVersion:


