第44节 kubernetes 资源内部版本和外部版本


❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.topopen in new window


[TOC]

资源的外部版本和资源的内部版本

Kubernetes的资源可以分为内部版本和外部版本。

  • 内部版本资源是Kubernetes内部使用的资源对象,它们是由Kubernetes API服务器内部使用的资源对象。
  • 外部版本资源是由用户定义的资源对象,它们是由用户在Kubernetes集群外部创建和管理的。

在Kubernetes中,资源类型和资源定义是在代码中定义的,具体的位置在于Kubernetes源码中的pkg/apis目录下。每一种资源都有自己的目录,里面包含着该资源类型的定义文件和对应控制器的实现文件。

例如,Pod资源类型的定义文件位于pkg/apis/core/v1/pod.go,而Pod控制器的实现文件位于pkg/controller/pod/pod_controller.go

⚠️ 在目录 kubernetes/pkg/apis/apps 下面,我们可以看到 apps 就是定义的<group>

目录结构:

root@cubmaster01:/workspces/kubernetes/pkg/apis/apps# ls
doc.go  install  register.go  v1       v1beta2     zz_generated.deepcopy.go
fuzzer  OWNERS   types.go     v1beta1  validation
root@cubmaster01:/workspces/kubernetes/pkg/apis/apps# ls v1
conversion.go       defaults.go       doc.go       zz_generated.conversion.go
conversion_test.go  defaults_test.go  register.go  zz_generated.defaults.go

ls 看到的就是 资源的外部版本代码定义ls v1 看到的就是 资源的内部版本代码定义。

即内部版本一般和资源组在同一级目录下。

外部版本了的资源类型定义

在Kubernetes中,外部资源版本定义的位置所在:vendor/k8s.io/api 目录下,其完整的描述路径是: vendor/k8s.io/api/<group>/<version>/<resource.file>

例如,Pod 资源的外部版本k8s.io/api/core/v1/

root@cubmaster01:/workspces/kubernetes/vendor/k8s.io/api/core# ls v1/
annotation_key_constants.go  register.go         types.go
doc.go                       resource.go         types_swagger_doc_generated.go
generated.pb.go              taint.go            types_test.go
generated.proto              taint_test.go       well_known_labels.go
lifecycle.go                 toleration.go       well_known_taints.go
objectreference.go           toleration_test.go  zz_generated.deepcopy.go

END 链接