雲原生生態週報 Vol. 3 | Java 8 ❤️ Docker

芊寶寶發表於2019-05-08
雲原生生態週報 Vol. 3 | Java 8 ❤️ Docker


業界要聞

  1. Docker Hub遭入侵,19萬賬號被洩露: 4月25日Docker官方郵件曝露,因為Hub的一個資料庫收到非授權訪問,影響了約19萬使用者的使用者名稱和雜湊後的密碼,以及使用者自動構建的Github和Bitbucket Token。Docker公司建議使用者修改其登入密碼。如果您在公有云上的應用依賴於來自 Docker Hub的映象,我們強烈建議您登入容器服務控制檯更新相應的docker login資訊或kubernetes secret。此外,阿里雲容器映象服務企業版提供網路訪問控制、獨享OSS Bucket加密儲存等安全加固功能,最大程度保障您的映象倉庫的安全。
  2. Java 8 終於開始提供良好的容器支援長久以來,容器 和 Java 就像一對“歡喜冤家”。一方面,容器技術的“不可變基礎設施”特性為開發者帶來了無比寶貴的依賴與環境一致性保證;但另一方面, Linux 容器通過 Cgroups 對應用進行資源限制的方式跟所有依賴於 JVM 進行資源分配的程式語言都產生了本質的衝突。而就在上週,最近釋出的OpenJDK 映象 openjdk:8u212-jdk 終於能夠讓 Java 8 執行時在容器裡面為應用分配出合理的 CPU 數目和堆疊大小了。自此,釋出 Java 容器應用的痛苦經歷,可能要一去不復返了。
  3. Snyk 年度安全報告出爐,容器安全問題形勢空前嚴峻知名開源安全廠商 Snyk 在年初發布了 2019 年度安全報告。報告中指出:“隨著容器技術在2019年繼續在IT環境中爆發式增長,針對容器安全的威脅正在迅猛增加,任何一家企業現在都必須比以往更加重視容器映象安全,並將此作為企業的首要任務”。報告詳情,請點選此處檢視全文

上游重要進展

Kubernetes 專案

  1. Kubernetes 叢集聯邦 v1(Federation v1) 正式宣佈廢棄K8s 社群近日宣佈將 Federation v1 程式碼庫正式廢棄。Federation v1 即 Kubernetes 專案原“叢集聯邦”特性,旨在通過一個統一的入口管理多個 Kubernetes 叢集。但是,這個特性逐步被設計成了在多個 Kubernetes 叢集之上構建一個 “Federation 層”的方式來實現,從而背離了 Kubernetes 專案的設計初衷。最終,在 RedHat、CoreOS、Google 等多位社群成員的推動下,社群開始全面擁抱 Federation v2一個完全旁路控制、以 K8s API 為核心的多叢集管理方案。
  2. Kubernetes 1.15 進入釋出節奏 K8s 1.15 釋出進入日程,5 月30 日即將 Code Freeze(即:不接受任何功能性 PR)。
  3. [KEP] Ephemeral Containers KEP 合併,進入編碼階段
    Ephemeral container 旨在通過在 Pod 裡啟動一個臨時容器的方式,來為使用者提供對Pod和容器應用進行debug和trouble shooting的能力。這種通過“容器設計模式”而非 SSH 等傳統手段解決運維難題的思路,對於“不可變基礎設施”的重要性不言而喻,阿里巴巴在“全站雲化”過程中也採用了同樣的設計來解決類似問題。在上游完成該功能的編碼實現後,會通過 kubectl debug 命令方便使用者直接使用。

Knative 專案

  1. Knative 逐步棄用原 Build 專案。按照計劃,Tektoncd/Pipeline 子專案已經在 v0.2.0 時移除了對 Build 的依賴。最近,Knative Serving v1beta1 也移除了對 Build 的依賴,目前,社群已經開始制定棄用 Build 的確切方式並通知到 knative 開發者社群。
  2. knative 正在考慮為事件觸發(Trigger)引入更高階的規則和策略。 社群正在就 Advanced Filtering 設計一個 提案。該提案提議基於 CEL (Google 維護的一種表示式語言)來進行事件的過濾。具體來說,Trigger 的 filter 欄位會增加一個 Spec 欄位,然後在 Spec 欄位下使用 CEL 語法完成對事件的過濾規則定義。

