0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

k8s容器運(yùn)行時演進(jìn)歷史

Linux愛好者 ? 來源:Linux愛好者 ? 作者:Frank范 ? 2021-02-02 13:50 ? 次閱讀

在docker/k8s時代,經(jīng)常聽到CRI, OCI,containerd和各種shim等名詞,看完本篇博文,您會有個徹底的理解。

典型的K8S Runtime架構(gòu)

從最常見的Docker說起,kubelet和Docker的集成方案圖如下:

32017316-5f10-11eb-8b86-12bb97331649.png

當(dāng)kubelet要創(chuàng)建一個容器時,需要以下幾步:

Kubelet 通過 CRI 接口(gRPC)調(diào)用 dockershim,請求創(chuàng)建一個容器。CRI 即容器運(yùn)行時接口(Container Runtime Interface),這一步中,Kubelet 可以視作一個簡單的 CRI Client,而 dockershim 就是接收請求的 Server。目前 dockershim 的代碼其實(shí)是內(nèi)嵌在 Kubelet 中的,所以接收調(diào)用的湊巧就是 Kubelet 進(jìn)程;

dockershim 收到請求后,轉(zhuǎn)化成 Docker Daemon 能聽懂的請求,發(fā)到 Docker Daemon 上請求創(chuàng)建一個容器。

Docker Daemon 早在 1.12 版本中就已經(jīng)將針對容器的操作移到另一個守護(hù)進(jìn)程——containerd 中了,因此 Docker Daemon 仍然不能幫我們創(chuàng)建容器,而是要請求 containerd 創(chuàng)建一個容器;

containerd 收到請求后,并不會自己直接去操作容器,而是創(chuàng)建一個叫做 containerd-shim 的進(jìn)程,讓 containerd-shim 去操作容器。這是因?yàn)槿萜鬟M(jìn)程需要一個父進(jìn)程來做諸如收集狀態(tài),維持 stdin 等 fd 打開等工作。而假如這個父進(jìn)程就是 containerd,那每次 containerd 掛掉或升級,整個宿主機(jī)上所有的容器都得退出了。而引入了 containerd-shim 就規(guī)避了這個問題(containerd 和 shim 并不是父子進(jìn)程關(guān)系);

我們知道創(chuàng)建容器需要做一些設(shè)置 namespaces 和 cgroups,掛載 root filesystem 等等操作,而這些事該怎么做已經(jīng)有了公開的規(guī)范了,那就是 OCI(Open Container Initiative,開放容器標(biāo)準(zhǔn))。它的一個參考實(shí)現(xiàn)叫做 runC。于是,containerd-shim 在這一步需要調(diào)用 runC 這個命令行工具,來啟動容器;

runC 啟動完容器后本身會直接退出,containerd-shim 則會成為容器進(jìn)程的父進(jìn)程,負(fù)責(zé)收集容器進(jìn)程的狀態(tài),上報給 containerd,并在容器中 pid 為 1 的進(jìn)程退出后接管容器中的子進(jìn)程進(jìn)行清理,確保不會出現(xiàn)僵尸進(jìn)程。

這個過程乍一看像是在搞我們:Docker Daemon 和 dockershim 看上去就是兩個不干活躺在中間劃水的啊,Kubelet 為啥不直接調(diào)用 containerd 呢?

當(dāng)然可以,先看下現(xiàn)在的架構(gòu)為什么如此繁雜。

容器歷史小敘

早期的k8s runtime架構(gòu),遠(yuǎn)沒這么復(fù)雜,kubelet創(chuàng)建容器,直接調(diào)用docker daemon,docker daemon自己調(diào)用libcontainer就把容器運(yùn)行起來。

但往往,事情不會如此簡單,一系列政治斗爭開始了,先是大佬們認(rèn)為運(yùn)行時標(biāo)準(zhǔn)不能被 Docker 一家公司控制,于是就攛掇著搞了開放容器標(biāo)準(zhǔn) OCI。Docker 則把 libcontainer 封裝了一下,變成 runC 捐獻(xiàn)出來作為 OCI 的參考實(shí)現(xiàn)。

