天天看點

1.6微服務--Kubernetes簡介Kubernetes簡介

Kubernetes簡介

一、Kubernetes簡介

Kubernetes 是一個容器叢集管理系統,為容器化的應用程式提供部署運作、維護、擴充、資源排程、服務發現等功能。

Kubernetes 結合了社群的最佳創意和實踐, 旨在幫助開發人員将容器打包、動态編排, 同時幫助各大公司向微服務方向進行技術演進。

它具有以下特點:

1)Planet Scale (大容量)

使用Kubemetes 的各大公司(包括Google )每周運作了數十億個容器, 這些容器的平台采用同樣的設計原則。這些平台在不增加團隊成員的情況下,可以讓容器數量增加, 節省了人力成本,增加了複用性

2)Never Outgrow (永不過時)

無論容器是運作在一個小公司的測試環境中, 還是運作在一個全球化企業的大型系統裡, Kubemetes 都能靈活地滿足複雜的需求。同時, 無論業務多麼複雜, Kubernetes 都能穩定地提供服務

3)Run Anywhere (随時随地運作)

Kubernetes 是開源的, 可以自由地利用内部、混合或公共雲的基礎元件進行部署, 讓開發者可以将更多的時間和精力投入在業務上, 而不是服務部署上

Kubernetes 提供的功能如下:

1、Automatic Binpacking (自動包裝)

根據程式自身的資源需求和一些其他方面的需求自動配置容器。Kubernetes 能夠最大化地利用機器的工作負載,提高資源的利

用率

2、Self-healing (自我修複)

容器失敗自動重新開機, 當節點處于“ 當機” 的狀态時, 它會被替代并重新編排; 當容器達到使用者設定的無響應的閥值時, 它會被剔除, 井且不讓其他容器調用它, 直到它恢複服務

3、Horizontal Scaling (橫向擴充)

可以根據機器的CPU 的使用率來調整容器的數量,隻需開發人員在管理界面上輸入幾個指令即可

4、Service Discovery and Load Balancing (服務發現和負載均衡)

在不需要修改現有的應用程式代碼的情況下,便可使用服務的發現機制。Kubernetes 為容器提供了一個虛拟網絡環境,每個容器擁有獨立的IP 位址和DNS 名稱,容器之間實作了負載均衡。

5、Automated Rollouts and Rollbacks (自動部署或復原)

 Kubernetes 支撐滾動更新模式,能逐漸梓換掉目前環境的應用程式和配置,同時監視應用程式運作狀況,以確定不會同時殺死所有執行個體。如果出現問題, Kubernetes 支援復原更改

6、Secret and Configuration Management (配置管理)

部署和更新應用程式的配置,不需要重新打鏡像,并且不需要在堆找中暴露配置

7、Storage Orchestration (存儲編排)

自動安裝所選擇的存儲系統,無論是本地存儲、公共雲提供商(如GCP 或AWS ),還是網絡存儲系統(如NFS 、Gluster 、Ceph 、Cinder 或Flocker ) 

8、Batch execution (批量處理)

除了服務之外, Kubemetes 還可以管理批量處理和CI的工作負載,還可以替換容器,如(NFS 、iSCSI 、Gluster、Ceph 、Cinder 或Flocker 等)

從Kubemetes 提供的功能來看, Kubernetes 完全可以成為建構和部署微服務的一個工具,它是從服務編排上實作的,而不是代碼實作的,Kubemetes 已經發展成為容器管理領域的上司者

二、SpringCloud與Kubemetes比較

Spring Cloud 是一個建構微服務的架構,而Kubernetes 是通過對運作的容器的編排來實作建構微服務的。

兩者從建構微服務的角度和實作方式有很大的不同,但它們提供了建構微服務所需的全部功能。從提供的微服務所需的功能上看,兩者不分上下,二者比較結果如圖所示:

1.6微服務--Kubernetes簡介Kubernetes簡介
1.6微服務--Kubernetes簡介Kubernetes簡介

Kubemetes 在編排上解決微服務的各個功能,例如服務發現、配置管理、負載均衡、容錯等。

Kubemetes 不局限于Java 平台,也不局限于語言,開發者可以自由選擇開發語言進行項目開發,

與Kubemetes 相比, Spring Cloud 具有以下優點:

1)采用Java 語言開發,基于Spring 平台, 繼承了Spring Boot 快速開發的優勢,是Java程式員實作微服務的最佳實踐

2)Spring Cloud 有大量的類庫和資源, 基本上能解決所有可能出現的問題

與Kubemetes 比較, Spring Cloud 具有以下缺點:

1)依賴于Java 語言,不支援跨語言。

2)Spring Cloud 需要在代碼中關注微服務的功能點,例如服務發現、負載均衡等,Kubemetes 則不需要關注這些

Kubemetes 的優點如下:

1)Kubemetes 支援多種語言,并且是一個容器管理平台。Kubemetes 使程式容器化, 并在容器管理上提供了微服務的功能,例如配置管理、服務發現、負載均衡等;Kubemetes 能夠被應用于多種場合,例如程式開發、測試環境、建立環境等。

2)Kubemetes 除了提供基本的建構微服務的功能外,還提供了環境、資源限制、管理應用程式的生命周期的功能;Kubemetes 更像是一個平台,而Spring Cloud 是一個架構。

Kubemetes 的缺點如下:

1)Kubemetes 面向DevOps 人員,普通的開發人員需要學習很多這方面的知識,學習成本非常高

2)Kubemetes 發展十分迅速。新特性更新得快,是以需要開發者不斷地學習

Spring Cloud 嘗試從Java 類庫來實作微服務的所有功能,而Kubernetes 嘗試從容器編排上實作所有的微服務功能,兩者的實作角度和方式不一樣。

從實作的方式上來講, Kubernetes 略勝一籌;Kubernetes 面向DevOps 人員,學習成本高,Spring Cloud 有很多的類庫,以Spring 為基礎,繼承了SpringBoot 快速開發的優點,為Java 程式員開發微服務提供了很好的體驗,學習成本也較低。

————————————————————————————————————————————

内容來源---《深入了解Spring Cloud與微服務建構》

繼續閱讀