Kubernetes 1.14:主要創新概述

Kubernetes 1.14:主要創新概述

今夜 將會發生 Kubernetes 的下一個版本 - 1.14。 根據我們部落格的傳統,我們正在討論這個精彩的開源產品新版本的關鍵變化。

用於準備本資料的資訊取自 Kubernetes 增強追蹤表, 變更日誌-1.14 以及相關問題、拉取請求、Kubernetes 增強提案 (KEP)。

我們先從 SIG cluster-lifecycle 的重要介紹開始: 動態故障轉移集群 Kubernetes(或更準確地說,自架 HA 部署)現在 可以被創建 使用熟悉的(在單節點叢集的上下文中)命令 kubeadm (init и join)。 簡而言之,為此:

  • 集群使用的證書被轉移為秘密;
  • 可以在 K8s 叢集內使用 etcd 叢集(即擺脫先前存在的外部依賴) etcd 操作符;
  • 記錄提供容錯配置的外部負載平衡器的建議設定(將來計劃消除這種依賴性,但現階段還沒有)。

Kubernetes 1.14:主要創新概述
使用 kubeadm 建立的 Kubernetes HA 叢集的架構

實作細節可以參見 設計方案。 這個功能確實是期待已久的:alpha 版本預計會在 K8s 1.9 中出現,但現在才出現。

API

團隊 apply 一般來說 聲明式物件管理 通過了kubectl 在 api 伺服器中。 開發商自己簡短地解釋了他們的決定: kubectl apply - 在 Kubernetes 中使用配置的基本部分,然而,“它充滿了錯誤並且難以修復”,因此需要將該功能恢復正常並轉移到控制平面。 當今存在的問題的簡單明了的例子:

Kubernetes 1.14:主要創新概述

有關實施的詳細資訊位於 韓國環保局。 目前的準備是 alpha(計劃在下一個 Kubernetes 版本中升級到 beta)。

提供 alpha 版本 機會 使用 OpenAPI v3 方案 為 CustomResources 建立和發布 OpenAPI 文檔 (CR) 用於驗證(伺服器端)K8s 使用者定義資源(CustomResourceDefinition,CRD)。 為 CRD 發布 OpenAPI 允許客戶端(例如 kubectl)在您這邊執行驗證(在 kubectl create и kubectl apply)並根據方案(kubectl explain)。 詳細資訊 - 在 韓國環保局.

預先存在的日誌 現已開放 有旗幟的 O_APPEND (但不是 O_TRUNC)以避免在某些情況下遺失日誌,並方便使用外部實用程式截斷日誌以進行輪換。

同樣在 Kubernetes API 的上下文中,可以注意到, PodSandbox и PodSandboxStatus 添加runtime_handler 記錄有關的信息 RuntimeClass 在 pod 中(在有關文本中了解更多) Kubernetes 1.12 版本,該類以 alpha 版本的形式出現),並在招生 Webhooks 中 實施的 能夠確定哪些版本 AdmissionReview 他們支持。 最後,Admission Webhooks 規則現在是 可以被限制 命名空間和叢集框架使用它們的範圍。

貯存

PersistentLocalVolumes,自發布以來一直處於測試狀態 K8s 1.10, 宣布 stable(GA):此功能門不再停用,並將在 Kubernetes 1.17 中刪除。

機會 使用名為的環境變數 向下API (例如,pod 名稱)作為安裝目錄的名稱 subPath,以新領域的形式開發 subPathExpr,現在用於確定所需的目錄名稱。 該功能最初出現在 Kubernetes 1.11 中,但在 1.14 中仍處於 alpha 版本狀態。

與先前的 Kubernetes 版本一樣,針對積極開發的 CSI(容器儲存介面)引入了許多重大變更:

CSI

可用(作為 alpha 版本的一部分) 支持 調整 CSI 卷的大小。 要使用它,您需要啟用名為的功能門 ExpandCSIVolumes,以及特定 CSI 驅動程式中對此操作的支援的可用性。

alpha 版本中 CSI 的另一個功能 - 機會 直接引用(即不使用 PV/PVC)pod 規格中的 CSI 磁碟區。 這 取消了使用 CSI 作為專用遠端資料儲存的限制,為他們打開通往世界的大門 局部暫時卷。 用來 (文檔中的示例) 必須啟用 CSIInlineVolume 功能門。

與CSI 相關的Kubernetes「內部」也取得了進展,這些進展對於最終用戶(系統管理員)來說並不那麼明顯......目前,開發人員被迫支援每個儲存插件的兩個版本:一個- “在舊方法”,在 K8s 程式碼庫內部(在 -tree 中),第二個 - 作為新 CSI 的一部分 (閱讀更多相關信息,例如, 這裡)。 這會造成一些不便,這是可以理解的,隨著 CSI 本身的穩定,這些不便需要解決。 由於以下原因,不可能簡單地棄用內部(樹內)插件的 API 相關 Kubernetes 政策.

這一切都導致了 alpha 版本達到了 遷移過程 內部插件程式碼,在CSI 插件中以in-tree 的形式實現,因此開發人員的擔憂將減少到支援其插件的一個版本,並且與舊API 的兼容性將保持不變,並且在通常情況下可以宣布它們已過時。 預計到 Kubernetes 的下一個版本 (1.15),所有雲端提供者外掛程式都將遷移,該實作將獲得 beta 狀態,並預設在 K8s 安裝中啟動。 詳細資訊請參見 設計方案。 這次遷移也導致 失敗 來自特定雲端提供者(AWS、Azure、GCE、Cinder)定義的數量限制。

