1. 程式人生 > >全球首個開放應用模型 OAM 開源 | 雲原生生態週報 Vol. 23

全球首個開放應用模型 OAM 開源 | 雲原生生態週報 Vol. 23

作者 | 臨石、元毅、冬島、衷源、天元

業界要聞

全球首個開放應用模型 OAM 開源

2019 年 10 月 17 日,阿里巴巴合夥人、阿里雲智慧基礎產品事業部總經理蔣江偉(花名:小邪)在 Qcon 上海重磅宣佈,阿里雲與微軟聯合推出開放應用模型 Open Application Model (OAM)開源專案。OAM 的願景是以標準化的方式溝通和連線應用開發者、運維人員、應用基礎設施,讓雲原生應用管理與交付變得更加簡潔,高效,並且可控。

KubeVirt 進入 CNCF Sandbox

KubeVirt 儘管容器技術提供了各種便利,但是在特定情況下使用 VM 仍然是不可避免的(編者按:VM 只是選擇之一,不同的安全容器解決方案都可以在不同方面代替單純的 VM)。來自 Redhat 的 KubeVirt 專案可以提供在 K8s 叢集內部準備、部署、執行和管理 VM 的能力,讓使用者可以使用 Pod 一樣來使用一個 VM。現在,這個專案已經正式進入了 CNCF 的 Sandbox 了。

Megalix 釋出 KubeAdvisor 1.0 版本

KubeAdvisor 日前釋出了 1.0 版本。KubeAdvisor 一款輔助 K8s 運維的工具,能夠掃描 K8s 叢集的資源、狀態、配置等,通過提供恰當的“可觀測性”(編者按:眼花繚亂的監控資料和曲線圖不等於可觀測性),為叢集使用者提供最有價值的資訊,來輔助保障基礎設施和上層應用的可靠性和穩定性。

上游重要進展

1.允許動態調整 kube-scheduler 的 log level。kube-scheduler 作為 K8s 重要的預設排程元件,在一些情況下它們的日誌可以反映出不少資訊,這個 PR 允許 kube-scheduler 的日誌列印級別可以動態被調整。

2.排程器方面最近的一個舉動是將一些 Prioritizing 的邏輯外掛化(Score Plugin)。最近幾個相關的PR如下,感興趣的同學可以關注。

  • BalancedResourceAllocation
  • MostRequestedPriority
  • LeastResourcePriority

3.為 scheduler 新增一個跟蹤 Binding 和 Prioritizing 的 goroutine 數目的 metric。

在大規模應用部署等一些特殊場景中,排程器可能成為整體效能的瓶頸。

4.這裡有兩個優化 kubeadm 使用體驗的 PR:

  1. kubeadm 的 structured output:結構化輸出 kubeadm 的一些輸出資訊(yaml、json 等),方便被繼續處理;
  2. kubeadm 新增 --with-ca flag 來顯示 ca 的過期資訊:ca 過期是常見的造成元件不可用的願意之一,有了這個 flag 可以更方便的指導 ca 的過期資訊。

5.下面是幾個比較重要 / 有意思的 KEP,感興趣的朋友可以關注一下:

  1. 為 Kube API Server 的 network proxy 添加了 beta 版畢業條件。KAS 允許配置 Kube API Server 的網路流量到(或者不到)指定的 proxy;
  2. insecure kubelet log:通過一個開關,使得在 kubelet 的 serving cert 過期(kube apiserver 不認識 kubelet)但kube-apiserver 的 client cert 沒有過期(kubelet 認識 kube apiserver)的條件下,允許 kubelet 通過跳過 tls 驗證返回一些 log。這個功能在測試和debug的場景是有用的。
  3. 規範化 conformanece test 的內容的實施(文件、API schema、程式碼檢驗、專家知識等)
  4. 擴充套件 NodeRestriction Controller 來限制更多 Node 可以 Pod 進行的操作(主要是來自安全上的考慮);
  5. HPA 的狀態達到 implementable
  6. 兩個計劃中的 GA,對於想要參與到 K8s 社群的新手貢獻者來說,這兩個 KEP 是不錯的切入點(目標、方法很明確的需求)
    1. 根據 Node condition 給 Node 打上 taint 標記,自動化幫助排程器識別出不適合的排程節點;
    1. 之前 DaemonSet 的排程邏輯是在 DaemonSet controller 中的,這個 KEP希望把排程邏輯移動到排程器中實現。

