国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

理解 Kubernetes 的 API Schema

運維
在 Kubernetes 中也有 schema 的概念,通過對 kubernetes 中資源(GVK)的規范定義、相互關系間的映射等,schema 即 k8s 資源對象元數據。

詞起源于希臘語中的 ??form??? 或 ??figure???,但具體應該如何定義 ??schema??? 取決于應用環境的上下文。??schema?? 有不同的類型,其含義與數據科學、教育、營銷和 SEO 以及心理學等領域密切相關。

在維基百科中將 schema 解釋為,圖式,在心理學中主要描述一種思維或行為類型,用來組織資訊的類別,以及資訊之間的關系。它也可以被描述為先入為主思想的心理結構,表示世界某些觀點的框架,或是用于組織和感知新資訊的系統。

但在計算機中的 schema 其實與這個解釋很接近了,從很多地方都可以看到 schema 這個名詞,例如 database,openldap,programing language 等的。這里可以簡單的把 _schema_ 理解為 元數據集合 (metadata component),主要包含元素及屬性的聲明,與其他數據結構組成。

數據庫中的 schema

在數據庫中,??schema?? 就像一個骨架結構,代表整個數據庫的邏輯視圖。它設計了應用于特定數據庫中數據的所有約束。當在數據建模時,就會產生一個 schema。在談到關系數據庫]和面向對象數據庫時經常使用 schema。有時也指將結構或文本的描述。

數據庫中 schema 描述數據的形狀以及它與其他模型、表和庫之間的關系。在這種情況下,數據庫條目是 schema 的一個實例,包含 schema 中描述的所有屬性。

數據庫 schema 通常分為兩類:定義數據文件實際存儲方式的物理數據庫 schema 和邏輯數據庫 schema,它描述了應用于存儲數據的所有邏輯約束,包括完整性、表和視圖。常見包括

  • 星型模式(star schema)
  • 雪花模式(snowflake schema)
  • 事實星座模型(fact constellation schema 或 galaxy schema)

星型模式是類似于一個簡單的數據倉庫圖,包括一對多的事實表和維度表。它使用非規范化數據。

圖片

雪花模式是更為復雜的一種流行的數據庫模式,在該模式下,維度表是規范化的,可以節省存儲空間并最大限度地減少數據冗余。

事實星座模式遠比星型模式和雪花模式復雜得多。它擁有多個共享多個維度表的事實表。

圖片

Kubernetes 中的 schema

通過上面的闡述,大概上可以明白 schema 究竟是什么東西了,在 Kubernetes 中也有 schema 的概念,通過對 kubernetes 中資源(GVK)的規范定義、相互關系間的映射等,schema 即 k8s 資源對象元數據。

而 kubernetes 中資源對象即 ??Group??? ??Version??? ??Kind??? 這些被定義在 ??staging/src/k8s.io/api/type.go?? 中,即平時所操作的 yaml 文件,例如

apiVersion: apps/v1
kind: Deployment
metadata:
name: ngx
namespace: default
spec:
selector:
matchLabels:
app: ngx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: ngx-schema
image: nginx
ports:
- containerPort: 80

圖片

而對應的的即為 ??TypeMeta??? 、??ObjectMeta??? 和 ??DeploymentSpec???,??TypeMeta??? 為 ??kind??? 與 ??apiserver???,??ObjectMeta??? 為 ??Name??? 、??Namespace??? ??CreationTimestamp?? 等段。

??DeploymentSpec?? 則對應了 yaml 中的 spec。

而整個 yaml 組成了 一個 k8s 的資源對象。

