Kubernetes 1.5 強勢來襲,容器集群管理系統

2020-12-15 開源中國

9月底我們喜迎Kubernetes 1.4版本,現在仍能清楚記得kubeadm帶來的震撼。時隔70多天,我們再次懷著激動的心情等候Kubernetes 1.5版本的發布。

在Github上,Kubernetes已擁有接近20,000顆星、6,314次Fork,吸引了國內外眾多開發者的青睞,社區異常活躍。那麼這次升級Kubernetes又會為我們帶來什麼樣的驚喜?根據官方文檔的顯示,本次升級將主要圍繞以下三項內容進行:

Federation (聯邦)

目前每個Kubernetes集群還處於一個相對獨立的階段,它們分別運行在指定的數據中心裡。不少用戶都表示他們希望有個辦法能讓他們統一管理這些分散的集群,支持跨數據中心的場景。集群聯邦就提供了這樣的功能。

聯邦的概念在早期的版本裡就有提到,它面臨的主要挑戰是:本地親和性、跨集群服務發現、跨集群調度、跨集群遷移等等。社區正在逐步完善對聯邦的支持。在Kubernetes 1.5中將會增加對Daemonsets、Deployments和ConfigMaps的聯邦支持。

簡化集群部署

Kubernetes集群的部署曾經一直是很多初學者的最大障礙。而在Kubernetes 1.4裡引入了kubeadm init和kubeadm join兩個命令,讓Kubernetes可以在任何地方輕鬆部署。在1.5版本中會除了繼續加強kubeadm的能力,還會引入新命令kubefed,以簡化集群聯邦的相關操作,最後提供了對於Master節點的HA設置。

節點魯棒性

Kubernetes可以通過kubeadm join輕而易舉地為集群添加新的計算節點,而過去對這些節點的認識是它們都必須是Linux作業系統。從1.5開始,提供對於Windows Server 2016節點的支持,同時還可以調度Windows Server Containers,這樣用戶就可以在Kubernetes上同時運行Linux應用和Windows應用了。同時在1.5版本中,還實現了CRI(容器運行時接口),以及添加了kubeletAPI調用時的認證和授權。

新特性

  1. Stable 當ReplicaSets不能創建Pods時,它們會通過API報告失敗的底層原因。

  2. Stable kubectl apply現可通過–prune參數刪除不再需要的資源

  3. Beta 無法通過滾動升級到新版本的Deployments,現可通過API說明它們已經被阻塞。

  4. Beta StatefulSets允許要求持久化identity或單實例存儲的工作負載通過Kubernetes創建和管理。

  5. Beta 為了提供安全保障,集群不會強行刪除未響應節點上的Pods,用戶通過CLI強行刪除Pods會收到警告。

  1. Alpha 改進了包含一組默認的集群角色的RBAC API,

  2. Beta 添加了對於Kubelet API認證/授權機制。

  1. Stable 角色出現在kubectl get nodes的結果裡。

  1. Alpha 提升了kubeadm二進位包的交互和可用性,簡化了新建一個運行集群的過程。

  1. Alpha 在GCE上使用kube-up/kube-down腳本來創建/移除集群高可用(複製)的主節點。

  1. Beta 支持聯邦ConfigMaps。

  2. Alpha 支持聯邦Daemonsets。

  3. Alpha 支持聯邦Deployments。

  4. Alpha 集群聯邦添加對於DeleteOptions.OrphanDependents的支持來開啟級聯刪除。

  5. Alpha 引入kubefed命令,簡化聯邦控制臺的部署以及集群註冊/註銷體驗。

  1. Stable 服務可以通過DNS名被其他服務引用,而不是只有在pods裡才可以。

  2. Beta 為NodePort類型和LoadBalancer保留源IP的選項。

  1. Alpha 支持在容器運行時啟用用戶命名空間重映射的時候,保留對宿主用戶命名空間的訪問,

  2. Alpha 引入了v1alpha1版本的CRI(容器運行時接口) API,它允許可插拔的容器運行時。現有一個實驗用的已經就緒的docker-CRI集成,請測試和反饋。

  3. Alpha Kubelet基於QoS層在每個Pod的CGroup層級裡啟動容器。

  4. Beta Kubelet集成了memcg提示消息API,來檢測是否超過閾值。

  5. Beta 引入了Beta版的容器化節點一致性測試: gcr.io/google_containers/node-test:0.2。用戶可以來驗證node設置。

  1. Alpha 添加了對於不透明整數資源(node級)的審計。

  2. Beta PodDisruptionBudget升級為Beta版,可以用來在應用的SLO下安全地drain節點。

  1. Stable Dashboard UI現在顯示面向用戶的對象及它們的資源使用情況。

  1. Alpha 添加了對Windows Server 2016節點和調度Windows Server Container的支持。

