精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

一区二区欧美激情| 欧美午夜精品久久久久久超碰| 成人综合电影| 久久久久99精品成人片我成大片| 欧美手机视频| 日韩一区二区在线看片| 日本丰满少妇xxxx| www.国产精品.com| 成人免费视频国产在线观看| 日本午夜精品理论片a级appf发布| 黄大色黄女片18免费| 亚洲国产视频二区| 日本高清不卡视频| 精品国产av无码一区二区三区| 国产最新视频在线观看| 国产成人午夜片在线观看高清观看| 欧美中文在线观看| 亚洲最大的黄色网址| 九一国产精品| 精品第一国产综合精品aⅴ| 国产又大又黄又粗又爽| 极品视频在线| 国产精品精品国产色婷婷| 国产视频精品网| 国产精品欧美激情在线| 麻豆9191精品国产| 久久久久久久999| 日韩av网站在线播放| 日韩有码中文字幕在线| 欧美电影免费提供在线观看| 伊人影院综合在线| 中国色在线日|韩| 亚洲综合一区二区| 在线无限看免费粉色视频| 日韩av资源| 不卡av免费在线观看| 1区1区3区4区产品乱码芒果精品| 亚洲精品国产欧美在线观看| 一区二区高清| 久久久久久久久91| 欧美 日韩 国产 一区二区三区| 国产一区网站| 日韩精品久久久久| 中文字幕亚洲日本| 久久亚洲人体| 欧美在线免费观看视频| 欧美亚洲一二三区| sm在线播放| 亚洲综合视频在线| 佐佐木明希av| 黄色成年人视频在线观看| 中文字幕第一区第二区| 日韩久久不卡| 久热av在线| 久久久久久久精| 欧美日韩精品久久| 精品影院一区| 国产视频一区二区三区在线观看| 欧美成人dvd在线视频| 午夜在线视频观看| 91丨九色porny丨蝌蚪| 九色视频成人porny| 四虎在线免费观看| 成人一道本在线| 国产欧美日韩综合精品二区| 日本黄色不卡视频| av一区二区三区在线| 国产精品国产精品国产专区不卡| 亚洲精品一区二区三区新线路| 国产成人免费视频网站 | 国产偷人爽久久久久久老妇app| 亚洲一区二区成人| 日本中文字幕不卡免费| 69亚洲精品久久久蜜桃小说| 日本欧美在线看| 国产日本欧美一区二区三区在线| 国产精品人人妻人人爽| 国产精品一区二区男女羞羞无遮挡| 91嫩草免费看| 日本黄色三级视频| 久久免费电影网| 特级西西444www大精品视频| 美女隐私在线观看| 亚洲亚洲精品在线观看| 日批视频在线免费看| 欧美日韩精品一区二区三区视频| 欧美美女视频在线观看| 久久久久久久穴| 先锋影音国产精品| 最新中文字幕亚洲| 国产一级一片免费播放放a| 国产精品久久久久9999高清| 国产一区香蕉久久| 黄色片一区二区三区| 26uuu精品一区二区三区四区在线| 婷婷久久五月天| 手机在线免费观看av| 一本久久a久久精品亚洲| 中文字幕线观看| 久久香蕉网站| 日韩亚洲国产中文字幕| 日本三级理论片| 免费观看日韩电影| 国产精品一 二 三| 一区二区三区视频网站| 亚洲五码中文字幕| 国产视频手机在线播放| caoporn成人免费视频在线| 亚洲欧洲视频在线| 久久精品久久国产| 久久99久久精品欧美| 精品亚洲欧美日韩| 国产美女在线观看| 欧美伊人久久久久久午夜久久久久| 亚洲欧美激情一区二区三区| 国内精品视频在线观看| 久久久免费精品| 一本到在线视频| 2020日本不卡一区二区视频| 特级西西444| 精品裸体bbb| 日韩精品在线免费播放| 久草福利资源在线观看| 老司机精品视频一区二区三区| 精品中文字幕人| 综合图区亚洲| 欧美精品国产精品| 国产精品天天干| 一区二区黄色| 国产伦精品一区二区三| bestiality新另类大全| 欧美美女bb生活片| 天天躁夜夜躁狠狠是什么心态| 亚洲精品字幕| 不卡一区二区三区视频| 国产成人高清精品| 欧美日韩免费不卡视频一区二区三区| 欧美一区二区三区成人精品| 亚洲国产黄色| 国产精品免费观看高清| 国产丝袜精品丝袜| 欧美大片拔萝卜| 亚洲天堂黄色片| 极品少妇xxxx偷拍精品少妇| 在线国产伦理一区| 天堂综合在线播放| 日日噜噜噜夜夜爽亚洲精品| 国产一级片av| 国产日本一区二区| wwwwxxxx日韩| 久久免费大视频| 91精品国产自产在线老师啪| 日本中文在线观看| 欧美精品丝袜久久久中文字幕| 2017亚洲天堂| 九九热在线视频观看这里只有精品| 亚洲一区3d动漫同人无遮挡| 深夜日韩欧美| 欧美精品一本久久男人的天堂| 国产精品一品二区三区的使用体验| 亚洲欧洲精品一区二区三区| 三级性生活视频| 伊人久久大香线蕉综合四虎小说| 96sao精品视频在线观看| dy888亚洲精品一区二区三区| 日韩一级片在线观看| 精品人妻在线播放| 99免费精品在线观看| 十八禁视频网站在线观看| 少妇精品久久久| 国产精品视频免费观看www| 麻豆av在线免费看| 欧美va日韩va| 欧美一级视频免费观看| 国产亚洲婷婷免费| 手机av在线免费| 欧美va天堂| 国产伦精品一区二区三区免费视频| 黄色在线免费观看网站| 在线观看国产精品淫| 国产精品久久777777换脸| 一区二区三区加勒比av| 三级男人添奶爽爽爽视频 | 国产福利在线免费| 亚洲电影在线一区二区三区| 国产一区二区三区高清| 在线观看精品| 欧美成人精品一区二区| 天堂av网在线| 欧美久久婷婷综合色| 日韩欧美三级在线观看| 国产清纯在线一区二区www| 亚洲激情在线看| 国产精品观看| 亚洲精品一区二区三区四区五区| 欧美成人一级| 国产成人精品a视频一区www| 性xxxxfjsxxxxx欧美| 亚洲免费福利视频| 性欧美videos另类hd| 欧美视频裸体精品| 成人免费精品动漫网站| 91婷婷韩国欧美一区二区| 国产美女视频免费看| 久久大逼视频| 国产精品av免费观看| 欧美码中文字幕在线| 国产亚洲二区| 亚洲精品乱码日韩| 青青久久aⅴ北条麻妃| 影音先锋在线播放| 在线精品播放av| 五十路在线视频| 日韩一区二区三区电影| 亚洲国产无线乱码在线观看| 亚洲成人一区二区在线观看| 中国一级片在线观看| av爱爱亚洲一区| 丰满少妇一区二区三区专区| 青青草97国产精品免费观看| 日本欧美黄色片| 欧美日韩亚洲三区| 26uuu成人| 日韩毛片视频| 青娱乐一区二区| 亚洲一区二区电影| 91亚洲va在线va天堂va国| а√天堂资源国产精品| 日韩av男人的天堂| 丝袜诱惑一区二区| 97精品国产91久久久久久| 在线看福利影| 久久亚洲精品视频| 麻豆传媒视频在线观看| 在线亚洲男人天堂| 国产精品视频二区三区| 亚洲欧美综合区自拍另类| 天堂av网在线| 精品亚洲va在线va天堂资源站| 黄色福利在线观看| 精品久久久久久综合日本欧美 | 精品福利av导航| 亚洲h视频在线观看| 91精品国产91久久久久久一区二区 | 一区二区三区免费网站| 日韩成人毛片视频| 亚洲欧美视频一区| 希岛爱理中文字幕| 亚洲免费av在线| 青娱乐国产盛宴| 亚洲精品乱码久久久久| 欧美日韩大片在线观看| 亚洲最大成人综合| 精品一区免费观看| 午夜欧美一区二区三区在线播放| 伊人365影院| 天天影视网天天综合色在线播放 | 中国日本在线视频中文字幕| 在线视频精品一| 思思99re6国产在线播放| 菠萝蜜影院一区二区免费| 国产三区在线观看| 欧美激情在线一区| 亚洲欧美se| 国产精品美女av| 电影一区二区三区久久免费观看| 亚洲已满18点击进入在线看片 | 免费亚洲一区| 成人黄色一区二区| 久久国产精品99久久人人澡| 亚洲一区二区中文字幕在线观看| 国产一区二区福利| 中文视频在线观看| 久久精品在线免费观看| 操她视频在线观看| 一区av在线播放| 五月天婷婷久久| 欧美日韩视频第一区| 国产叼嘿视频在线观看| 亚洲国产精品va在线看黑人| 香蕉视频免费看| 日韩中文在线视频| 国产三级伦理在线| 国产精品电影久久久久电影网| 亚洲男女网站| 精品久久sese| 日产午夜精品一线二线三线| 日本a级片在线观看| 性欧美xxxx大乳国产app| 777一区二区| 99re视频精品| 少妇视频一区二区| 欧美日韩亚洲成人| 国产特级aaaaaa大片| 日韩风俗一区 二区| 日本中文字幕在线观看| 国内精品模特av私拍在线观看| 国产a亚洲精品| 国产一区二区不卡视频| 成人免费av| 久激情内射婷内射蜜桃| 久久99久久精品| 欧美黑人欧美精品刺激| 亚洲伦理在线精品| 国产一级片av| 亚洲高清福利视频| 欧美精品videos另类| 热久久99这里有精品| 美女精品视频在线| 污视频在线免费观看一区二区三区| 欧美日韩国产探花| 亚欧激情乱码久久久久久久久| www.爱久久.com| 国产大学生自拍| 欧美日韩一区二区不卡| 瑟瑟在线观看| 欧美极品美女电影一区| 国产精品一区免费在线| 日韩欧美一区二区视频在线播放 | 懂色av成人一区二区三区| 中文字幕日韩精品在线观看| 综合日韩av| 国产在线资源一区| 狠狠88综合久久久久综合网| 91欧美视频在线| 久久久国产午夜精品| 五月婷婷开心网| 亚洲二区在线播放视频| 欧美另类tv| 91九色露脸| 亚洲男女av一区二区| www.99r| 国产精品视频免费看| 欧美一区免费看| 精品一区二区亚洲| 男人久久天堂| 国产精品一区而去| 亚洲调教视频在线观看| 少妇极品熟妇人妻无码| 亚洲黄色小视频| 精品国产免费无码久久久| 久久伊人91精品综合网站| 国产高清精品二区| 国产a级片免费看| 韩国精品在线观看| 欧美丰满艳妇bbwbbw| 欧美一区二区在线看| 动漫一区在线| 99热国产免费| 国产特级黄色片| 久久亚洲国产| 麻豆蜜桃91| 亚洲精品极品| 影音先锋黄色资源| 午夜精品久久久久久久久| 日本黄色一区二区三区| 国模极品一区二区三区| 老司机精品视频在线播放| 精品无码一区二区三区在线| av在线不卡电影| 男人日女人网站| 国产一区二区三区直播精品电影| 成人午夜精品| 亚洲一区二区三区欧美| 久久www免费人成看片高清| 登山的目的在线| 欧美成人bangbros| 亚洲国产福利| 亚洲欧洲中文| 国产美女视频91| 久久精品国产亚洲av麻豆色欲| 亚洲精品久久7777777| 日韩欧美精品电影| 香蕉视频免费版| 成人黄色大片在线观看 | 欧美在线激情网| 欧洲杯半决赛直播| 亚洲三级在线观看视频| 亚洲资源中文字幕| 免费在线国产| 亚洲qvod图片区电影| 99精品国产在热久久| 色欲狠狠躁天天躁无码中文字幕 | 成人免费视频入口| 精品视频免费在线| 性欧美1819sex性高清大胸| 精品高清视频| 奇米888四色在线精品| 日韩成人短视频| 亚洲精品aⅴ中文字幕乱码| 岛国一区二区| 欧美一级免费播放| 欧美国产精品一区二区| 亚洲精品久久久狠狠狠爱| 欧美中文在线视频| 亚洲色图国产| 国产交换配乱淫视频免费| 91精品国产综合久久精品性色| 自拍视频在线看| 特大黑人娇小亚洲女mp4|