精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Kubernetes 容器運行時接口 CRI

云計算 云原生
Kubernetes 作為一個跨云、跨平臺和多環境的容器編排系統,在不同的環境和場景下使用不同的容器平臺。CRI 的出現,保證平臺的多樣性和靈活性。

寫這篇文章是來填 很久之前挖下的坑[1]。

本文涉及組件的源碼版本如下:

  • Kubernetes 1.24
  • CRI 0.25.0
  • Containerd 1.6

容器運行時(Container Runtime)是負責管理和執行容器的組件。它負責將容器鏡像轉化為在主機上運行的實際容器進程,提供鏡像管理、容器的生命周期管理、資源隔離、文件系統、網絡配置等功能。

圖片圖片

常見容器運行時有下面這幾種,這些容器運行時都提供了不同程度的功能和性能。但他們都遵循容器運行時接口(CRI),以便能夠與 Kubernetes 或其他容器編排系統集成,實現容器的調度和管理。

  • containerd[2]
  • CRI-O[3]
  • Docker Engine[4]
  • Mirantis Container Runtime[5]

有了 CRI,我們也可以“隨意”地在幾種容器運行時之間進行切換,而無需重新編譯 Kubernetes。簡單來講,CRI 定義了所有對容器的操作,作為容器編排系統與容器運行時間的標準接口存在。

CRI 的前生今世

圖片圖片

CRI 的首次引入是在 Kubernets 1.5[6],初始版本是 v1alpha1。在這之前,Kubernetes 需要在 kubelet 源碼中維護對各個容器運行時的支持。

有了 CRI 之后,在 kubelet 中僅需支持 CRI 即可,然后通過一個中間層 CRI shim(grpc 服務器)與容器運行時進行交互。因為此時各家容器運行時實現還未支持 CRI。

在去年發布的 Kubernetes 1.24 中,正式移除了 Dockershim[7],與容易運行時的交互得到了簡化。

Kubernetes 目前支持 CRI 的 v1alpha2 和 v1。其中 v1 版本是在 Kubernetes 1.23 版本中引入的。

每次 kubelet 啟動時,首先會嘗試使用 v1 的 API 與容器運行時進行連接。如果失敗,才會嘗試使用 v1alpha2。

kubelet 與 CRI

在之前做過的 kubelet 源碼分析[8] 會持續監控來自 文件、apiserver、http 的變更,來更新 pod 的狀態。寫那篇文章的時候,分析到這里就結束了。因為這之后的工作就交給 容器運行時[9] 來完成 sandbox 和各種容器的創建和運行,見 `kubeGenericRuntimeManager#SyncPod()`[10]。

kubelet 啟動時便會 初始化 CRI 客戶端[11],與容器運行時建立連接并確認 CRI 的版本。

創建 pod 的過程中,都會通過 CRI 與容器運行時進行交互:

  • 創建 sandbox
  • 創建容器
  • 拉取鏡像

參考源碼

  • pkg/kubelet/kuberuntime/kuberuntime_sandbox.go#L39[12]
  • pkg/kubelet/kuberuntime/kuberuntime_container.go#L176[13]
  • pkg/kubelet/images/image_manager.go#L89[14]

接下來我們以 Containerd 為例,看下如何處理 kubelet 的請求。

Containerd 與 CRI

Containerd 的 `criService`[15] 實現了 CRI 接口 `RuntimeService`[16] 和 `ImageService `[17] 的 RuntimeServiceServer 和 ImageServiceServer。

cirService 會進一步包裝成 `instrumentedService`[18],保證所有的操作都是在 k8s.io命名空間下執行的

RuntimeServiceServer


ImageServiceServer

ImageServiceServer[20]

type ImageServiceServer interface {  
    // ListImages lists existing images.    ListImages(context.Context, *ListImagesRequest) (*ListImagesResponse, error)  
    // ImageStatus returns the status of the image. If the image is not    // present, returns a response with ImageStatusResponse.Image set to    // nil.    ImageStatus(context.Context, *ImageStatusRequest) (*ImageStatusResponse, error)  
    // PullImage pulls an image with authentication config.    PullImage(context.Context, *PullImageRequest) (*PullImageResponse, error)  
    // RemoveImage removes the image.    // This call is idempotent, and must not return an error if the image has    // already been removed.    RemoveImage(context.Context, *RemoveImageRequest) (*RemoveImageResponse, error)  
    // ImageFSInfo returns information of the filesystem that is used to store images.  
    ImageFsInfo(context.Context, *ImageFsInfoRequest) (*ImageFsInfoResponse, error)  
}

下面以創建 sandbox 為例看一下 Containerd 的源碼。