type Deployment struct {
metav1.TypeMeta `json:",inline"`
// Standard object metadata.
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

// Specification of the desired behavior of the Deployment.
// +optional
Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`

// Most recently observed status of the Deployment.
// +optional
Status DeploymentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}

??register.go?? 則是將對應的資源類型注冊到 schema 中的類

var (
// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)

// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&Deployment{},
&DeploymentList{},
&StatefulSet{},
&StatefulSetList{},
&DaemonSet{},
&DaemonSetList{},
&ReplicaSet{},
&ReplicaSetList{},
&ControllerRevision{},
&ControllerRevisionList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}

而 ??apimachinery?? 包則是 schema 的實現,通過看其內容可以發現,kubernetes 中 schema 就是 GVK 的屬性約束 與 GVR 之間的映射。

通過示例了解 schema

例如在 ??apps/v1/deployment??? 這個資源,在代碼中表示 ??k8s.io/api/apps/v1/types.go??? ,如果需要對其資源進行擴展那么需要怎么做?如,建立一個 ??StateDeplyment?? 資源

type Deployment struct {
metav1.TypeMeta `json:",inline"`
// Standard object metadata.
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

如上述代碼所示,Deployment 中的 ??metav1.TypeMeta??? 和 ??metav1.ObjectMeta??

圖片

那么我們復制一個 Deployment 為 StateDeployment,注意,因為 Deployment 的兩個屬性, ??metav1.TypeMeta??? 和 ??metav1.ObjectMeta?? 分別實現了不同的方法,如圖所示

圖片

所以在實現方法時,需要實現 ??DeepCopyinfo??? , ??DeepCopy??? 和繼承接口 ??Object??? 的 ??DeepCopyObject?? 方法

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StateDeployment) DeepCopyInto(out *StateDeployment) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
in.Status.DeepCopyInto(&out.Status)
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StateDeployment.
func (in *StateDeployment) DeepCopy() *StateDeployment {
if in == nil {
return nil
}
out := new(StateDeployment)
in.DeepCopyInto(out)
return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *StateDeployment) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
return nil
}

那么擴展一個資源的整個流為:

  • 資源類型在:??k8s.io/api/{Group}/types.go??
  • 資料類型的實現接口??k8s.io/apimachinery/pkg/runtime/interfaces.go.Object??
  • 其中是基于??Deployment??? 的類型,??metav1.TypeMeta??? 和??metav1.ObjectMeta??
  • ??metav1.TypeMeta??? 實現了??GetObjectKind()??? ;??metav1.ObjectMeta??? 實現了??DeepCopyinfo=()???,??DeepCopy()??? ,還需要實現??DeepCopyObject()??
  • 最后注冊資源到 schema 中??k8s.io/api/apps/v1/register.go??
責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2022-03-15 08:36:34

NginxKubernetesIngress

2022-07-01 17:57:45

KubernetesAPI

2022-06-21 08:12:17

K8sAPI對象Kubernetes

2022-03-03 08:42:10

NodePortServiceKubernetes

2021-01-12 14:46:34

Kubernetes開發存儲

2022-04-24 10:42:59

Kubernete容器網絡Linux

2022-09-05 08:39:04

kubernetesk8s

2023-11-08 00:23:08

網關API

2022-06-10 18:59:53

容器Kubernetes

2021-10-15 08:27:14

Kubernetes 工具Mizu

2024-01-30 07:58:41

KubernetesGAMMA網關

2023-11-07 07:08:57

2015-07-01 13:34:22

Kubernetes應用部署模型

2024-02-23 16:10:29

KubernetesPrometheus開源

2021-02-19 09:33:01

kubernetesJAVA服務

2022-09-15 10:42:21

API安全網絡攻擊

2022-02-21 16:57:13

APIIDE構建系統

2023-12-13 10:22:04

APISpark數據

2022-01-06 07:46:01

Traefik 開源Gateway API

2022-01-06 07:06:52

KubernetesResourceAPI
點贊
收藏

51CTO技術棧公眾號

欧美韩日一区| 天天av天天翘天天综合网| 国产乱肥老妇国产一区二| 成人av影院在线观看| 欧美日在线观看| av网站免费观看| 国产午夜一区二区三区| 婷婷五月综合缴情在线视频| 首页欧美精品中文字幕| 不卡视频一区二区三区| 欧美系列电影免费观看| 欧美中在线观看| 欧美日韩一区二区三区在线电影| 中文字幕9999| 男人的天堂免费在线视频| 精品国产三级电影在线观看| 3d玉蒲团在线观看| 欧美大片日本大片免费观看| 日本高清在线观看视频| 精品国产91久久久久久久妲己| 麻豆影院在线观看| 欧美高清视频在线高清观看mv色露露十八 | 国产精品自产自拍| 亚洲午夜在线观看| 国产精品一区二区在线播放| 中文字幕第50页| 粉嫩一区二区三区性色av| 久操手机在线视频| 久久综合五月天婷婷伊人| 日日碰狠狠躁久久躁婷婷| 久久久777精品电影网影网| 男人搞女人网站| 一区二区三区.www| 日本人妖在线| 91精品国产品国语在线不卡| 久久不射影院| 日韩中文av在线| 欧美亚洲国产日韩| 成人av电影天堂| 国产模特精品视频久久久久| 一本久道久久综合| 91免费看视频| 欧美高清xxxxxkkkkk| 欧美在线免费观看亚洲| av手机在线观看| 欧美另类极品videosbest最新版本 | 91香蕉视频mp4| 成人18免费入口| 色综合久久久网| 黄色影院在线看| 久久精品国产一区| 国产91一区| 欧美大香线蕉线伊人久久国产精品| 精品一区二区三区视频| 欧美一级特黄a| 欧美日韩一级二级| 日韩免费小视频| 日本精品一区二区三区在线播放视频| 国产大片一区| 一级二级三级欧美| 亚洲欧洲av另类| 国产福利电影在线| 亚洲最大在线视频| 国产在线观看91一区二区三区| 欧美连裤袜在线视频| 久久一区二区三区四区| 九一国产在线| 国产一区二区三区免费视频| 青青草国产成人a∨下载安卓| 日韩视频在线观看国产| 国产精品色一区二区三区| 91大神xh98hx在线播放| 久久精品亚洲94久久精品| 国产尤物精品| 日韩一级免费在线观看| 欧美日韩高清在线播放| 久久天堂久久| 欧美日韩精品免费观看 | 欧美 日韩 国产 在线观看| 最新国产の精品合集bt伙计| 亚洲资源一区| 国产精品ⅴa在线观看h| 久久国产尿小便嘘嘘| 最大av网站| 在线精品国产欧美| 国产精品一区二区久久精品爱涩| 91社区在线| 精品亚洲国产成av人片传媒| 欧美高清视频看片在线观看 | 国产精品视频看| 超碰资源在线| 91精品久久久久久久久久久久久久 | 一本色道久久综合狠狠躁篇的优点 | 久久久午夜视频| 青青草成人在线观看| 免费人成短视频在线观看网站| 亚洲最新中文字幕| 日韩电影在线免费| 国产成人天天5g影院在线观看| 欧美亚洲伦理www| 91丨porny丨户外露出| 日韩特级毛片| 国产精品日韩一区二区三区| 亚洲高清一区二区三区| 美女主播精品视频一二三四| 欧美日韩中文在线视频| 亚洲欧洲黄色网| 欧美a级一区二区| 麻豆传媒在线观看| 亚洲永久免费观看| 亚洲一区二区三区四区在线 | 欧美精品在线观看91| 久色婷婷小香蕉久久| 麻豆网站在线| 国产精品免费在线| 色综合天天做天天爱| 日韩精品免费一区二区在线观看| 99热.com| 欧美怡红院视频一区二区三区| 欧美激情综合五月色丁香 | 成人免费淫片在线费观看| xvideos亚洲人网站| 国产乱子轮精品视频| 欧美黄色视屏| 日韩免费av电影| 亚洲国产精品va在线看黑人动漫| 日韩国产欧美在线播放| 欧美人与牲禽动交com| 欧美高清视频一区| 这里只有精品视频在线观看| 中文亚洲欧美| 欧美韩日亚洲| 亚洲国产精品女人| 这里精品视频免费| 久久一区二区三区四区| 超碰成人97| 亚洲欧美中文字幕在线观看| 国产一区二区香蕉| 欧美中文字幕亚洲一区二区va在线 | 麻豆精品在线视频| 成年男女免费视频网站不卡| 中国女人做爰视频| 中文字幕欧美日韩| 国产精品午夜春色av| 亚洲专区视频| 成人77777| 三年中文高清在线观看第6集| 亚洲性av在线| 国产精品日韩成人| 夜夜春成人影院| 久久久久久久影视| 午夜老司机精品| 久久精品成人欧美大片| 亚洲人成网站影音先锋播放| 一区二区日韩欧美| 国模私拍视频在线播放| 精品无码国模私拍视频| 日本国产欧美一区二区三区| 黄色成人在线播放| 日韩av网站在线观看| 国产亚洲观看| 中文在线有码| 一区二区三区在线视频看| 九九久久久久99精品| 欧美日韩亚洲系列| 久久成人综合网| 老汉色老汉首页av亚洲| 成人免费在线观看| 搞av.com| 成人精品一区二区三区电影黑人| 精品捆绑美女sm三区| 国产亚洲女人久久久久毛片| 国产精品99一区二区三区| 丁香高清在线观看完整电影视频 | 国产精品久久综合av爱欲tv| 欧美日韩欧美一区二区| 国产99一区视频免费| 精品在线观看入口| 高h视频在线观看| 激情五月婷婷久久| 精品一区二区久久久久久久网站| 精品国产欧美成人夜夜嗨| 欧美性极品xxxx娇小| 国产精品一区二区三区网站| 成人情趣视频网站| 欧美91看片特黄aaaa| 亚洲国产精品成人一区二区在线| 国产精品88久久久久久妇女| 国产精品久久久久久久久男| 亚洲免费电影一区| 亚洲国产一区二区三区青草影视| 美女www一区二区| 国产欧美日韩视频在线| 在线成人av观看| 在线观看免费网站| 日本www在线视频| 国产91社区| 欧洲成人在线观看| 亚洲人成电影网站| 欧美日韩一卡二卡|