kubernetes提供了两种机制供用户扩展API
(1)使用CRD机制:复用Kubernetes的API Server,无需编写额外的API Server,用户只需要定义CRD,并且提供一个CRD控制器,就能通过Kubernetes的API管理自定义资源对象了,同时要求用户的CRD对象符合APIServer的管理规范
1、创建CRD的定义
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: virtualservices.networking.istio.io
annotations:
"helm.sh/hook":crd-install
labels:
app: istio-pilot
spec:
group: networking.istio.io
scope: Namespaced
versions:
- name: v1alpha3
served: true
storage: true
names:
kind: VirtualService
listKind: VirtualServiceList
singular: virtualservice
plural: virtualservices
categories:
- istio-io
- networking-istio-io
2、基于CRD的定义创建自定义资源对象
下面是定义了一个类型为VirtualService的资源对象
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: helloword
spec:
hosts:
- “*”
gateways:
- helloword-gateway
http:
- match:
- uri:
exact: /hello
route:
- destination:
host: helloword
port:
number: 5000
3、使用API聚合机制扩展API资源
API聚合机制的主要目标
1、增加API的扩展性
2、无须等待Kubernetes核心团队的繁杂审查
3、支持实验性新特性API开发
4、确保新的API遵循Kubernetes的规范
5、Metrics Server通过聚合API提供Pod和Node的资源使用数据,供HPA控制器,VPA控制器及kubectl top命令使用.
欲了解更多相关知识,请关注公众号:架构师Plus