Containerd 源碼分析

創建 sandbox 容器的請求通過 CRI 的 UDS(Unix domain socket)[21] 接口 /runtime.v1.RuntimeService/RunPodSandbox,進入到 criService 的處理流程中。在 criService#RunPodSandbox(),負責創建和運行 sandbox 容器,并保證容器狀態正常。

  • 下載 sandobx 容器鏡像
  • 初始化容器元數據
  • 初始化 pod 網絡命名空間,詳細內容可參考之前的文章 源碼解析:從 kubelet、容器運行時看 CNI 的使用[22]
  • 更新容器元數據
  • 寫入文件系統

參考源碼

  • pkg/cri/server/sandbox_run.go#L61[23]
  • services/tasks/local.go#L156[24]

總結

CRI 提供了一種標準化的接口,用于與底層容器運行時進行交互。這對與發展和狀大 Kubernetes 生態系統非常重要:

  • Kubernetes 控制平面與容器管理的具體實現解耦,可以獨立升級或者切換容器運行時,方便擴展和優化。
  • Kubernetes 作為一個跨云、跨平臺和多環境的容器編排系統,在不同的環境和場景下使用不同的容器平臺。CRI 的出現,保證平臺的多樣性和靈活性。

參考資料

[1] 很久之前挖下的坑: https://atbug.com/how-kubelete-container-runtime-work-with-cni/#創建-pod

[2] containerd: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd

[3] CRI-O: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#cri-o

[4] Docker Engine: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

[5] Mirantis Container Runtime: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#mcr

[6] Kubernets 1.5: https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/

[7] 正式移除了 Dockershim: https://kubernetes.io/blog/2022/05/03/dockershim-historical-context/

[8] kubelet 源碼分析: https://mp.weixin.qq.com/s/O7k3MlgyonNtOUxNPrN8lg

[9] 容器運行時: https://kubernetes.io/docs/setup/production-environment/container-runtimes/

[10] kubeGenericRuntimeManager#SyncPod(): https://github.com/kubernetes/kubernetes/blob/023d6fb8f4a7d130bf5c8e725ca310df9e663cd0/pkg/kubelet/kuberuntime/kuberuntime_manager.go#L711

[11] 初始化 CRI 客戶端: https://github.com/kubernetes/kubernetes/blob/14fcab83adf319b8ef8e82e1054412309c46f535/pkg/kubelet/kubelet.go#L285

[12] pkg/kubelet/kuberuntime/kuberuntime_sandbox.go#L39: https://github.com/kubernetes/kubernetes/blob/ea929715339da4553589df61c8638bac3bcae618/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go#L39

[13] pkg/kubelet/kuberuntime/kuberuntime_container.go#L176: https://github.com/kubernetes/kubernetes/blob/3946d99904fe37ea04b231a8d101085b9b80b221/pkg/kubelet/kuberuntime/kuberuntime_container.go#L176

[14] pkg/kubelet/images/image_manager.go#L89: https://github.com/kubernetes/kubernetes/blob/de37b9d293613aac194cf522561d19ee1829e87b/pkg/kubelet/images/image_manager.go#L89

[15] criService: https://github.com/containerd/containerd/blob/1764ea9a2815ddbd0cde777b557f97171b84cd02/pkg/cri/server/service.go#L77

[16] RuntimeService: https://github.com/kubernetes/cri-api/blob/master/pkg/apis/runtime/v1/api.proto#L34

[17] ImageService : https://github.com/kubernetes/cri-api/blob/master/pkg/apis/runtime/v1/api.proto#L128

[18] instrumentedService: https://github.com/containerd/containerd/blob/d3c7e31c8a8f7dc3f0ef0d189fda5a7caca42ce2/pkg/cri/server/instrumented_service.go#L32

[19] RuntimeServiceServer: https://github.com/kubernetes/cri-api/blob/v0.25.0/pkg/apis/runtime/v1/api.pb.go#L9301

[20] ImageServiceServer: https://github.com/kubernetes/cri-api/blob/v0.25.0/pkg/apis/runtime/v1/api.pb.go#L10131C9-L10131C9

[21] UDS(Unix domain socket): https://en.wikipedia.org/wiki/Unix_domain_socket

[22] 源碼解析:從 kubelet、容器運行時看 CNI 的使用: https://atbug.com/how-kubelete-container-runtime-work-with-cni/#創建-sandbox-容器

[23] pkg/cri/server/sandbox_run.go#L61: https://github.com/containerd/containerd/blob/f2376e659ffa55e4ff2578baf4e4c7aab54042e4/pkg/cri/server/sandbox_run.go#L61