再接下來就是 rkt(coreos推出的,類似docker) 想從 Docker 那邊分一杯羹,希望 Kubernetes 原生支持 rkt 作為運(yùn)行時,而且 PR 還真的合進(jìn)去了。維護(hù)過一塊業(yè)務(wù)同時接兩個需求方的讀者老爺應(yīng)該都知道類似的事情有多坑,Kubernetes 中負(fù)責(zé)維護(hù) kubelet 的小組 sig-node 也是被狠狠坑了一把。

大家一看這么搞可不行,今天能有 rkt,明天就能有更多幺蛾子出來,這么搞下去我們小組也不用干活了,整天搞兼容性的 bug 就夠嗆。于是乎,Kubernetes 1.5 推出了 CRI 機(jī)制,即容器運(yùn)行時接口(Container Runtime Interface),Kubernetes 告訴大家,你們想做 Runtime 可以啊,我們也資瓷歡迎,實(shí)現(xiàn)這個接口就成,成功反客為主。

不過 CRI 本身只是 Kubernetes 推的一個標(biāo)準(zhǔn),當(dāng)時的 Kubernetes 尚未達(dá)到如今這般武林盟主的地位,容器運(yùn)行時當(dāng)然不能說我跟 Kubernetes 綁死了只提供 CRI 接口,于是就有了 shim(墊片)這個說法,一個 shim 的職責(zé)就是作為 Adapter 將各種容器運(yùn)行時本身的接口適配到 Kubernetes 的 CRI 接口上。

接下來就是 Docker 要搞 Swarm 進(jìn)軍 PaaS 市場,于是做了個架構(gòu)切分,把容器操作都移動到一個單獨(dú)的 Daemon 進(jìn)程 containerd 中去,讓 Docker Daemon 專門負(fù)責(zé)上層的封裝編排??上?Swarm 在 Kubernetes 面前實(shí)在是不夠打,慘敗之后 Docker 公司就把 containerd 項目捐給 CNCF 縮回去安心搞 Docker 企業(yè)版了。

最后就是我們在上一張圖里看到的這一坨東西了,盡管現(xiàn)在已經(jīng)有 CRI-O,containerd-plugin 這樣更精簡輕量的 Runtime 架構(gòu),dockershim 這一套作為經(jīng)受了最多生產(chǎn)環(huán)境考驗(yàn)的方案,迄今為止仍是 Kubernetes 默認(rèn)的 Runtime 實(shí)現(xiàn)。

OCI, CRI

OCI(開放容器標(biāo)準(zhǔn)),規(guī)定了2點(diǎn):

容器鏡像要長啥樣,即 ImageSpec。里面的大致規(guī)定就是你這個東西需要是一個壓縮了的文件夾,文件夾里以 xxx 結(jié)構(gòu)放 xxx 文件;

容器要需要能接收哪些指令,這些指令的行為是什么,即 RuntimeSpec。這里面的大致內(nèi)容就是“容器”要能夠執(zhí)行 “create”,“start”,“stop”,“delete” 這些命令,并且行為要規(guī)范。

runC 為啥叫參考實(shí)現(xiàn)呢,就是它能按照標(biāo)準(zhǔn)將符合標(biāo)準(zhǔn)的容器鏡像運(yùn)行起來,標(biāo)準(zhǔn)的好處就是方便搞創(chuàng)新,反正只要我符合標(biāo)準(zhǔn),生態(tài)圈里的其它工具都能和我一起愉快地工作(……當(dāng)然 OCI 這個標(biāo)準(zhǔn)本身制定得不怎么樣,真正工程上還是要做一些 adapter 的),那我的鏡像就可以用任意的工具去構(gòu)建,我的“容器”就不一定非要用 namespace 和 cgroups 來做隔離。這就讓各種虛擬化容器可以更好地參與到游戲當(dāng)中,我們暫且不表。

而 CRI 更簡單,單純是一組 gRPC 接口,掃一眼 kubelet/apis/cri/services.go 就能歸納出幾套核心接口:

一套針對容器操作的接口,包括創(chuàng)建,啟停容器等等;

一套針對鏡像操作的接口,包括拉取鏡像刪除鏡像等;