此外,還支援具有 CSI 的區塊設備(CSIBlockVolume) 轉入 到測試版。

節點/Kubelet

推出 Alpha 版本 新端點 在 Kubelet 中,設計用於 返回關鍵資源的指標。 一般來說,如果之前 Kubelet 從 cAdvisor 接收容器使用情況的統計信息,那麼現在這些數據通過 CRI(容器運行時接口)來自容器運行時環境,但也保留了與舊版本 Docker 的兼容性。 以前,Kubelet 中收集的統計資料是透過 REST API 發送的,但現在端點位於 /metrics/resource/v1alpha1。 開發商的長期策略 是最小化 Kubelet 提供的指標集。 順便說一句,這些指標本身 現在他們打電話 不是“核心指標”,而是“資源指標”,被描述為“一級資源,如cpu、內存”。

一個非常有趣的細微差別:儘管與使用 Prometheus 格式的各種情況相比,gRPC 端點具有明顯的效能優勢 (請參閱下面的基準之一的結果),作者更喜歡 Prometheus 的文本格式,因為這個監控系統在社群中有明確的領導地位。

「gRPC 與主要監控管道不相容。 Endpoint 僅適用於向 Metrics Server 傳送指標或監控與其直接整合的元件。 在 Metrics Server 中使用快取時 Prometheus 文字格式的效能 夠好了 鑑於 Prometheus 在社區中的廣泛採用,我們更喜歡 Prometheus 而不是 gRPC。 一旦 OpenMetrics 格式變得更加穩定,我們將能夠使用基於原型的格式來接近 gRPC 性能。”

Kubernetes 1.14:主要創新概述
在新的 Kubelet 端點中使用 gRPC 和 Prometheus 格式進行指標比較的效能測試之一。 更多圖表和其他詳細資訊可以在 韓國環保局.

其他變化包括:

  • 現在的 Kubelet(一次) 試圖阻止 在重新啟動和刪除操作之前容器處於未知狀態。
  • 當使用 PodPresets 現在到初始化容器 添加 與常規集裝箱的資訊相同。
  • 庫貝萊特 開始使用 usageNanoCores 來自 CRI 統計提供程序,以及 Windows 上的節點和容器 添加 網路統計。
  • 作業系統和架構資訊現在記錄在標籤中 kubernetes.io/os и kubernetes.io/arch 節點物件(從 beta 轉移到 GA)。
  • 能夠為 pod 中的容器指定特定的系統使用者群組(RunAsGroup,出現在 K8s 1.11) 先進的 測試版之前(預設為啟用)。
  • du 和 find 在 cAdvisor 中使用, 更換 關於 Go 的實現。

CLI的

在 cli-runtime 和 kubectl 中 添加 -k 標誌用於集成 客製化 (順便說一下,它的開發現在是在一個單獨的儲存庫中進行的),即處理來自特殊 kustomization 目錄的其他 YAML 檔案(有關使用它們的詳細信息,請參閱 韓國環保局):

Kubernetes 1.14:主要創新概述
簡單檔案使用範例 客製化 ( kustomize 的更複雜的應用程式是可能的 覆蓋)

另外:

  • 添加 新團隊 kubectl create cronjob,其名字不言而喻。
  • В kubectl logs 現在你可以 結合 旗幟 -f (--follow 用於流日誌)和 -l (--selector 用於標籤查詢)。
  • Kubectl 教過的 複製通配符選擇的檔案。
  • 致團隊 kubectl wait 添加--all 選擇指定資源類型的命名空間中的所有資源。

他人

以下功能已獲得穩定 (GA) 狀態:

Kubernetes 1.14 中引入的其他變更:

  • 預設 RBAC 策略不再允許 API 訪問 discovery и access-review 未經身份驗證的用戶 (未經驗證).
  • 官方 CoreDNS 支持 確保 僅限Linux,因此當使用kubeadm在叢集中部署它(CoreDNS)時,節點必須只能在Linux上運行(使用nodeSelectors來解決此限制)。
  • 現在預設 CoreDNS 配置 用途 轉發插件 而不是代理。 另外,在 CoreDNS 中 添加 readinessProbe,它會阻止適當的(未準備好服務)pod 上的負載平衡。
  • 在 kubeadm 中,分階段 initupload-certs, 成為可能 載入將新控制平面連接到 kubeadm-certs 密鑰所需的憑證(使用標誌 --experimental-upload-certs).
  • 適用於 Windows 安裝的 alpha 版本已經出現 支持 gMSA(群組託管服務帳戶)- Active Directory 中也可以由容器使用的特殊帳戶。
  • 對於 G.C.E. 活性 etcd 和 kube-apiserver 之間的 mTLS 加密。
  • 使用/依賴軟體的更新:kubeadm 中支援 Go 1.12.1、CSI 1.1、CoreDNS 1.3.1、Docker 18.09,支援的最低 Docker API 版本現在為 1.26。

聚苯乙烯

另請閱讀我們的博客:

來源: www.habr.com

添加評論