容器 | K8s宣佈不再支持Docker了?

點擊上方“自學幫”,選擇“設爲星標”

技術文章第一時間送達!

原文來源:Kubernetes官網,https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker

Kubernetes在v1.20版本之後將不再使用Docker作爲容器運行時,嗯,你沒有聽錯,別慌!本文來源於K8s官網,由K8s技術圈翻譯。

1廢棄Docker但別慌!

Docker 作爲底層運行時被廢棄,轉而使用爲 Kubernetes 創建的 Container Runtime Interface(CRI) 的運行時,Docker 生成的鏡像將繼續在你的集羣中與所有運行時一起工作。

如果你是 Kubernetes 的終端用戶,對你來說不會有太大的改變,這並不意味着 Docker 的死亡,也不意味着你不能或者不應該再使用 Docker 作爲開發工具。Docker 仍然是一個非常有用的構建容器的工具,docker build 產生的鏡像仍然可以在你的 Kubernetes 集羣中運行。

如果你使用的是像 GKE 或 EKS 這樣的託管 Kubernetes 服務,在未來的 Kubernetes 版本中刪除 Docker 支持之前,你需要確保你的 worker 節點使用的是支持的容器運行時,如果你有節點定製的需求,那麼你可能需要根據你的環境和運行時需求來更新它們。請與你的雲服務商合作,以確保適當的升級測試和規劃。

如果你要升級自己的集羣,那麼你還需要進行一些更改來避免集羣崩潰。在 v1.20 時,你會收到 Docker 的廢棄警告。當 Docker 運行時支持在 Kubernetes 的未來版本(目前計劃在2021年底發佈1.23版本)中被移除時,它將不再被支持,你需要切換到其他符合標準的容器運行時,如 containerd 或 CRI-O。只需確保你選擇的容器運行時支持當前使用的 docker 守護程序配置即可(例如日誌)。

2爲何大家會感到困惑?

其實我們這裏談論的是兩種不同的環境,這可能造成了大家的困惑。在你的 Kubernetes 集羣內部,有一個叫做容器運行時的東西,負責拉取和運行你的容器鏡像。Docker 是該運行時的一個流行選擇(其他常見的選項包括 containerd 和 CRI-O),但 Docker 並沒有被設計成嵌入 Kubernetes 內部,這就造成了一個問題。

你會看到,我們稱之爲 Docker 的東西實際上並不是同一件事情,它是一個完整的技術棧,而其中包含一個叫 containerd 的東西,這個本身就是一個高級容器運行時。Docker 非常酷也非常有用,因爲它具有許多 UX 增強功能,當我們在進行開發工作的時候操作非常方便,但是 UX 增強的功能並不是 Kubernetes 所必須的,因爲 Kubernetes 並不是人。

由於這個對人類友好的抽象層,你的 Kubernetes 集羣必須使用另一個叫做 Dockershim 的墊片工具來間接獲取它真正需要的數據。這並不是很好的一種方式,因爲我們還必須去多維護一套東西,增加了複雜性。Dockershim 將在 v1.23 版本時被從 Kubelet 中移除,這也因此移除了對 Docker 作爲容器運行時的支持。你可能會想,containerd 包含在 Docker 棧中,爲什麼 Kubernetes 還是需要一個 Dockershim 呢?

這是因爲 Docker 並不符合CRI,即容器運行時接口,如果符合的話,我們就不需要這個 shim 了,也就不會發生今天這個事情了。但這並不是世界末日,你不需要驚慌--你只需要把你的容器運行時從 Docker 換成其他支持的容器運行時即可。

3對開發者來說意味着什麼?

作爲一個開發者,Docker 對你來說仍然是有用的,在宣佈這個變化之前它的所有方式都是有用的。Docker 產生的鏡像並不是真正的 Docker 專用的鏡像,它是一個 OCI(Open Container Initiative)鏡像。任何符合 OCI 的鏡像,無論你用什麼工具來構建它,對 Kubernetes 來說都是一樣的,containerd 和 CRI-O 都知道如何拉取這些鏡像並運行它們。這就是爲什麼我們有一個關於容器應該是什麼樣子的標準。

所以即將到來的這個變化,它會給一些人帶來部分問題,但這並不是災難性的問題,從長遠來看,以後會變得更簡單。如果這仍然讓你感到困惑,也沒太大關係 - Kubernetes 中有非常多的組件要做,沒有人是100%的專家。我們的目標是確保每個人都能瞭解 Kubernetes,對即將發生的變化有更多的瞭解,希望這能解答你的大部分疑問,並安撫了一些焦慮的情緒!


你可能喜歡


Linux入門系列文章彙總


Docker基礎修煉1--Docker簡介及快速入門體驗

Docker基礎修煉2--Docker鏡像原理及常用命令

Docker基礎修煉3--Docker容器介紹及常用命令

Docker基礎修煉4--Docker容器介紹及常用命令

Docker基礎修煉5--容器數據共享與持久化實戰

...未完、待續

添加好友,入羣交流



本文分享自微信公衆號 - 自學幫(zixuebang8)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章