zl程序教程

您现在的位置是:首页 >  后端

当前栏目

kubernetes sample-apiserver解析

Kubernetes 解析 Sample ApiServer
2023-09-11 14:15:45 时间

简介

kubernetes/apiserver同步自kubernertes主代码树的taging/src/k8s.io/apiserver目录,它提供了创建K8S风格的API Server所需要的库。包括kube-apiserverkube-aggregatorservice-catalog在内的很多项目都依赖此库。

apiserver库的目的主要是用来构建API Aggregation中的Extension API Server。它提供的特性包括:

  1. authn/authz委托给主kube-apiserver
  2. 支持kuebctl兼容的API发现
  3. 支持admisson control
  4. 支持版本化的API类型

K8S提供了一个样例kubernetes/sample-apiserver,但是这个例子依赖于主kube-apiserver。即使不使用authn/authz或API聚合,也是如此。你需要通过--kubeconfig来指向一个主kube-apiserver,样例中的SharedInformer依赖于会连接到主kube-apiserver来访问K8S资源。

如果您想构建一个扩展 API 服务器以与 API 聚合一起使用,或者构建一个独立的 Kubernetes 风格的 API 服务器,您可以使用此代码。

但是,请考虑另外两个选项:

  • CRD:如果您只想向 kubernetes 集群添加资源,请考虑使用 Custom Resource Definition aka CRD。它们需要更少的编码和变基。在此处阅读自定义资源定义与扩展 API 服务器之间的差异。
  • Apiserver-builder:如果您想构建一个扩展 API 服务器,请考虑使用apiserver-builder而不是这个repo。Apiserver-builder 是一个完整的框架,用于生成 apiserver、客户端库和安装程序。