顯著改變

  1. 對於有狀態的應用StatefulSet(先前為PetSet)而言,這個改動意味著創建替換的Pods被阻塞,直到舊的Pods確實沒有在運行了(意味著kubelet從分區返回,Node對象的刪除,雲服務商裡實例的刪除,或強行從apiServer中刪除了Pod)。這裡通過保證不可達的Pod不會被認為已經死亡來防止集群應用出現「腦裂」的狀況,除非一些「包圍」操作提供了上述之一的情況。

  2. 對於其他已有的除StatefulSet外的控制器,這對於控制器替換Pods沒有影響,因為控制器不會重用Pods命名(使用生成的名字generate-name)

  3. 用戶編寫的控制器會重用Pod對象的名字,所以需要考慮這個變化。

  1. kube-apiserver添加了–anonymous-auth 參數,默認為true。當它啟用時,訪問安全埠的請求不會被其他配置的認證方法所拒絕,這些請求被當做匿名請求,並且用戶名為system:anonymous,組織為system:unauthenticated。

  2. 認證的用戶被設為system:authenticated組。

  3. 注意:匿名訪問默認啟用。如果你只依賴認證來授權訪問,選擇一個授權模式而不是AlwaysAllow,或者將–anonymous-auth設為false。

升級須知

  • batch/v2alpha1.ScheduledJob被重命名為batch/v2alpha1.CronJob。

  • PetSet被重命名為StatefulSet。如果你現在有PetSets,你要在升級為StatefulSets前後進行一些額外的遷移操作,

  • 如果你從v1.4.x升級你的集群聯邦組件,請更新你的federation-apiserver和federation-controller-manager證明為新版本。

  • 廢棄的kubelet –configure-cbr0參數被移除。經典的網絡模式也是。如果你依賴於此模式,請調研其他的網絡插件kubenet或cni是否滿足需求。

  • 新的client-go結構,根據kubernetes/client-go為版本策略。

  • 廢棄的kube-scheduler –bind-pods-qps和–bind-pods burst參數被移除,替換–kube-api-qps和–kube-api-burst代替。

  • 如果你需要使用1.4的特性:PodDisruptionBudget(例如創建了PodDisruptionBudget對象),然後在從1.4升級為1.5之前,你一定要刪除所有的PodDisruptionBudget對象(policy/v1alpha1/PodDisruptionBudget)。升級之後不可能刪除這些對象。它們的存在也會妨礙你使用1.5裡Beta版的PodDisruptionBudget特性(policy/v1beta1/PodDisruptionBudget)。如果你已經進行了升級,那麼你需要降級到1.4來刪除這些policy/v1alpha1/PodDisruptionBudget對象。

新特性追蹤

                Feature Name                Stage
                Role-based access control                Alpha
                Dramatically Simplify Kubernetes Cluster Creation                Alpha
                Simplify HA Setup for Master                Alpha
                Federated Daemonset                Alpha
                Federated Deployments                Alpha
                Federation: Support generalized deletions, including cascading and …                Alpha
                It should be fast and painless to deploy a Federation of Kubernetes                Alpha
                Enable userns support for containers launched by kubelet                Alpha
                Container Runtime Interface (CRI)                Alpha
                Add support for pod and qos level cgroups                Alpha
                Accounting and feasibility for opaque integer resources in the API                Alpha
                Support Windows Server Containers for K8s                Alpha
                Allow deployments to correctly indicate they are failing to deploy                Beta
                StatefulSets to Beta                Beta
                Make StatefulSets safe during cluster failure                Beta
                Authenticated/Authorized access to kubelet API                Beta
                Federated ConfigMap                Beta
                GCP Cloud Provider: Source IP preservation for Virtual IPs                Beta
                Improve responsiveness of kubelet eviction module                Beta
                Node Conformance Test                Beta
                PodDisruptionBudget and /eviction subresource                Beta
                Communicate replica set and deployment status via conditions                Stable
                Support deleting previous objects in kubectl apply                Stable
                Show roles in kubectl                Stable
                Support services that reference an external service                Stable
                Dashboard UI: show all user facing resources                Stable