Istio/Envoy 專案

  1. Istio 1.1.4本週正式釋出,其中一個重要的功能是更改了Pilot的預設行為,對出口流量的控制變化。除了之前通過Service Entry與配置特定範圍IP段來支援訪問外部服務,新版本中通過設定環境變數PILOT_ENABLE_FALLTHROUGH_ROUTE允許Envoy代理將請求傳遞給未在網格內部配置的服務。更多可以參考Istio流量管理實踐系列文章。
  2. Envoy正通過ORCA改善負載均衡的精準度
    目前Envoy可以用於進行負載均衡決策的資訊主要是權重和連線數等資訊,為了能讓Envoy的負載均衡更加精準需要為Envoy提供更多的決策因素。比如本地和遠端機器的負載情況、CPU、記憶體等資訊,更復雜的還可以利用應用程式特定的指標資訊來進行決策,比如佇列長度。而ORCA的目的是定義Envoy和上游代理之間傳遞這些資訊的標準。該功能的提出者希望ORCA可以成為Universal Data Plane API (UDPA)。
  3. Envoy正引入RPC去代替共享記憶體機制以便提高統計模組的的擴充套件性
    Envoy當下通過共享記憶體的方式來儲存stats資料的這種方式存在很多侷限性,比如需要限制stats使用固定的記憶體大小,當有大量叢集的時候沒辦法擴充套件。這給他升級stats子系統的架構帶來了不少的阻礙。因此他希望可以通過將stats資料以堆記憶體的方式來儲存,然後通過RPC在新老程式中傳遞。
  4. Envoy正在xDS協議中增加VHDS協議減小動態路由資訊的更新粒度
    現狀是,Envoy中的路由配置是通過RDS來動態更新的,但是RDS的粒度太粗了,包含了一個Listener下所有的路由配置資訊。由於一個Listener下面可能會有多個服務,每一個服務對應一個Virtual Host,因此在更新路由的時候,如果只是其中一個Virtual Host更新了,那麼會導致所有的路由配置都重新下發而導致通訊負荷偏重。引入VHDS就是為了只下發變化的路由資訊,從而將更新的路由配置資訊量縮小。

Containerd 專案

  1. Non-root使用者執行a href="github.com/containerd/…"> containerd: 近日,社群正在嘗試實現無需root許可權就可以執行containerd的能力。在這種場景下,使用者可以提前準備好容器所需要的 rootfs ,但是 containerd 服務端在清理容器時依然會嘗試去 unmount rootfs,對於沒有 root 許可權的 containerd 程式而言,該步驟必定會失敗(mount 操作必須要有 root 許可權)。目前 Pivotal 的工程師正在解決這個問題,這種 non-root 模式可以為解決雲上安全問題提供新的思路,

開源專案推薦

  1. 本週,我們向您推薦kubeCDN專案
    kubeCDN 專案是一個基於Kubernetes 實現的自託管 CDN 方案,只要將它部署在分佈在不同地域(Region) 的 Kubernetes 叢集上,你就擁有了一個跨地域進行內容分發的 CDN 網路。而更重要的是,通過 kubeCDN,使用者不再需要第三方的內容分發網路,從而重新控制了原本就屬於自己的從伺服器到使用者裝置的資料流。kubeCDN 目前只是一個個人專案,但是這裡體現出來的思想確實至關重要的:在不久的未來,每一朵雲、每一個資料中心裡都會佈滿 Kubernetes 專案,這將會成為未來雲時代基礎設施的“第一假設”。 推薦你閱讀 InfoQ 的解讀文章來進一步瞭解 kubeCND。

本週閱讀推薦

  • 《Knative 入門——構建基於Kubernetes的現代化Serviceless應用》中文版,這是一本O’Reilly 出品的免費電子書,已經由 servicemesher 社群組織完成翻譯。提供 線上閱讀PDF下載
  • 信通院發起的雲原生產業聯盟出具《雲原生技術實踐白皮書》,白皮書系統性地梳理了雲原生概念、關鍵技術、應用場景、發展趨勢及實踐案例。PDF連結
  • 阿里雲 PB 級 Kubernetes 日誌平臺建設實踐》Kubernetes 近兩年來發展十分迅速,已經成為容器編排領域的事實標準,但是 Kubernetes 中日誌採集相對困難。本文來自InfoQ記者的採訪,文中談及瞭如何讓使用者專注在“分析”上,遠離瑣碎的工作。
  • Istio Observability with Go, gRPC, and Protocol Buffers-based Microservices》,這是一篇很長的博文,介紹可以與Istio相適配的觀測性元件,用實際的例子演示瞭如何對以Go語言、Protobuf和gRPC為基礎的微服務框架進行全面的觀測。如果你還對Prometheus、Grafana、Jaeger和Kiali這幾個元件感到既熟悉又陌生,並且好奇如何把它們組合在一起使用來提升微服務的可觀測性,這個部落格的內容應該會對你很有幫助。
  • 雲原生的新思考:為什麼說容器已經無處不在了?》這篇文章在對雲原生技術總結的同時,對未來應用趨勢走向進行了展望。“雲原生不但可以很好的支援網際網路應用,也在深刻影響著新的計算架構、新的智慧資料應用。以容器、服務網格、微服務、Serverless 為代表的雲原生技術,帶來一種全新的方式來構建應用。”

名詞解釋:KEP - Kubernetes Enhancement Proposal, 即 Kubernetes 上游設計文件


原文連結

本文為雲棲社群原創內容,未經允許不得轉載。


相關文章