K8S 生態週報| KIND v0.9 發佈帶來衆多更新

「K8S 生態週報」內容主要包含我所接觸到的 K8S 生態相關的每週值得推薦的一些信息。歡迎訂閱知乎專欄「k8s生態」[1]

KIND v0.9 正式發佈

KIND 是我很喜歡也一直在參與貢獻的 Kubernetes SIG 子項目,本週 KIND 發佈了 v0.9 版本,距離上次 v0.8 版本已過去了 4 個多月,在此期間,我們做了很多的優化和改進。下面我來具體介紹下:

破壞性變更

  • 默認的 Node 鏡像版本已經升級爲最新的 Kubernetes v1.19.1 版本;

  • v1alpha3 版本的 KIND config 配置文件版本已被廢棄,當前最新的版本是 v1alpha4

  • 執行 kind build node-image 命令時,如果 --type 指定爲 bazel ,則僅能與 Kubernetes v1.15+ 版本兼容。如果使用默認的 docker 類型的構建方式,則可以與 v1.13+ 版本兼容;

  • 使用 KIND v0.9.0 版本構建的節點 image,僅支持與 KIND v0.9.0+ 版本一起工作。如果是使用 KIND v0.8+ 版本構建的鏡像,也可與 KIND 最新版一起工作,但是少了一些內部優化的特性;

  • 不再支持 Kubernetes v1.13 之前的 Kubernetes 版本了。 多節點集羣的話,僅支持 Kubernetes v1.14+ 版本了,主要是與 kubeadm 有關;

新特性

  • KIND 的配置文件中直接支持 Kubernetes RuntimeConfig 的配置了;

  • NFS volume 應該可以工作了;

  • 目前我們爲每個節點設置了一個以 kind:// 前綴開頭的 providerID,但以後可能會再做改動;

  • 如果配置了 proxy ,則會自動增加 no_proxy 相關的配置;

  • 默認的 CNI 會自動匹配網關的 MTU;

修正

  • 對 HA 模式及 restart 相關邏輯的修正;

  • IPv6 相關網絡問題的修正;

  • 個別場景下端口轉發的問題修正;

對此版本感興趣的小夥伴,可直接訪問 Release 頁面[2] 下載預編譯的二進制使用。

Open Service Mesh (OSM) 已捐獻給 CNCF

Open Service Mesh (OSM) 目前已經捐獻給 CNCF [3]成爲 sandbox 級別的項目。正如 OSM 創建之初時說的那樣, 它將會按照 CNCF 的開源治理模型發展,應該會有個不錯的後續的。

Open Service Mesh(OSM)是一個輕量級,可擴展的雲原生服務網格,它使用戶能夠統一管理,保護和獲得針對高度動態微服務環境的開箱即用的可觀察性功能。

OSM 在 Kubernetes 上運行基於 Envoy 的控制平面,可以使用 SMI API 進行配置。它通過以 sidecar 的形式注入 Envoy 代理來工作。

控制面負責持續配置代理,以配置策略和路由規則等都保持最新。代理主要負責執行訪問控制的規則,路由控制,採集 metrics 等。(這和目前我們常見到的 Service Mesh 方案基本都一樣的)

對 Open Service Mesh (OSM) 感興趣的小夥伴,可參考我之前寫的文章 初試 Open Service Mesh(OSM)[4]

containerd 1.4.1 發佈

containerd 1.4.1 是 v1.4 系列的第一個 patch 版本,在此版本中帶來了一些重要的改進,我們一起來看看吧:

  • 總是保持消費 shim 的日誌;

上面這句話看似簡單,但背後的影響很大。

在將 containerd 升級至 v1.4.0 後,衆多 Arch Linux 的用戶都遇到了配置了健康檢查的容器 Hang 住的問題。詳細情況請參考 Arch Linux 上的 bug 記錄[5]

目前 ArchLinux 的倉庫中,已經重新構建了 containerd 的包,可以直接更新使用。

當然,還有另外兩種解決辦法:

  1. 直接更新至 containerd v1.4.1 版本。此版本中已經加入了相關邏輯,始終消費 shim 的日誌;

  2. 開啓 shim_debug 選項( 僅作爲一種不能快速升級時的臨時解決辦法,開啓 shim_debug 後,可能會帶來更多問題,比如日誌更多之類的 );

  • 更新了 seccomp 默認的 profile ;

對此版本感興趣的小夥伴,可參閱其 ReleaseNote[6] 瞭解更多信息。

Harbor v2.1 發佈

Harbor v2.1 本週發佈了,具體上個版本 v2.0 已經過去了挺長時間了。本次 Harbor v2.1 有一些值得關注的新特性:

  • Harbor 可作爲 Proxy Cache 。但 Harbor 目前的實現,是將 proxy cache 也作爲一個 Harbor 中的項目來處理,所以需要將待拉取的鏡像設置爲 <harbor_servername>/<proxy_project_name>/repo/name:tag 的形式,才能作爲緩存使用。我個人感覺這樣是不太方便的。最方便的形式是 pull through cache, 也就是 docker daemon 中的 registry-mirror ,可以正常 pull 鏡像,然後由 docker 對請求鏡像轉發處理, 感興趣的小夥伴,可以參考我發佈的文章 突破 DockerHub 限制,全鏡像加速服務[7]

  • 非阻塞的 GC (GC 一直是 Harbor 比較受人詬病的點);

  • P2P 分發,與 Dragonfly 或 Kraken 集成;

  • 新增 sysdig 鏡像掃描集成;

對此版本感興趣的小夥伴,可參閱其 ReleaseNote[8] 瞭解更多信息。

上游進展

  • #88337 kubectl/drain 支持自定義 pod 過濾了, 僅作爲庫使用時。目前尚未在 CLI 中暴露相關選項;

  • #94140 PidLimits 特性 GA 了!非常實用的特性,可以規避很多問題。


歡迎訂閱我的文章公衆號【MoeLove】

TheMoeLove

參考資料

[1]

k8s生態: https://zhuanlan.zhihu.com/container

[2]

KIND v0.9 release 頁面: https://github.com/kubernetes-sigs/kind/releases/tag/v0.9.0

[3]

OSM 官宣博客: https://openservicemesh.io/blog/open-service-mesh-osm-accepted-into-cncf-as-a-sandbox-project/

[4]

初試 Open Service Mesh(OSM): https://zhuanlan.zhihu.com/p/171550414

[5]

arch linux containerd v1.4 容器 hang 住: https://bugs.archlinux.org/task/67773?dev=25983

[6]

containerd v1.4.1: https://github.com/containerd/containerd/releases/tag/v1.4.1

[7]

突破 DockerHub 限制,全鏡像加速服務: https://zhuanlan.zhihu.com/p/256359308

[8]

harbor v2.1.0: https://github.com/goharbor/harbor/releases/tag/v2.1.0