1. 程式人生 > >Rancher Kubernetes Engine(RKE)正式釋出:閃電般的Kubernetes安裝部署體驗_Kubernetes中文社群

Rancher Kubernetes Engine(RKE)正式釋出:閃電般的Kubernetes安裝部署體驗_Kubernetes中文社群

作為Rancher 2.0的重要元件,Rancher Kubernetes Engine(RKE)現已正式全面釋出!這是Rancher Labs推出的新的開源專案,一個極致簡單易用、閃電般快速、支援一切基礎架構(公有云、私有云、VM、物理機等)的Kubernetes安裝程式。

為何做一個全新的K8s安裝程式?

在過去兩年中,Rancher已經成為最為流行和受歡迎的建立和管理Kubernetes叢集的平臺之一。因為易於上手的特性和極致簡單的使用者體驗,Rancher作為建立與管理Kubernetes的平臺深受全球大量使用者青睞 。Rancher將etcd、Kubernetes master和worker節點操作完全自動化。然而Rancher 1.x中只提供了Kubernetes的部署優化,2.0會繼續加強對Kubernetes使用和執行過程中的進一步的優化與支援。

現階段市場中有不少可供使用者選擇的用於建立Kubernetes叢集的安裝程式。據我們所見,其中兩個最受歡迎的安裝程式是kops和Kubespray:

  1. Kops也許是使用最廣泛的Kubernetes安裝程式。事實上,它不僅僅是一個安裝程式。Kops為使用者備好了所有可能需要的雲資源,它能用來安裝Kubernetes,還可以連線雲監控服務,以確保Kubernetes叢集的持續執行。不過,Kops與底層雲基礎架構整合過於緊密,在AWS上表現最為優秀,而對GCE和vSphere等其他基礎架構平臺的就不能提供支援。
  2. Kubespray是用Ansible編寫的獨立Kubernetes安裝程式,它可以在任何伺服器上安裝Kubernetes叢集,非常受使用者歡迎。儘管Kubespray與各種雲API具有一定程度的整合,但它基本上是獨立於雲的,因此可以與任何雲、虛擬化叢集或裸機伺服器協同工作。目前,Kubespray已經發展成一個由大量開發人員參與的複雜專案。

Kubeadm是另一個跟隨Kubernetes主版本分發的安裝工具。然而,Kubeadm還不支援像HA叢集這樣的功能。儘管在 kops和Kubespray等專案中使用了 kubeadm 某些程式碼,但若作為生產級的Kubernetes安裝程式,kubeadm還不適合。

Rancher 2.0可以支援並納管任何Kubernetes叢集。我們鼓勵使用者使用GKE和AKS等公有云雲託管服務。對於想要自行建立自己的叢集的使用者,我們正在考慮將kops或Kubespray整合到我們的產品陣容中。Kops不符合我們的需求,因為它並不適用於所有云提供商。其實,Kubespray已經很接近我們的需要了,尤其是 Kubespray可以在任何地方安裝Kubernetes的這一特性。但最終,我們決定不採用Kubespray,而是構建自己的輕量級安裝程式,原因有兩個:

  1. 我們可以重新起步,利用Kubernetes本身的優勢建立一個更簡易的系統。
  2. 與在Rancher 1.6中安裝Kubernetes一樣,通過使用基於容器的方法,我們可以擁有更快的安裝程式。

RKE如何工作

RKE是一個獨立的可執行檔案,它可以從叢集配置檔案中讀取並啟動、關閉或升級Kubernetes群集。 如下是一個示例配置檔案:

---
auth:
 strategy: x509

network:
 plugin: flannel

ssh_key_path: /home/user/.ssh/id_rsa

nodes:
 - address: server1
 user: ubuntu
 role: [controlplane, etcd]
 - address: server2
 user: ubuntu
 role: [worker]