[24] services/tasks/local.go#L156: https://github.com/containerd/containerd/blob/bbe46b8c43fc2febe316775bc2d4b9d697bbf05c/services/tasks/local.go#L156


責任編輯:武曉燕 來源: 云原生指北
相關推薦

2021-10-22 00:09:16

Kubernetes容器接口

2019-07-12 09:30:12

DashboardDockerDNS

2021-12-23 07:58:06

Kubelet容器運行

2023-04-03 13:01:14

UbuntuCRI-O

2024-03-20 10:46:00

云原生容器

2021-09-11 15:38:23

容器運行鏡像開放

2025-03-03 08:05:14

2023-01-03 09:10:21

2021-09-02 05:37:22

Containerd Kubernetes 容器

2020-08-11 08:59:20

容器虛擬化技術

2015-07-20 15:44:46

Swift框架MJExtension反射

2021-08-18 06:40:54

KubernetesDocker Containerd

2024-03-21 09:15:58

JS運行的JavaScrip

2020-12-07 08:14:17

KubernetesDocker容器

2021-11-05 08:07:57

kubeletKubernetesContainerd

2009-09-24 17:19:06

運行時多態性

2021-08-18 08:32:09

代碼運行時間示波器

2022-01-19 08:50:53

設備樹Linux文件系統

2013-11-26 16:49:55

Android開發運行時KitKat

2023-07-28 10:42:43

點贊
收藏

51CTO技術棧公眾號

