成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes 源碼分析之Resource和API

云計算
在 kubernetes 的世界里對各種 resoure 的操作都是基于 API 來完成的,kubernetes 提供了一系列的 RESTfull API 來完成對 resource 的基本操作。

 本文是一個系列文章,以學習為目的,對 kubernetes 源碼進行分析,意在可以更好的去理解 kuberbetes 基本原理。

文章使用主分支(https://github.com/kubernetes/kubernetes),主要介紹 kubernates 中相關組件。另外如果感興趣也可以參看 網絡系列文章 和 部署系列文章。

眾所周知 kubernetes 是基于 API 的 infrastructure,在此之上的 kubernetes 之中的概念都被抽象成各種 resource,不同的 resource 擁有不同的功能,例如我們熟悉并經常使用的 deployment 資源, service 資源, configmap 資源, statefulset 資源, service account 資源等等。在 kubernetes 的世界里對各種 resoure 的操作都是基于 API 來完成的,kubernetes 提供了一系列的 RESTfull API 來完成對 resource 的基本操作。

對于 resource 來說基本上有兩個維度的劃分,一個是基于 namespace 的維度,還有一個是基于是否為核心 resource 的維度,首先我們看基于 namespace 的維度。

  • 如果某一種 resource 實例是被定義在某一個 namespace 中的,既隸屬于 namespace 級別, 那么這個 resource 就可以看作是一個基于當前 namespace 的資源對象實例,例如我們常見的 deployment, service, pod 等等。
  • 如果某一種 resource 實例是被定義在整個 kubernetes cluster 中的, 既隸屬于集群級別, 那么這個 resource 就可以看作是非 namesapce 的資源對象實例,例如我們常見的 node, cluster role, cluster role binding, persistent volume 等等。

接著從 resource 是否為核心資源的維度看,可以把其分為核心資源與非核心資源。

  • 對于核心 resource 來說常見的有 pod, podtemplate, service, endpoint, configmap 等等,這些資源提供了 kubernetes 最基本的能力。例如 pod 提供計算能力,service 和 endpoint 提供網絡和訪問能力,configmap 提供配置能力。
  • 非核心資源例如 deployment, statefulset, deamonset 等等提供更高級的功能。對于非核心資源來說 kubernetes 提供了基于 group 和 version 的管理概念,把不同的資源歸納為同一個組,在同一個組內,同樣的資源又有不同 version。這樣對資源的組織和結構,非常有利于 kubernetes 功能的演進和變化,即通過不同的 resource version 來演進和增強 resource 的能力。

因為 kubernetes 提供了標準的 RESTfull API,從 API 的角度看,基于以上不同維度各種 resource 的操作 API 模板可以如下:

  • Item1 和 Item2 是對于核心 resource 的操作定義格式,都以 /api 為 uri path 前綴,對于核心 resource 來說并沒有 group 的概念,但是卻有 version 的概念,所以里面有 version 的 path 變量 ${version}。
  • item1 為對基于 namespace 的核心 resource 的操作,所以定義里面有 namespace 的 path 變量 ${namespace-name}。
  • item2 為對基于非 namespace 的核心 resource 的操作,所以定義里面并沒有 namespace 的 path 變量。
  • item3 和 item4 為對非核心 resource 的操作定義,以 /apis 為 uri path 前綴。
  • iems3 為對基于 namespace 的非核心 resource 的操作定義,所以訪問路徑里面就會有 group, version, namespace 三者的 path 變量定義, 即 ${group-name} 和 ${version} 以及 ${namespace-name}。
  • items4 為基于整個cluster 的非核心 resource 的操作,所以定義里面就會有 group, version 的 path 變量 ${group-name} 和 ${version},卻并沒有 namespace 的 path 變量。

另外我們一般對 kubernetes 資源的操作都是基于 YAML 格式的文件來進行(畢竟 YAML 文件相對于 human 來說更友好),并不是直接基于 Restfull API 來操作資源,但是在 YAML 文件的背后卻是轉換成 RESTfull API,一般一個 YAML 文件的格式如下:

一般對于 resource 典型的 YAML 文件都會分為三個部分,type meta, object meta 還有 spec。

  • type meta 里一般定義了 resource 的 group version 還有 kind 信息,和 API 訪問路徑里定義的 ${group-name} ${version} ${resource-kind} 等 path 變量直接對應。
  • object meta 里一般定義 resource 的名字,所屬的 namespace,以及 label 等元數據信息,會和 API 訪問路徑里的 ${namespace-name} 和 ${resource-name} 等 path 變量來直接對應。
  • spec 里一般就是定義這個 resource 具體的屬性和特性了(不同 resource spec 一定會有所不一樣),會以 request body 的形式和 API 來對應。

目前先我們寫到這里,在下一篇文章中我們繼續從源碼的角度來梳理 resource 中的 type meta,object meta 等關鍵信息的定義。

本文轉載自微信公眾號「TA碼字」,可以通過以下二維碼關注。轉載本文請聯系TA碼字公眾號。

 

 

責任編輯:武曉燕 來源: TA碼字
相關推薦

2023-03-17 07:53:20

K8sAPIServerKubernetes

2020-07-28 08:54:39

內核通信Netlink

2015-08-10 14:41:39

Kubernetes監控開源容器管理

2022-08-15 11:28:22

handler注冊過程APiServer

2011-05-26 10:05:48

MongoDB

2021-03-23 09:17:58

SpringMVCHttpServletJavaEE

2021-07-06 09:29:38

Cobar源碼AST

2024-06-13 07:55:19

2012-09-20 10:07:29

Nginx源碼分析Web服務器

2023-02-26 08:42:10

源碼demouseEffect

2011-05-26 16:18:51

Mongodb

2023-11-02 20:05:17

KubernetesPod管理

2021-11-25 09:54:54

鴻蒙HarmonyOS應用

2021-09-16 15:08:08

鴻蒙HarmonyOS應用

2022-07-01 17:57:45

KubernetesAPI

2022-06-21 08:12:17

K8sAPI對象Kubernetes

2009-07-08 13:22:30

JDK源碼分析Set

2022-08-27 08:02:09

SQL函數語法

2017-01-12 14:52:03

JVMFinalRefere源碼

2022-05-30 07:36:54

vmstoragevmselect
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色就干| 欧美日韩三区 | 偷拍亚洲色图 | 成年人视频在线免费观看 | 一区二区三区免费 | 亚洲香蕉 | 日本精品视频一区二区三区四区 | 手机av网 | 国产成人精品视频 | 欧美中文字幕一区二区 | www.日韩高清 | 超碰天天 | 日本在线你懂的 | 久久精品国产亚洲 | 黄色成人免费看 | 欧美日韩国产精品 | 欧美一级淫片007 | 一区二区三区在线免费观看 | 日韩一二三区视频 | 国产成人精品免费视频大全最热 | 日韩在线 | 亚洲精品一二三 | 亚洲精品久久久久久久久久久久久 | 日韩成人高清 | 中文字幕在线视频免费视频 | 在线视频中文字幕 | 亚洲国产成人av好男人在线观看 | 色综合99 | 视频在线一区 | 久久久毛片 | 欧美成人精品在线观看 | 中文字幕蜜臀 | 久久精品国产亚洲a | 一区二区亚洲 | 天天操网 | 日韩第一页 | 欧美日韩中文字幕在线 | 日韩精品一区二区三区中文字幕 | 免费一级欧美在线观看视频 | 成人h动漫亚洲一区二区 | 伊人网影院|