services:
 etcd:
 image: quay.io/coreos/etcd:latest
 kube-api:
 image: rancher/k8s:v1.8.3-rancher2
 service_cluster_ip_range: 10.233.0.0/18
 extra_args:
 v: 4
 kube-controller:
 image: rancher/k8s:v1.8.3-rancher2
 cluster_cidr: 10.233.64.0/18
 service_cluster_ip_range: 10.233.0.0/18
 scheduler:
 image: rancher/k8s:v1.8.3-rancher2
 kubelet:
 image: rancher/k8s:v1.8.3-rancher2
 cluster_domain: cluster.local
 cluster_dns_server: 10.233.0.3
 infra_container_image: gcr.io/google_containers/pause-amd64:3.0
 kubeproxy:
 image: rancher/k8s:v1.8.3-rancher2

addons: |-
 ---
 apiVersion: v1
 kind: Pod
 metadata:
 name: my-nginx
 namespace: default
 spec:
 containers:
 - name: my-nginx
 image: nginx
 ports:
 - containerPort: 80

如上所示,我們通過指定認證策略、網路模型和本地SSH金鑰路徑來啟動檔案。叢集配置檔案的主體由以下三部分組成:

  1. 節點部分描述了組成Kubernetes叢集的所有伺服器。每個節點都承擔三個角色中的一個或多個角色:controlplane、etcd和worker。您可以通過更改節點部分並重新執行RKE命令來新增或刪除Kubernetes叢集中的節點。
  2. 服務部分描述了在Kubernetes叢集上執行的所有系統服務。RKE將所有系統服務打包為容器。
  3. 外掛部分描述了在Kubernetes叢集上執行的使用者級程式。因此,RKE使用者可以在同一檔案中指定Kubernetes叢集配置和應用程式配置。

RKE不是一個可以長時間執行的、可以監控和操作Kubernetes叢集的服務。RKE需要與像Rancher 2.0這樣的完整的容器管理系統或像AWS CloudWatch、Datadog或Sysdig等一樣的獨立監控系統配合使用。配合使用時,您就可以構建自己的指令碼來監控RKE叢集的健康狀況了。

RKE:嵌入式Kubernetes安裝程式

當用戶需要構件一個分散式應用系統時,常常不得不處理後端資料庫、資料訪問層、叢集和擴充套件等方面的問題。現在,越來越多的開發人員不再使用傳統的應用程式伺服器,而是開始使用Kubernetes作為分散式應用程式平臺:

  1. 開發人員使用etcd作為後端資料庫。
  2. 開發人員使用Kubernetes Custom Resource Definition(CRD)作為資料訪問層,並使用kubectl在其資料模型上執行基本的CRUD操作。
  3. 開發人員將應用程式打包為容器,並使用Kubernetes完成叢集和伸縮工作。

以這種方式構建的應用程式將作為Kubernetes YAML檔案傳送給使用者。如果使用者已經執行Kubernetes叢集,或可以訪問公有云託管的Kubernetes服務(如GKE或AKS),就可以輕鬆執行這些應用程式。但是,那些希望在虛擬化或裸機伺服器上安裝應用程式的使用者該怎麼辦呢?

通過將RKE作為嵌入式Kubernetes安裝程式捆綁到應用程式中,應用程式開發人員就可以解決上述需求。通過呼叫RKE,應用程式安裝便可以啟動,且會為使用者建立一個Kubernetes叢集。而我們已注意到,將諸如RKE之類的輕量級安裝程式嵌入到分散式應用程式中,滿足了很多來自使用者的興趣與需求。

為Kubernetes落地普及而前行

Rancher Kubernetes Engine(RKE)秉承了Rancher產品一貫易於上手、操作簡單、體驗友好的特性,使使用者建立Kubernetes叢集的過程變得更加簡單,且我們相信通過雲管理平臺進行Kubernetes安裝是大多數Kubernetes使用者的最佳選擇。

在Rancher Labs,我們希望Kubernetes有朝一日成為所有云服務商支援的標準化的基礎架構,且一直在為了實現這個願景而努力。已推出技術預覽版、將於2018年初正式釋出的Rancher 2.0,將可以同時納管和匯入任何型別、來自任何雲提供商的Kubernetes叢集,包括RKE、AWS EKS、Google Container Engine (GKE)、Azure Container Service (AKS)等等。

下一步,一起走吧

秉承Rancher一貫100%開源的風格,你可以直接從GitHub上下載RKE