開源專案推薦

VMware-Tanzu

VMware 已經開始全面支援 K8s,最近該公司在開源方面的一個舉措是將幾個自己擁有的雲原生開源專案遷移到了新的 Organization:VMware-Tanzu。這個專案中目前包括下面幾個專案:

  • velero:應用遷移工具
  • octant:一個叢集狀態展示的 dashboard
  • sonobuoy:一個 K8s 分析工具
  • ······

k8s-transmogrifier

K8s 1.16 中廢棄了大量的 API,影響到很多的已經用於生產的叢集配置和 Helm chart 等。這裡有一個自動轉換 K8s 1.16 中的 depreciated 的 API 的工具,有需要的人可以瞭解一下。

本週閱讀推薦

1.《阿里巴巴的研發模式是如何演進的?》

隨著雲端計算的不斷髮展,很多開發者都對這一技術將為開發方式帶來的變化充滿興趣,雲端計算解決的是從 CAPEX 到 OPEX 的轉變問題。雲可以帶來哪些切實的好處?在雲環境下應該怎麼做應用架構?基於從傳統架構到雲架構的親身經歷,阿里巴巴合夥人、阿里雲智慧基礎產品事業部總經理蔣江偉(小邪)闡述了企業由新架構和新研發模式帶來的價值點。本文整理自正在召開的 QCon 上海 2019 蔣江偉(小邪)的演講內容。

2.《How Zalando manages 140+ Kubernetes Cluster》

本文介紹了 Zalando 的團隊在(公有云上)管理數量棒龐大的 K8s 叢集中得到的一些實踐經驗,例如每個 domain 或者 production community 總是部署雙叢集(prod & non-prod)、使用 Github 託管配置檔案、通過 CLM(Cluster Lifecycle Manager)管理升級等等。

3.《Liveness Probes are Dangerous》

Liveness Probe 和 Readiness Probe 是 K8s 中判斷應用是否可用的重要工具,然而不正確的使用 Liveness Probe 或者 Readiness Probe 會帶來的風險(例如不小心使用了外部依賴、Liveness Probe 有時候反而會阻止 Pod 正確的進入失敗狀態從而無法徹底恢復健康等),這篇文章總結了使用這兩者的最佳實踐。

4.《A Practical Guide to Setting Kubernetes Requests and Limits》

Kubernetes 資源定義中的 request 和 limit 是老生常談的問題了,本文除了更好的解釋這些概念意外,還從 SLA 的角度提供瞭如何配置它們的建議。

5.《Protecting Kubernetes API Against CVE-2019-11253 (Billion Laughs Attack) and Other Vulnerabilities》

本文通過介紹 K8s 中的一個可能導致 billions laughs attacks 漏洞的例子,講解了在生產環境中使用 K8s 的常規安全操作,包括正確配置 RBAC、定期檢查 Role 和 RoleBinding、永遠不要暴露 Master host 的地址等等。

6.《基於 Knative Serverless 技術實現天氣服務-下篇》

上一期我們介紹瞭如何基於 Knative Serverless 技術實現天氣服務-上篇,本篇文章我們介紹如何通過表格儲存提供的通道服務,實現 Knative 對接表格儲存事件源,訂閱並通過釘釘傳送天氣提醒通知。關於 Knative 更多精彩文章請看 《Knative 系列文章》。

“ 阿里巴巴雲原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術公眾號。”