欧美aⅴ一区二区三区视频| 国产精品久久久网站 | 日本天堂在线播放| 国产美女精品写真福利视频| 久久久亚洲午夜电影| 国产九九精品视频| 国产无遮挡又黄又爽| 欧美一级精品| 欧美mv日韩mv国产| 久久精品视频91| 日本动漫理论片在线观看网站| 91色视频在线| 99re视频在线| 狠狠躁夜夜躁人人爽视频| 国产精品va| 一个人www欧美| 挪威xxxx性hd极品| 怡红院成人在线| 亚洲国产一区视频| 中文字幕一区二区三区四区五区| 天天干在线观看| 极品少妇xxxx精品少妇| 日韩免费在线看| 日韩激情在线播放| 欧美成人亚洲| 色噜噜久久综合伊人一本| 亚洲天堂男人天堂| 六月婷婷在线视频| 男人的天堂在线视频免费观看 | 欧美国产一级| 亚洲欧美www| 2一3sex性hd| 深夜福利一区| 91精品国产综合久久国产大片| 欧美极品欧美精品欧美图片| 日本动漫理论片在线观看网站| 中文字幕亚洲在| 欧美中日韩一区二区三区| 欧美综合视频在线| 国产精品一二三区在线| 91精品综合视频| 这里只有精品9| 轻轻草成人在线| 日韩av三级在线观看| 日韩高清免费av| 亚洲区第一页| 欧美福利小视频| 91在线播放观看| 久久精品久久久| 日韩中文字幕久久| аⅴ天堂中文在线网| 中日韩免视频上线全都免费| 亚洲精品美女视频| 亚洲成人av免费在线观看| 9l亚洲国产成人精品一区二三| 777午夜精品视频在线播放| 奇米影音第四色| www.久久.com| 欧美日韩一区二区三区高清| 中文字幕永久视频| 国产激情欧美| 制服丝袜一区二区三区| 亚洲无在线观看| 精品成人18| 精品国产自在久精品国产| 波多野结衣三级视频| 一区二区三区在线免费看| 日韩欧美你懂的| 理论片大全免费理伦片| 欧美wwwsss9999| 亚洲精品视频中文字幕| 六月婷婷七月丁香| 成人精品视频| 久久精品中文字幕免费mv| 无码人妻精品一区二区三区夜夜嗨| 亚洲精品二区三区| 欧美精品激情在线观看| 亚欧视频在线观看| 日韩综合一区二区| 成人免费视频在线观看超级碰| 精品国产无码AV| 成人免费不卡视频| 日本精品一区二区三区高清 久久| 国产高清在线看| 亚洲图片激情小说| 国产在线精品91| abab456成人免费网址| 56国语精品自产拍在线观看| 老熟女高潮一区二区三区| 国产伦精品一区二区三区免费优势| 国产视频精品免费播放| 国产在视频线精品视频| 欧美福利影院| 日产日韩在线亚洲欧美| 91精品人妻一区二区三区果冻| 高清久久久久久| 日本精品一区| 国产三级伦理在线| 欧美午夜理伦三级在线观看| 美女被爆操网站| 国产一区二区亚洲| 欧美成人精品在线观看| 国产精品久免费的黄网站| 精品综合久久久久久8888| 精品日本一区二区三区| 免费黄色在线| 欧美色视频日本高清在线观看| 国产精品嫩草影院8vv8| 久久精品亚洲成在人线av网址| 在线观看91久久久久久| 久久久久久久久久久网| 蜜臀av一区二区在线免费观看| 7777奇米亚洲综合久久 | 99在线精品免费| 亚洲最新在线| 中文字幕 在线观看| 日韩一卡二卡三卡| 国产精品www爽爽爽| 国产精品久久久久久久久久妞妞 | 一级黄色免费看| 97久久人人超碰| 日本福利视频在线观看| 成人1区2区| 亚洲精品中文字幕有码专区| 欧美精品99久久久| 麻豆精品视频在线| 日本三级中国三级99人妇网站| 欧美黑人猛交的在线视频| 欧美日韩一区不卡| 日韩一区二区a片免费观看| 亚洲第一伊人| 999精品在线观看| 成人黄色网址| 欧美剧在线免费观看网站| 国产手机在线观看| 国产日韩视频| 国产一区二区久久久| 午夜dj在线观看高清视频完整版| 欧美三级视频在线播放| 男女做爰猛烈刺激| 久久福利一区| 久久青青草原| 亚洲女同志freevdieo| 亚洲国产精品成人va在线观看| 欧美日韩成人免费观看| 国产一区福利在线| 中文字幕综合在线观看| 亚洲久草在线| 日韩一区二区福利| 岳乳丰满一区二区三区| 国产精品乱人伦| 伊人影院综合在线| 久久免费大视频| 成人免费看吃奶视频网站| 国产激情小视频在线| 91精品婷婷国产综合久久性色 | 91精品免费视频| 国产黄a三级三级三级av在线看| 欧美丰满嫩嫩电影| 男人操女人的视频网站| 国产高清无密码一区二区三区| 六月婷婷激情网| 91免费精品国偷自产在线在线| 九九久久精品一区| 蜜臀久久99精品久久久| 欧美日韩色婷婷| 黄色av免费播放| 精品一区二区国语对白| 91传媒免费视频| 老司机成人在线| 日本道色综合久久影院| 91吃瓜网在线观看| 日韩色视频在线观看| 日本少妇激情视频| 国产高清不卡| 7777女厕盗摄久久久| 黄色片在线观看网站| 成人三级在线视频| 亚洲人成色77777| 欧美成人激情| 成人欧美一区二区三区视频| 日韩影院在线| 日韩中文有码在线视频| 亚洲精品成人电影| 色综合天天综合网国产成人综合天 | 国产.欧美.日韩| 国产偷人视频免费| 999成人网| 精品蜜桃一区二区三区| 国产一区二区三区四区五区3d| 欧美成人高清视频| 美丽的姑娘在线观看免费动漫| 欧美日本韩国一区二区三区视频 | 99精品热6080yy久久| 日产国产精品精品a∨| 日韩专区视频网站| 91精品国产乱码久久久久久蜜臀 | 精品999在线| 欧美午夜在线| 天天综合色天天综合色hd| 天堂va在线高清一区| 日本a级片电影一区二区| av免费在线观看网站| 亚洲男子天堂网| 国产xxxx在线观看| 色婷婷精品久久二区二区蜜臂av | 激情欧美一区| 亚洲欧洲久久| 神马久久影院| 99视频在线播放| 欧美黄页免费| 奇米影视亚洲狠狠色| 亚洲国产精品精华素| 在线成人一区二区| 日韩美女一级视频| 欧美v日韩v国产v| 亚洲综合精品国产一区二区三区| 午夜精品123| 欧美激情精品久久| 国产精品国产成人国产三级| 成人h动漫精品一区| 丁香桃色午夜亚洲一区二区三区| 91高清国产视频| 久久久久久久高潮| 精品无码一区二区三区在线| 亚洲欧美伊人| 中文字幕色一区二区| 北条麻妃国产九九九精品小说| 国产在线精品日韩| 亚洲第一二区| 亚洲一区中文字幕在线观看| 成人免费一区| 国产精品久久久久久久久久99 | 美女国产在线| 中文日韩在线视频| 国产视频网站在线| 亚洲欧美国产一区二区三区 | av爱爱亚洲一区| 国产日韩视频一区| 成人在线视频一区| 香蕉久久久久久av成人| 国产精品白丝av| 黄色片子免费看| 国产精品亚洲一区二区三区在线| 午夜视频在线网站| 激情综合色综合久久| 国产精品区在线| 狠狠色狠狠色综合系列| 亚洲一二区在线观看| 久久99国产精品成人| 特级西西444www| 国产酒店精品激情| 日本黄色大片在线观看| 国产69精品久久久久毛片 | 国产丝袜在线精品| 性猛交ⅹxxx富婆video| 国产区在线观看成人精品| 日韩女同一区二区三区| 日本一区二区免费在线| 色www亚洲国产阿娇yao| 亚洲天堂福利av| 特级片在线观看| 偷拍日韩校园综合在线| 日韩不卡在线播放| 欧美在线制服丝袜| 一二三四区在线| 欧美成人a∨高清免费观看| 国模私拍视频在线| 亚洲精品小视频| 拍真实国产伦偷精品| 欧美猛少妇色xxxxx| av免费不卡| 国产91色在线|免| 日本免费成人| 国产 高清 精品 在线 a| 久久成人福利| 视频一区免费观看| 午夜激情一区| 久久婷婷五月综合色国产香蕉| 秋霞电影网一区二区| 欧美精品色视频| 91蜜桃婷婷狠狠久久综合9色| 熟女少妇内射日韩亚洲| 亚洲欧美日韩在线| 天堂网一区二区三区| 91福利在线免费观看| 99久久免费国产精精品| 日韩av网站电影| 黄色网页在线看| 韩国欧美亚洲国产| 欧美jizz18| 国产专区一区二区| 日韩一区欧美| 野外做受又硬又粗又大视频√| 丝瓜av网站精品一区二区| 欧美一级免费在线| 国产亚洲精品aa午夜观看| 久久久久97国产| 欧美影视一区二区三区| 欧美 日韩 综合| 久久精品视频在线| 麻豆免费在线| 亚洲在线观看视频网站| 宅男在线一区| 国产freexxxx性播放麻豆| 肉色丝袜一区二区| 国产精品久久久久久在线观看| 国产精品久久久久三级| 国产精品久久久久久人| 日韩免费在线观看| 92国产在线视频| 国产91成人video| 99re91这里只有精品| 宅男一区二区三区| 日精品一区二区| 中国黄色a级片| 午夜精品一区二区三区三上悠亚| 亚洲一区中文字幕在线| 国产亚洲免费的视频看| 免费h视频在线观看| 俄罗斯精品一区二区| 天天久久综合| 中文字幕第100页| 久久精品欧美一区二区三区不卡| 国产无码精品久久久| 日韩一区二区三区高清免费看看| 91社区在线观看| 国产成人综合一区二区三区| 欧美天堂社区| 9久久9毛片又大又硬又粗| 成人免费视频网站在线观看| 91视频免费在线看| 欧美电影免费提供在线观看| 蜜桃视频在线观看www社区| 国产精品中文字幕在线| 精品精品99| 国产真人无码作爱视频免费| 久久影音资源网| 国产免费av一区| 亚洲美女免费精品视频在线观看| 999福利在线视频| 激情小说综合区| 中文亚洲字幕| theav精尽人亡av| 丁香五六月婷婷久久激情| 婷婷av一区二区三区| 97香蕉久久超级碰碰高清版 | 欧美日韩尤物久久| 色狠狠久久av五月综合| 日本免费在线视频不卡一不卡二| 人成免费在线视频| 欧美日韩日本视频| 九七久久人人| 97超级碰碰| 亚洲日本欧美| 爱爱的免费视频| 日本韩国欧美一区二区三区| 成年人视频在线观看免费| 国产欧洲精品视频| 欧美一区不卡| 人妻 日韩 欧美 综合 制服| 岛国av在线不卡| 成人亚洲综合天堂| 成人h视频在线| 欧美日韩精品免费观看视频完整| 在线中文字日产幕| 欧美性videos高清精品| 在线观看黄av| 91网免费观看| 国产一区成人| 自拍偷拍你懂的| 日韩午夜精品视频| 黄色aa久久| 亚洲乱码一区二区三区| 国产精品一卡二| 日日夜夜综合网| 日韩在线视频观看| 精品国产导航| 中文字幕欧美人妻精品一区| 国产精品成人免费| 日本精品一区二区在线观看| 日韩美女视频免费在线观看| 偷拍欧美精品| 国产又粗又猛又色| 欧美综合久久久| 人人超在线公开视频| 欧美亚洲精品日韩| 国产美女在线精品| 中文字幕在线欧美| 久久夜精品香蕉| 久久av导航| 中文字幕一二三区| 色婷婷av久久久久久久| yellow91字幕网在线| 蜜桃免费一区二区三区| 国产美女精品人人做人人爽| 狠狠人妻久久久久久| 久久国产色av| 成人精品亚洲| free性中国hd国语露脸|