來源:https://www.kubernetes.org.cn/998.html

相關焦點

  • Kubernetes 1.14 二進位集群安裝
    Kubernetes 1.14 二進位集群安裝Kubernetes本系列文檔將介紹如何使用二進位部署Kubernetes v1.14集群的所有部署,而不是使用自動化部署(kubeadm)集群。在部署過程中,將詳細列出各個組件啟動參數,以及相關配置說明。在學習完本文檔後,將理解k8s各個組件的交互原理,並且可以快速解決實際問題。
  • kubernetes-issue-1:ephemeral-storage引發的pod驅逐問題
    ephemeral-storage便是對這塊主分區進行管理,通過應用定義的需求(requests)和約束(limits)來調度和管理節點上的應用對主分區的消耗。符合上述1中所述的「鏡像層佔用ephemeral-storage」。因為筆者機器打算做一個單節點的kubernetes集群,去部署微服務的allinone環境,image會很多,佔用空間會很大。原有的20G根本不夠用。
  • Kubernetes集群的監控報警策略最佳實踐
    在容器編排層面的監控和報警有兩個層面。一方面,我們需要監控Kubernetes所處理的服務是否符合所定義的要求。另一方面,我們需要確保Kubernetes的所有組件都正常運行。1.1 是否有足夠的Pod/Container給每個應用程式運行?
  • kubernetes面試題匯總
    是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。kubernetes面試題匯總1.kubernetes是什麼?
  • Kubernetes持續部署指南
    ,目的在於提高集群環境下管理容器化應用的效率。有些人將其稱為容器編排平臺,而 Kubernetes 並非唯一的此類平臺。不過,相比其它對手,其享譽已盛,且知名度仍在不斷提高;更別說你一旦習慣上它,就會發現它真的十分易用。如果你依然好奇為何有人能夠愉快地和 Kubernetes 玩耍,答案就是——簡單。Kubernetes 能夠讓部署、管理多個項目所需的大量集群變得更加容易。
  • Kubernetes 1.17 特性:Kubernetes卷快照移至Beta版
    Kubernetes卷插件系統已經提供了強大的抽象功能,可以自動配置,附加和安裝塊和文件存儲。所有這些特性都是為了支持Kubernetes的工作負載可移植性目標:Kubernetes旨在在分布式系統應用程式和基礎集群之間創建一個抽象層,以便應用程式可以與它們所運行的集群的具體情況隔離,並且應用程式部署不需要「特定於集群」的知識。
  • 基於 Kubernetes 的 GPU 類型調度實現
    為了用海量數據訓練性能更好的模型、加速整個流程,企業的 IT 系統需要具備快速、高效調用管理大規模 GPU 資源的能力。同時,由於算力資源十分昂貴,出於成本控制,企業也需要通過分布式訓練等方式最大化 GPU 資源利用率。面對這類新要求,基於 Kubernetes 的雲原生技術為人工智慧提供了一種新的工作模式。
  • Kubernetes ELK 日誌收集
    集群級日誌架構以sidecar容器收集日誌,如果我們的應用程式的日誌是輸出到容器中的某個日誌文件的話,使用agent節點的方式是無法採集到的對於容器輸出到文件的方式可以直接在Pod中啟動另外一個sidecar容器(例如filebeat)
  • Kubernetes 1.17特性:存儲卷從 In-Tree向CSI的遷移已到達Beta
    當Kubernetes集群管理員更新集群以啟用CSI遷移時,現有的有狀態部署和工作負載將繼續發揮作用;但是,在背後,Kubernetes將所有存儲管理操作(以前都是指向in-tree驅動程序)的控制權交給了CSI驅動程序。Kubernetes團隊一直在努力確保存儲API的穩定性,並確保平滑的升級體驗。
  • Kubernetes 1.8.0 版本發布
    下面看一下 Kubernetes 1.8 中都有哪些發布內容。發布主題Kubernetes 通過興趣小組(SIG)管理社區與開發,下面根據興趣小組來解讀 Kubernetes 1.8 的發布內容。SIG Cluster LifecycleSIG Cluster Lifecycle 負責部署升級和刪除集群的用戶體驗。在 1.8 發布中,SIG Cluster Lifecycle 繼續關注於擴展 kubeadm 的功能,它既是一個面向用戶的集群管理工具,也作為一個構建單元提供給高層次的系統。
  • Rainbond 5.2 穩定版發布,對接已有 Kubernetes 集群,支持多集群
    相對於去年的5.1版本,Rainbond 5.2 版本全新特性包括對接已有Kubernetes集群、 多集群管理、應用複製、 新UI視圖 、OpenAPI開放 等20多個重大功能變更。Rainbond 是雲原生應用管理平臺,不用改代碼就能實現微服務架構,不用學容器就能管理Kubernetes集群,幫企業實現應用上雲,一站式將任何企業應用持續交付到Kubernetes集群、混合雲、多雲等基礎設施。1.重要功能解讀1.1對接已有Kubernetes集群新版 Rainbond 使用新的安裝方式來對接Kubernetes。
  • Kubernetes-應用部署問題定位和處理
    1、應用部署問題處理的整體思路在將容器化的應用部署到Kubernetes集群中,可能會出現各種問題。根據Kubernetes的架構設計原理,容器化應用對外提供服務出現的主要問題在三個點上:1) 應用本身的問題 :此問題為應用本身的問題,不在此文中進行詳細的闡述;2) 作為容器化應用邏輯主機的Pod的問題 :此部分的問題主要涉及到容器化應用是否在容器雲中正常部署和運行,這裡會涉及到CPU、內存、存儲資源等問題;
  • Kubernetes 1.20 發布:妙啊 - OSCHINA - 中文開源技術交流社區
    Kubernetes 1.20 還是最近這段時間以來,功能最密集的版本之一,此版本包含了 42 個增強功能,其中 11 個增強功能已逐步升級為穩定版,15 個轉為 Beta 版,16 個進入 Alpha 版。官方稱 1.20 是「The Raddest Release」,並發布相應徽標(Raddest:形容詞、俚語。excellent; wonderful; cool. )。
  • Rainbond 5.0 正式發布,支持對接管理已有 Kubernetes 集群
    服務日誌方面,增加了計算節點日誌收集器完成日誌收集和與第三方日誌系統對接。本次重構將Rainbond服務抽象進行了改進,使得Rainbond抽象能夠更好的支持Kubernetes原生抽象模型,為5.1版本Rainbond支持Helm Chart源碼創建應用奠定了基礎。
  • 親測好用的Kubernetes&DevOps工具!
    集群部署工具 1、Amazon EKSAmazon Elastic Container Service是一個Kubernetes DevOps工具,它允許用戶管理和擴展他們的容器化應用程式,並使用Kubernetes簡化部署。
  • 親測好用的Kubernetes&DevOps工具
    ,它允許用戶管理和擴展他們的容器化應用程式,並使用Kubernetes簡化部署。可以確保你的容器是安全的,並使用行業最佳實踐進行打包,同時監視軟體的漏洞和更新。但是,用戶表示,添加對多個實例的支持將會更有幫助。支持多個端點,且易於部署。5、Weave ScopeWeave Scope用來監視和解決Kubernetes和Docker集群的故障,你就可以解放雙手輕鬆地識別和糾正你的容器化應用程式的問題。
  • Kubernetes 將棄用 Docker
    近日,Kubernetes 官方發布公告,宣布自 v1.20 起放棄對 Docker 的支持,屆時用戶將收到 Docker 棄用警告
  • MySQL與容器
    翻譯過來的內容是「容器是軟體的標準單元,它將代碼及其所有依賴項打包,以便應用程式在不同的計算環境之間快速可靠地運行。Docker容器映像是一個輕量級的、獨立的、可執行的軟體包,它包括運行應用程式所需的一切:代碼、運行時、系統工具、系統庫和設置」。概述一下,用紅顏色標識出來的字便是容器的特徵。
  • 五個關鍵點,讓 kubernetes 跑起來
    1. kubectl語法kubectl [command] [Type] [NAME] [flags]command: 子命令,用於操作kubernetes集群資源對象的命令,例如:create, delete, describe, get
  • Kind + Docker 一鍵部署K8s集群
    時下網際網路最火的技術無非是容器雲和AI,而虛擬雲技術方面最火則是docker和K8S。docker學習和實踐都很容易,但是K8S的由於集群化,部署需要較多的機器,環境搭建學習實踐比較費勁這一度影響了K8S技術的普及。