一套針對 PodSandbox(容器沙箱環(huán)境)的操作接口,我們之后再說。

現(xiàn)在我們可以找到很多符合 OCI 標(biāo)準(zhǔn)或兼容了 CRI 接口的項目,而這些項目就大體構(gòu)成了整個 Kuberentes 的 Runtime 生態(tài):

OCI Compatible:runC,Kata(以及它的前身 runV 和 Clear Containers),gVisor。其它比較偏門的還有 Rust 寫的 railcar

CRI Compatible:Docker(借助 dockershim),containerd(借助 CRI-containerd),CRI-O,F(xiàn)rakti,etc

OCI, CRI 確實(shí)不是一個好名字,在這篇文章的語境中更準(zhǔn)確的說法:cri-runtime 和 oci-runtime。通過這個粗略的分類,我們其實(shí)可以總結(jié)出整個 Runtime 架構(gòu)萬變不離其宗的三層抽象:

Orchestration API -> Container API(cri-runtime) -> Kernel API(oci-runtime)

根據(jù)這個思路,我們就很容易理解下面這兩種東西:

各種更為精簡的 cri-runtime(反正就是要干掉 Docker)

各種“強(qiáng)隔離”容器方案

Containerd和CRI-O

上一節(jié)看到現(xiàn)在的 Runtime 實(shí)在是有點(diǎn)復(fù)雜了,而復(fù)雜是萬惡之源(其實(shí)本質(zhì)上就是想干掉 Docker),于是就有了直接拿 containerd 做 oci-runtime 的方案。當(dāng)然,除了 Kubernetes 之外,containerd 還要接諸如 Swarm 等調(diào)度系統(tǒng),因此它不會去直接實(shí)現(xiàn) CRI,這個適配工作當(dāng)然就要交給一個 shim 了。

containerd 1.0 中,對 CRI 的適配通過一個單獨(dú)的進(jìn)程 CRI-containerd 來完成:

32a9dbdc-5f10-11eb-8b86-12bb97331649.png

containerd 1.1 中做的又更漂亮一點(diǎn),砍掉了 CRI-containerd 這個進(jìn)程,直接把適配邏輯作為插件放進(jìn)了 containerd 主進(jìn)程中:

3370f6e0-5f10-11eb-8b86-12bb97331649.png

但在 containerd 做這些事情前,社區(qū)就已經(jīng)有了一個更為專注的 cri-runtime:CRI-O,它非常純粹,就是兼容 CRI 和 OCI,做一個 Kubernetes 專用的運(yùn)行時:

350a75c6-5f10-11eb-8b86-12bb97331649.png

其中 conmon 就對應(yīng) containerd-shim,大體意圖是一樣的。

CRI-O 和(直接調(diào)用)containerd 的方案比起默認(rèn)的 dockershim 確實(shí)簡潔很多,但沒啥生產(chǎn)環(huán)境的驗(yàn)證案例,我所知道的僅僅是 containerd 在 GKE 上是 beta 狀態(tài)。因此假如你對 Docker 沒有特殊的政治恨意,大可不必把 dockershim 這套換掉。

強(qiáng)隔離容器:Kata,gVisor,F(xiàn)irecracker

一直以來,K8S都難以實(shí)現(xiàn)真正的多租戶。

理想來說,平臺的各個租戶(tenant)之間應(yīng)該無法感受到彼此的存在,表現(xiàn)得就像每個租戶獨(dú)占這整個平臺一樣。具體來說,我不能看到其它租戶的資源,我的資源跑滿了不能影響其它租戶的資源使用,我也無法從網(wǎng)絡(luò)或內(nèi)核上攻擊其它租戶。
Kubernetes 當(dāng)然做不到,其中最大的兩個原因是:

kube-apiserver 是整個集群中的單例,并且沒有多租戶概念

默認(rèn)的 oci-runtime 是 runC,而 runC 啟動的容器是共享內(nèi)核的

