What is CRI?

CRI 是一個kubernetes提供的一個grpc介面,用來和Container runtime溝通

Why

  • CRI允許kubernetes以單一標準和多種Container Runtime溝通,這意味著Kubernetes可以運行在多種Container Runtime之上,而不需要重新編譯
  • 標準化kubernetes和Container Runtime的溝通,Kubernetes可以使用任何支援CRI的Container Runtime
  • 由於接口標準化,kubernetes可以專注在開發kubelet的應用以及邏輯

Container runtime that support CRI

  • containerd
  • docker
  • cri-o

PodSandbox

  • Sandbox是容器的隔離的運行環境,在Kubernetes中也稱為 PodSandbox
  • 當 Pod Sandbox 被建立之後,Kubelet就可以在裡面建立容器
  • 當刪除Pod Sandbox時,Kubelet會先移除Pod Sandbox,再移除裡面的容器
  • 根據後端的不同,他們可以有不同的實作方式,有可能是Container,也可能是虛擬機

比較知名的CRI實作

  1. containerd (lead by docker)
  2. cri-o (lead by Redhat)

References