自定义资源(CRD), 是对Kubernetes API的扩展,kubernetes中的每个资源都是一个API对象的集合,例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义,所有的自定义资源可以跟kubernetes中内建的资源一样使用kubectl操作
参考下面的CRD,crd.yaml:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
# 名称必须符合下面的格式:.
name: crontabs.stable.example.com
spec:
# REST API使用的组名称:/apis//
group: stable.example.com
# REST API使用的版本号:/apis//
version: v1
# Namespaced或Cluster
scope: Namespaced
names:
# URL中使用的复数名称: /apis///
plural: crontabs
# CLI中使用的单数名称
singular: crontab
# CamelCased格式的单数类型。在清单文件中使用
kind: CronTab
# CLI中使用的资源简称
shortNames:
- ct
创建该CRD:
kubectl create -f crd.yaml
查看创建结果:
kubectl get crd
the server doesn't have a resource type "crd"
why? 为什么, 不可思议,完全按照example 下来,然后各种思绪激情碰撞。。。
记得以前看文档时:CRD 是后来加进来的,具体哪个版本不记得(只是有这个印象),好, 我们验证下当前自己环境中的:
kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean", BuildDate:"2016-12-14T00:57:05Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
再查查资料,走起。。。
Kubernetes1.6版本中包含一个内建的资源叫做TPR(ThirdPartyResource),可以用它来创建自定义资源,但该资源在kubernetes1.7版本中已被CRD(CustomResourceDefinition)取代。
确实是,自己的当前版本太低了,让我们升级一把试试哈哈。。
brew install kubectl
再次验证下:
kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.3", GitCommit:"5e53fd6bc17c0dec8434817e69b04a25d8ae0ff0", GitTreeState:"clean", BuildDate:"2019-06-07T09:55:27Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
kubectl get crd
NAME CREATED AT
crontabs.stable.example.com 2019-06-17T06:18:00Z
students.bolingcavalry.k8s.io 2019-06-17T06:01:57Z