對于第二個問題,一個典型的解決方案就是提供一個新的 OCI 實(shí)現(xiàn),用 VM 來跑容器,實(shí)現(xiàn)內(nèi)核上的硬隔離。runV 和 Clear Containers 都是這個思路。因?yàn)檫@兩個項目做得事情是很類似,后來就合并成了一個項目 Kata Container。Kata 的一張圖很好地解釋了基于虛擬機(jī)的容器與基于 namespaces 和 cgroups 的容器間的區(qū)別:

35d3881c-5f10-11eb-8b86-12bb97331649.png

當(dāng)然,沒有系統(tǒng)是完全安全的,假如 hypervisor 存在漏洞,那么用戶仍有可能攻破隔離。但所有的事情都要對比而言,在共享內(nèi)核的情況下,暴露的攻擊面是非常大的,做安全隔離的難度就像在美利堅和墨西哥之間修 The Great Wall,而當(dāng)內(nèi)核隔離之后,只要守住 hypervisor 這道關(guān)子就后顧無虞了。

嗯,一個 VM 里跑一個容器,聽上去隔離性很不錯,但不是說虛擬機(jī)又笨重又不好管理才切換到容器的嗎,怎么又要走回去了?

Kata 告訴你,虛擬機(jī)沒那么邪惡,只是以前沒玩好:

不好管理是因?yàn)闆]有遵循“不可變基礎(chǔ)設(shè)施”,大家都去虛擬機(jī)上這摸摸那碰碰,這臺裝 Java 8 那臺裝 Java 6,Admin 是要 angry 的。Kata 則支持 OCI 鏡像,完全可以用上 Dockerfile + 鏡像,讓不好管理成為了過去時;

笨重是因?yàn)橹耙摂M化整個系統(tǒng),現(xiàn)在我們只著眼于虛擬化應(yīng)用,那就可以裁剪掉很多功能,把 VM 做得很輕量,因此即便用虛擬機(jī)來做容器,Kata 還是可以將容器啟動時間壓縮得非常短,啟動后在內(nèi)存上和 IO 上的 overhead 也盡可能去優(yōu)化。

不過話說回來,Kubernetes 上的調(diào)度單位是 Pod,是容器組啊,Kata 這樣一個虛擬機(jī)里一個容器,同一個 Pod 間的容器還怎么做 namespace 的共享?

這就要說回我們前面講到的 CRI 中針對 PodSandbox(容器沙箱環(huán)境)的操作接口了。第一節(jié)中,我們刻意簡化了場景,只考慮創(chuàng)建一個容器,而沒有討論創(chuàng)建一個 Pod。大家都知道,真正啟動 Pod 里定義的容器之前,kubelet 會先啟動一個 infra 容器,并執(zhí)行 /pause 讓 infra 容器的主進(jìn)程永遠(yuǎn)掛起。這個容器存在的目的就是維持住整個 Pod 的各種 namespace,真正的業(yè)務(wù)容器只要加入 infra 容器的 network 等 namespace 就能實(shí)現(xiàn)對應(yīng) namespace 的共享。而 infra 容器創(chuàng)造的這個共享環(huán)境則被抽象為 PodSandbox。每次 kubelet 在創(chuàng)建 Pod 時,就會先調(diào)用 CRI 的 RunPodSandbox 接口啟動一個沙箱環(huán)境,再調(diào)用 CreateContainer 在沙箱中創(chuàng)建容器。

這里就已經(jīng)說出答案了,對于 Kata Container 而言,只要在 RunPodSandbox 調(diào)用中創(chuàng)建一個 VM,之后再往 VM 中添加容器就可以了。最后運(yùn)行 Pod 的樣子就是這樣的:

350a75c6-5f10-11eb-8b86-12bb97331649.png

說完了 Kata,其實(shí) gVisor 和 Firecracker 都不言自明了,大體上都是類似的,只是:

gVisor 并不會去創(chuàng)建一個完整的 VM,而是實(shí)現(xiàn)了一個叫 “Sentry” 的用戶態(tài)進(jìn)程來處理容器的 syscall,而攔截 syscall 并重定向到 Sentry 的過程則由 KVM 或 ptrace 實(shí)現(xiàn)。

