關於Docker、Docker Engine和Kubernetes v1.20,開發人員需要了解的一切

語言: CN / TW / HK

Kubernetes的最新版本Kubernetes v1.20.0-rc.0[1]現已正式釋出。Kubernetes專案計劃棄用kubelet中的Docker引擎支援[2],而且對於dockershim的支援也將在下個版本(可能是明年下半年)中消失。但請不必擔心,你仍然可以使用Docker工具正常構建容器映象,而且映象使用不會受到任何影響。

對於Docker及Kubernets使用者,這究竟意味著什麼?

首先,不必驚慌。開發者們仍然可以使用Docker平臺在Kubernetes上構建、共享及執行容器!此番變化影響到的主要是Kubernetes上的運營人員與管理員,對開發者工作流程幾乎沒有絲毫變更。Docker構建的映象仍然符合OCI(開放容器倡議),因此將受到全面支援並能夠繼續在Kubernetes上順暢執行。

如果你使用Docker,則代表你已經在使用containerd。我們在containerd基礎之上構建起Docker執行時,並努力為其賦予出色的開發者使用體驗。對於Kubernetes這類容器執行時越少越好的生產環境,也有不少使用者會選擇直接使用containerd等輕量化執行時。

Docker於2016年聯手谷歌與IBM共同打造了containerd專案,當時它的亮相也引發了一場重要轉變。而此次棄用dockershim(以及Docker Engine作為執行時的功能定位)標誌著我們終於全面完成了為Kubernetes提供現代執行時的長期承諾。最初,Containerd被定位為Docker與Kubernetes的底層核心可擴充套件執行時,希望配合二者達成多種實際用途。

Containerd於2017年被捐贈給雲原生計算基金會(CNCF),隨後發展出的containerd CRI專案能夠與Kubernetes進行互動,也逐步吸引到來自亞馬遜、Google、微軟以及IBM乃至整個行業的大量創新支援與資源投入。

2019年,containerd成為雲原生計算基金會畢業專案,而且時至今日其仍是唯一達到這樣成熟性高度的容器執行時。過去幾年以來,各大領先Kubernetes服務供應商(例如AWS與谷歌)都已經將containerd指定為其Kubernetes執行時。而此次棄用過程,又再次反映出containerd迅猛的發展態勢、及其背後活躍技術社群獲得的巨大成功。

仍將正常支援你使用Docker工具建立的容器映象。

你使用Docker工具所構建的容器映象仍將繼續在Kubernetes上正常執行。作為我們的下一代構建基礎設施,Buildkit擁有靈活的架構,既能夠作為Docker構建器,也可以直接與containerd或者runC進行通訊。很明顯,它不可能脫離Docker在基礎設施中獨立存在。

Docker致力於推動containerd的發展:我們將繼續與持續增長的Buildkit社群投入資源,幫助大家在任何基礎設施託管場景內使用Docker解決方案。

你可以繼續在本地及Kubernetes叢集中構建並執行Docker映象,本次棄用不會對此產生任何影響。

那麼,Kubernetes專案是要棄用什麼?

Kubernetes本次棄用的是dockershim[3],即Kubernetes kubelet實現中的元件之一。它能夠與Docker Engine進行通訊。

我們需要如何應對?

在目前的Kubernetes 1.20版本中,Kubernetes管理員可以繼續使用Docker命令與kubectl命令管理自己的Kubernetes叢集。

在未來發布的Kubernetes版本中,包括接下來陸續推出的次要版本,對於dockershim的支援將最終被刪除,屆時你將無法使用Docker命令檢查自己的叢集。

好訊息是,其中大部分命令都能在kubectl與ctr(containerd CLI)中找到替代選項。儘管未來在Kubernetes中檢查叢集的操作命令可能有所變化,但開發人員仍然可以使用Docker工具在Kubernetres上對容器及容器映象執行docker build、docker push以及docker run。

相關連結:

  1. https://github.com/kubernetes/kubernetes/releases/tag/v1.20.0-rc.0

  2. https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation

  3. https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/dockershim

原文連結:https://www.docker.com/blog/what-developers-need-to-know-about-docker-docker-engine-and-kubernetes-v1-20/

Kubernetes實戰培訓

Kubernetes實戰培訓將於2020年12月25日在深圳開課,3天時間帶你係統掌握Kubernetes,學習效果不好可以繼續學習。本次培訓包括:雲原生介紹、微服務;Docker基礎、Docker工作原理、映象、網路、儲存、資料卷、安全;Kubernetes架構、核心元件、常用物件、網路、儲存、認證、服務發現、排程和服務質量保證、日誌、監控、告警、Helm、實踐案例等,點選下方圖片或者閱讀原文連結檢視詳情。