當前位置:
首頁 > 最新 > 從 k8s changelog 了解 k8s

從 k8s changelog 了解 k8s

本文從 k8s 的更新日誌中了解 k8s 的變遷,,從版本跨度從1.2-1.10。GitHub 地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md。

v1.0 - 201507


Google宣布成立CNCF基金會,Kubernetes 1.0正式發布。已投入生產的Kubernetes有著如下特性:APP服務,網路,存儲

在生產環境中部署和管理工作負載,包括DNS、負載均衡、擴展、應用級別的健康檢查和服務記錄。

與各種本地和網路卷的狀態應用支持,如谷歌計算引擎永久磁碟,AWS彈性塊存儲和NFS。

在pod中部署容器,pod與容器密切相關,支持簡單更新和回滾。

用命令執行檢查和調試應用,通過CLI和UI進行埠轉發,日誌收集,資源監控。

集群管理

實時升級以及擴展。

通過命名空間分割集群,更深層次的管控資源。例如,你可以將集群細分給不同的應用或測試生產環境。

性能和穩定性

API響應速度快,平均容器調用時間小於5秒。

擴展測試,每個集群中,容器1000秒,節點100秒。

穩定的API

v1.1 - 201511

v1.2 - 201603

顯著增加集群規模支撐的集群規模增加400%。單個節點性能提升四倍。

簡化應用部署和管理

Dynimic Configuration 功能(動態配置)。

TurnKey Deployments 應用部署和滾動升級的自動化。

自動化集群管理

在同一個雲平台上實現跨區擴展。一個Service下的Pod會自動擴展到其它可用區,從而做到跨區容錯。

簡化One-Pod-Per-Node應用的部署管理(通過Extensions API中的DaemonSet API實現)。Kubernetes的調度機制能夠保證一個應用每個節點上運行同樣的Pod,並且只運行一個,比如logging agent。

支持TLS和7層網路(通過Extensions API中的ingress API實現,目前為Beta版)。基於TLS和基於HTTP的七層網路路由,Kubernetes可以更方便地集成到傳統的網路環境中。