Firecracker 稱自己為 microVM,即輕量級虛擬機(jī),它本身還是基于 KVM 的,不過 KVM 通常使用 QEMU 來虛擬化除 CPU 和內(nèi)存外的資源,比如 IO 設(shè)備,網(wǎng)絡(luò)設(shè)備。Firecracker 則使用 rust 實(shí)現(xiàn)了最精簡的設(shè)備虛擬化,為的就是壓榨虛擬化的開銷,越輕量越好。

責(zé)任編輯:xj

原文標(biāo)題:淺析 k8s 容器運(yùn)行時演進(jìn)

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    22014
  • CRI
    CRI
    +關(guān)注

    關(guān)注

    1

    文章

    16

    瀏覽量

    12222
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    446

    瀏覽量

    11773

原文標(biāo)題:淺析 k8s 容器運(yùn)行時演進(jìn)

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    k8s容器啟動失敗的常見原因及解決辦法

    k8s容器啟動失敗的問題通常出現(xiàn)在開發(fā)者使用Kubernetes進(jìn)行容器編排時,可能的原因有多種,例如:配置錯誤、鏡像問題、資源限制、依賴問題、網(wǎng)絡(luò)問題、節(jié)點(diǎn)狀態(tài)異常、其他因素等,以下是對這些常見原因的詳細(xì)分析:
    的頭像 發(fā)表于 10-11 10:12 ?111次閱讀

    云服務(wù)器部署k8s需要什么配置?

    云服務(wù)器部署K8s需要至少2核CPU、4GB內(nèi)存、50GBSSD存儲的主節(jié)點(diǎn)用于管理集群,工作節(jié)點(diǎn)建議至少2核CPU、2GB內(nèi)存、20GBSSD。還需安裝Docker,選擇兼容的Kubernetes版本,配置網(wǎng)絡(luò)插件,以及確保系統(tǒng)安全、監(jiān)控和備份措施到位。
    的頭像 發(fā)表于 10-09 15:31 ?97次閱讀

    常用的k8s容器網(wǎng)絡(luò)模式有哪些?

    常用的k8s容器網(wǎng)絡(luò)模式包括Bridge模式、Host模式、Overlay模式、Flannel模式、CNI(ContainerNetworkInterface)模式。K8s容器網(wǎng)絡(luò)模
    的頭像 發(fā)表于 09-19 11:29 ?143次閱讀

    C2000?MCU的運(yùn)行時堆棧大小監(jiān)測

    電子發(fā)燒友網(wǎng)站提供《C2000?MCU的運(yùn)行時堆棧大小監(jiān)測.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 09:30 ?0次下載
    C2000?MCU的<b class='flag-5'>運(yùn)行時</b>堆棧大小監(jiān)測

    K8S學(xué)習(xí)教程三:在PetaExpress KubeSphere 容器部署 Wiki 系統(tǒng) wiki.js 并啟用中文全文檢索

    K8S學(xué)習(xí)教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系統(tǒng) wiki.js 并啟用中文全文檢索? 。
    的頭像 發(fā)表于 07-08 17:03 ?530次閱讀
    <b class='flag-5'>K8S</b>學(xué)習(xí)教程三:在PetaExpress KubeSphere <b class='flag-5'>容器</b>部署 Wiki 系統(tǒng) wiki.js 并啟用中文全文檢索

    三菱plc累計運(yùn)行時間怎么編程

    具有重要意義。本文將詳細(xì)介紹如何使用三菱PLC編程實(shí)現(xiàn)累計運(yùn)行時間的統(tǒng)計功能。 一、概述 累計運(yùn)行時間是指設(shè)備或系統(tǒng)在一定時間內(nèi)的總運(yùn)行時間。在工業(yè)生產(chǎn)中,對設(shè)備的累計運(yùn)行時間進(jìn)行統(tǒng)計
    的頭像 發(fā)表于 06-20 11:31 ?1771次閱讀

    STM8S在IAR軟件仿真Simulator怎么查看運(yùn)行時間?

    STM8S 在IAR軟件仿真Simulator怎么查看運(yùn)行時間?在某些芯片通信時,會要求延時5us,10us,150ms等,這些延時不需要太精確,只要大概就好,但怎么在Simulator仿真里能通過斷點(diǎn)查看,即兩個斷點(diǎn)之間的運(yùn)行時
    發(fā)表于 05-09 07:48

    K8S落地實(shí)踐經(jīng)驗(yàn)分享

    k8s 即 Kubernetes,是一個開源的容器編排引擎,用來對容器化應(yīng)用進(jìn)行自動化部署、 擴(kuò)縮和管理。
    的頭像 發(fā)表于 01-02 11:45 ?958次閱讀
    <b class='flag-5'>K8S</b>落地實(shí)踐經(jīng)驗(yàn)分享

    jvm運(yùn)行時內(nèi)存區(qū)域劃分

    JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,它是Java編程語言的運(yùn)行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機(jī)器代碼,并且在運(yùn)行時管理Java程序的內(nèi)存。JVM
    的頭像 發(fā)表于 12-05 14:08 ?471次閱讀

    西門子SCL編程50臺電機(jī)運(yùn)行時間累計方法

    當(dāng)RUN信號為TRUE時,開始計時,為FALSE時停止計時,單次運(yùn)行時間清零,長按RESET為5秒時,單次和總運(yùn)行時間都清零。
    發(fā)表于 11-27 09:59 ?1673次閱讀
    西門子SCL編程50臺電機(jī)<b class='flag-5'>運(yùn)行時</b>間累計方法

    如何在 CFD 設(shè)計中利用網(wǎng)格維護(hù)幾何形狀并減少運(yùn)行時間?

    如何在 CFD 設(shè)計中利用網(wǎng)格維護(hù)幾何形狀并減少運(yùn)行時間?
    的頭像 發(fā)表于 11-24 17:07 ?444次閱讀
    如何在 CFD 設(shè)計中利用網(wǎng)格維護(hù)幾何形狀并減少<b class='flag-5'>運(yùn)行時</b>間?

    multus cni是什么?k8s多網(wǎng)卡方案之multus用法介紹

    k8s的環(huán)境中啟動一個容器,默認(rèn)情況下只存在兩個虛擬網(wǎng)絡(luò)接口(loopback 和 eth0), loopback 的流量始終都會在本容器內(nèi)或本機(jī)循環(huán),對業(yè)務(wù)起到支撐作用的是 eth0,能夠滿足大部分的業(yè)務(wù)場景。
    的頭像 發(fā)表于 11-06 09:35 ?1758次閱讀
    multus cni是什么?<b class='flag-5'>k8s</b>多網(wǎng)卡方案之multus用法介紹

    如何保證它們容器運(yùn)行時的安全?

    緊密耦合的容器運(yùn)行時繼承了主機(jī)操作系統(tǒng)的安全態(tài)勢和攻擊面。運(yùn)行時或主機(jī)內(nèi)核中的任何漏洞及其利用都會成為攻擊者的潛在切入點(diǎn)。
    的頭像 發(fā)表于 11-03 15:24 ?596次閱讀

    K8s常見的10個問題排查

    K8S的集群狀態(tài)是排查故障的關(guān)鍵起點(diǎn)。使用kubectl get nodes命令來檢查節(jié)點(diǎn)狀態(tài)。如果有節(jié)點(diǎn)未能就緒或出現(xiàn)異常狀態(tài),可能會對應(yīng)用程序造成故障。確?;窘M件,如etcd、kubelet和kube-proxy等,正常運(yùn)行
    發(fā)表于 11-01 12:26 ?1283次閱讀
    <b class='flag-5'>K8s</b>常見的10個問題排查

    AUTOSAR CP運(yùn)行時環(huán)境與應(yīng)用軟件

    運(yùn)行時環(huán)境(RTE) AUTOSAR CP運(yùn)行時環(huán)境(RTE)是AUTOSAR架構(gòu)中的核心組件,它實(shí)現(xiàn)了AUTOSAR虛擬功能總線(VFB)的接口,并提供了通信基礎(chǔ)設(shè)施和訪問基礎(chǔ)軟件組件(如操作系統(tǒng)
    的頭像 發(fā)表于 10-27 15:44 ?1226次閱讀
    AUTOSAR CP<b class='flag-5'>運(yùn)行時</b>環(huán)境與應(yīng)用軟件