支持Graceful Node Shutdown(及Node Drain)。新增的「kubelet drain」命令可以很優雅地將pod從某些節點驅逐出去,從而為節點維護做準備(比如升級kernel

支持自定義Autoscaling的指標(通過Autoscaling API中的HorizontalPodAutoscaler API實現)。Horizontal Pod Autoscaling支持自定義模版(目前為Alpha版),允許用戶指定應用級別的指標和應用自動伸縮的閾值。

新的控制台(dashboard)具備與kubelet commandline類似的功能,允許用戶通過一種新方式與kubernetes集群交互。

其它重要的改進

Job在v1.1中為Beta版,在1.2中可以投入生產環境。

Kube-Proxy默認採用基於iptables的方式。

可以在kubelet中設置系統保留資源來提高Node節點的穩定性。參數為 –system-reserved 和 –kube-reserved。

Liveness和readiness探針支持更多的參數選項,包括periodSeconds、successThreshold和failureThreshold。

新的ReplicaSet API(Extensions API中,目前處於Beta版)

命令kubelet run默認產生Deployments(而不是ReplicationControllers)和Jobs(而不是Pods)對象。

Pods能夠使用環境變數中的Secret數據,並將其作為commandline參數傳遞給container

產生Heapster的穩定版,並支持最多1000個節點:更多的監控指標、減少延遲、減少CPU和內存消耗(大約4M每個節點)。

v1.3 - 201607


該版本包含的特性主要是為了實現兩個用戶願望:

一個是跨集群、區域和雲邊界部署服務;

另一個是在容器中運行更為多樣化的工作負載,包括有狀態服務。

新特性:

提升規模和自動化——允許用戶根據應用程序需求自動向上和向下擴展他們的服務。簡化集群的自動向上和向下擴展,並且將每個集群的最大節點數量提升至原來的兩倍。

有狀態應用程序的alpha支持—— Kubernetes API新增了一個「PetSet」對象:

多次重啟也不會變化的永久性主機名;

自動為每個容器配置永久性磁碟,可以在容器生命周期結束後繼續存在;

組內唯一標識,允許群集和群首選舉;

初始化容器,對啟動集群應用程序至關重要。

簡化本地開發——引入了Minikube,只要一條命令,開發人員就可以在筆記本上啟動一個本地Kubernetes集群,而且與一個完整Kubernetes集群的API兼容。

支持rkt容器鏡像和OCI&CNI容器標準。

更新dashboard UI。

v1.4 - 201609

創建kubernetes集群只需要兩條命令

增強了對有狀態應用的支持

增加了集群聯盟(Federation)API

跨kubernetes集群均勻的調度任務負載

將一個最便宜的kubernetes集群的工作負載進行最大化,如果超出了這個kubernetes集群的承受能力,那麼將額外的工作負載路由到一個更昂貴的kubernetes集群中

根據應用地理區域需求,調度工作負載到不同的kubernetes集群中,對於不同的終端用戶,提供更高的帶寬和更低的延遲。

支持容器安全控制

增強包括調度在內的Kubernetes基礎架構

通過Kubernetes DashBoard UI已經可以實現90%的命令行操作

v1.5 - 201612


1、API 機制

[beta] kube-apiserver支持OpenAPI從alpha移動到beta, 第一個non-go客戶端是基於此特性。

2、應用

[Stable]當replica sets不能創建Pods時,它們將通過API報告失敗的詳細底層原因。

[Stable] kubectl apply現可通過–prune刪除不再需要的資源

[beta] Deployments現可通過API升級到新版本,而之前是無法通過滾動來進行升級的

[beta] StatefulSets(原PetSet)允許要求持久化identity或單實例存儲的工作負載從而在Kubernetes創建和管理。

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

3、認證

[Alpha]改進了基於角色的訪問控制alpha API。(包括一組默認的集群角色)

[Beta]添加了對Kubelet API訪問的認證/授權機制。

4、AWS

[stable]角色出現在kubectl get nodes的結果里。

5、集群生命周期

[alpha] 提升了kubeadm二進位包的交互和可用性,從而更易於新建一個運行集群。

6、集群運維

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

7、聯邦

[beta] 支持聯邦ConfigMaps。

[alpha] 支持聯邦Daemonsets。

[alpha] 支持聯邦Deployments。

[alpha]集群聯邦:為聯邦資源添加對於DeleteOptions.OrphanDependents的支持。

[alpha]引入新命令行工具:kubefed,簡化聯邦控制台的部署以及集群註冊/註銷體驗。

8、網路

[stable]服務可以通過DNS名稱被其他服務引用,而不是只有在pods里才可以。

[beta]為NodePort類型和LoadBalancer的服務保留源IP的選項。

[stable]啟用beta ConfigMap參數支持的DNS水平自動伸縮

9、節點

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

[alpha]引入了v1alpha1版本的CRI(容器運行時介面) API,它允許可插拔的容器運行時;現有一個已經就緒的用於測試和反饋的docker-CRI集成。

[alpha]Kubelet基於QoS層在每個Pod的CGroup層級里啟動容器。

[beta]Kubelet集成了memcg提示消息API,來檢測是否超過閾值。

[beta]引入了Beta版本的容器化節點一致性測試: gcr.io/google_containers/node-test:0.2。從而讓用戶驗證node設置。

10、調度

[alpha]添加了對不透明整數資源(node級)的審計支持。

[beta] PodDisruptionBudget已經升級到Beta版,當想要應用SLO時,可以用來安全地drain節點。

11、UI

[stable]Dashboard UI如今顯示面向用戶的對象及它們的資源使用情況。

12、Windows

[alpha]添加了對Windows Server 2016節點和調度Windows Server Container的支持。

v1.6 - 201703

擴大集群規模,加強集群聯邦功能將Kubernetes底層架構預設改成etcd v3版本,可支持的集群規模也擴大至5,000個節點,可支持的Pod規模也增加到15萬個

靠角色訪問控制機制加強安全直接用API來取得不同賬號的許可權管理政策,來控制使用者賬號或服務,可將系統資源指派給特定命名空間,讓所屬賬號來存取。

儲存動態分配PV PVC StorageClass

強化使用者對Pod的控制指定每個Pod一個節點標籤(Node Label),限制Pod只能在特定節點中運行,也可以將Pod排除於特定節點上運作。

更新容器Runtime介面及常駐程序

v1.7 - 20170629


轉自https://jimmysong.io/kubernetes-handbook/appendix/kubernetes-1.7-changelog.html2017年6月29日,kuberentes1.7發布。該版本的kubernetes在安全性、存儲和可擴展性方面有了很大的提升。改版本的詳細更新文檔請查看Changelog。這些新特性中包含了安全性更高的加密的secret、pod間通訊的網路策略,限制kubelet訪問的節點授權程序以及客戶端/伺服器TLS證書輪換。對於那些在Kubernetes上運行橫向擴展資料庫的人來說,這個版本有一個主要的特性,可以為StatefulSet添加自動更新並增強DaemonSet的更新。我們還宣布了對本地存儲的Alpha支持,以及用於更快地縮放StatefulSets的突發模式。此外,對於高級用戶,此發行版中的API聚合允許使用用於自定義的API與API server同時運行。其他亮點包括支持可擴展的准入控制器,可插拔雲供應商程序和容器運行時介面(CRI)增強功能。

新功能


Network Policy API提升為穩定版本。用戶可以通過使用網路插件實現的網路策略來控制哪些Pod之間能夠互相通信。

節點授權和准入控制插件是新增加的功能,可以用於限制kubelet可以訪問的secret、pod和其它基於節點的對象。

加密的Secret和etcd中的其它資源,現在是alpha版本。

Kubelet TLS bootstrapping現在支持客戶端和伺服器端的證書輪換。

由API server存儲的審計日誌現在更具可定製性和可擴展性,支持事件過濾和webhook。它們還為系統審計提供更豐富的數據。

有狀態負載

StatefulSet更新是1.7版本的beta功能,它允許使用包括滾動更新在內的一系列更新策略自動更新諸如Kafka,Zookeeper和etcd等有狀態應用程序。

StatefulSets現在還支持對不需要通過Pod管理策略進行排序的應用程序進行快速擴展和啟動。這可以是主要的性能改進。

本地存儲(alpha)是有狀態應用程序最常用的功能之一。用戶現在可以通過標準的PVC/PV介面和StatefulSet中的StorageClass訪問本地存儲卷。

DaemonSet——為每個節點創建一個Pod,現在有了更新功能,在1.7中增加了智能回滾和歷史記錄功能。

新的StorageOS Volume插件可以使用本地或附加節點存儲中以提供高可用的集群範圍的持久卷。

可擴展性

運行時的API聚合是此版本中最強大的擴展功能,允許高級用戶將Kubernetes風格的預先構建的第三方或用戶創建的API添加到其集群中。

容器運行時介面(CRI)已經增強,可以使用新的RPC調用從運行時檢索容器度量。CRI的驗證測試已經發布,與containerd進行了Alpha集成,現在支持基本的生命周期和鏡像管理。參考深入介紹CRI的文章。

其它功能

引入了對外部准入控制器的Alpha支持,提供了兩個選項,用於向API server添加自定義業務邏輯,以便在創建對象和驗證策略時對其進行修改。

基於策略的聯合資源布局提供Alpha版本,用於根據自定義需求(如法規、定價或性能)為聯合(federated)集群提供布局策略。

棄用

第三方資源(TPR)已被自定義資源定義(Custom Resource Definitions,CRD)取代,後者提供了一個更清晰的API,並解決了TPR測試期間引發的問題和案例。如果您使用TPR測試版功能,則建議您遷移,因為它將在Kubernetes 1.8中被移除。

v1.8 - 20170928


2017年9月28日,kubernetes1.8版本發布。該版本中包括了一些功能改進和增強,並增加了項目的成熟度,將強了kubernetes的治理模式,這些都將有利於kubernetes項目的持續發展。聚焦安全性Kubernetes1.8的基於角色的訪問控制(RBAC)成為stable支持。RBAC允許集群管理員動態定義角色對於Kubernetes API的訪問策略。通過網路策略篩選出站流量的Beta支持,增強了對入站流量進行過濾的現有支持。 RBAC和網路策略是強化Kubernetes內組織和監管安全要求的兩個強大工具。Kubelet的傳輸層安全性(TLS)證書輪換成為beta版。自動證書輪換減輕了集群安全性運維的負擔。聚焦工作負載支持Kubernetes 1.8通過apps/v1beta2組和版本推動核心工作負載API的beta版本。Beta版本包含當前版本的Deployment、DaemonSet、ReplicaSet和StatefulSet。 工作負載API是將現有工作負載遷移到Kubernetes以及開發基於Kubernetes的雲原生應用程序提供了基石。對於那些考慮在Kubernetes上運行大數據任務的,現在的工作負載API支持運行kubernetes原生支持的Apache Spark。批量工作負載,比如夜間ETL工作,將從CronJobs的beta版本中受益。自定義資源定義(CRD)在Kubernetes 1.8中依然為測試版。CRD提供了一個強大的機制來擴展Kubernetes和用戶定義的API對象。 CRD的一個用例是通過Operator Pattern自動執行複雜的有狀態應用,例如鍵值存儲、資料庫和存儲引擎。隨著穩定性的繼續推進,預計將繼續加強對CRD的驗證。更多Volume快照、PV調整大小、自動taint、pod優先順序、kubectl插件等!

v1.9 - 20171215


2017年12月15日,kubernetes1.9版本發布。Kubernetes依然按照每三個月一個大版本發布的速度穩定迭代,這是今年發布的第四個版本,也是今年的最後一個版本,該版本最大的改進是Apps Workloads API成為穩定版本,這消除了很多潛在用戶對於該功能穩定性的擔憂。還有一個重大更新,就是測試支持了Windows了,這打開了在kubernetes中運行Windows工作負載的大門。

Workloads API GAapps/v1 Workloads API成為GA(General Availability),且默認啟用。 Apps Workloads API將DaemonSetDeploymentReplicaSetStatefulSetAPI組合在一起,作為Kubernetes中長時間運行的無狀態和有狀態工作負載的基礎。Deployment和ReplicaSet是Kubernetes中最常用的兩個對象,經過一年多的實際使用和反饋後,現在已經趨於穩定。SIG apps同時將這些經驗應用到另外的兩個對象上,使得DaemonSet和StatefulSet也能順利畢業走向成熟。v1(GA)意味著已經生產可用,並保證長期的向後兼容。

Windows支持(beta)Kubernetes最初是為Linux系統開發的,但是用戶逐漸意識到容器編排的好處,我們看到有人需要在Kubernetes上運行Windows工作負載。在12個月前,我們開始認真考慮在Kubernetes上支持Windows Server的工作。SIG-Windows現在已經將這個功能推廣到beta版本,這意味著我們可以評估它的使用情況。

增強存儲kubernetes從第一個版本開始就支持多種持久化數據存儲,包括常用的NFS或iSCSI,以及對主要公共雲和私有雲提供商的存儲解決方案的原生支持。隨著項目和生態系統的發展,Kubernetes的存儲選擇越來越多。然而,為新的存儲系統添加volume插件一直是一個挑戰。容器存儲介面(CSI)是一個跨行業標準計劃,旨在降低雲原生存儲開發的障礙並確保兼容性。SIG-Storage和CSI社區正在合作提供一個單一介面,用於配置、附著和掛載與Kubernetes兼容的存儲。Kubernetes 1.9引入了容器存儲介面(CSI)的alpha實現,這將使掛載新的volume插件就像部署一個pod一樣簡單,並且第三方存儲提供商在開發他們的解決方案時也無需修改kubernetes的核心代碼。由於該功能在1.9版本中為alpha,因此必須明確啟用該功能,不建議用於生產使用,但它為更具擴展性和基於標準的Kubernetes存儲生態系統提供了清晰的路線圖。

其它功能自定義資源定義(CRD)校驗,現在已經成為beta,默認情況下已啟用,可以用來幫助CRD作者對於無效對象定義給出清晰和即時的反饋。SIG Node硬體加速器轉向alpha,啟用GPU,從而實現機器學習和其他高性能工作負載。CoreDNS alpha可以使用標準工具來安裝CoreDNS。kube-proxy的IPVS模式進入beta版,為大型集群提供更好的可擴展性和性能。社區中的每個特別興趣小組(SIG)繼續提供其所在領域的用戶最迫切需要的功能。有關完整列表,請訪問發行說明。

v1.10 - 20180326


2018年3月26日,kubernetes1.10版本發布,這是2018年發布的第一個版本。該版本的Kubernetes主要提升了Kubernetes的成熟度、可擴展性與可插入性。該版本提升了三大關鍵性功能的穩定度,分別為存儲、安全與網路。另外,此次新版本還引入了外部kubectl憑證提供程序(處於alpha測試階段)、在安裝時將默認的DNS服務切換為CoreDNS(beta測試階段)以及容器存儲介面(簡稱CSI)與持久化本地卷的beta測試版。下面再分別說下三大關鍵更新。

存儲

CSI(容器存儲介面)迎來Beta版本,可以通過插件的形式安裝存儲。

持久化本地存儲管理也迎來Beta版本。

對PV的一系列更新,可以自動阻止Pod正在使用的PVC的刪除,阻止已綁定到PVC的PV的刪除操作,這樣可以保證所有存儲對象可以按照正確的順序被刪除。

安全

kubectl可以對接不同的憑證提供程序

各雲服務供應商、廠商以及其他平台開發者現在能夠發布二進位插件以處理特定雲供應商IAM服務的身價驗證

網路

將原來的kube-dns切換為CoreDNS

「滋磁一下」


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 血衫非弧 的精彩文章:

TAG:血衫非弧 |