RKE快速上手指南:開源的輕量級K8S安裝程式_Kubernetes中文社群
安裝Kubernetes是公認的對運維和DevOps而言最棘手的問題之一。因為Kubernetes可以在各種平臺和作業系統上執行,所以在安裝過程中需要考慮很多因素。
在這篇文章中,我將介紹一種新的、用於在裸機、虛擬機器、公私有云上安裝Kubernetes的輕量級工具——Rancher Kubernetes Engine(RKE)。RKE是一個用Golang編寫的Kubernetes安裝程式,極為簡單易用,使用者不再需要做大量的準備工作,即可擁有閃電般快速的Kubernetes安裝部署體驗。
如何安裝RKE
你可以從官方的GitHub倉庫安裝RKE。 RKE可以在Linux和MacOS機器上執行。安裝完成後,執行以下程式碼,確保您使用的是最新版本:
RKE安裝的準備工作
RKE是一個基於容器的安裝程式,這意味著它需要在遠端伺服器上安裝Docker,目前需要在伺服器上安裝Docker 1.12版本。
RKE的工作方式是通過SSH連線到每個伺服器,並在此伺服器上建立到Docker socket的隧道,這意味著SSH使用者必須能夠訪問此伺服器上的Docker引擎。要啟用對SSH使用者的訪問,您可以將此使用者新增到Docker組:
usermod -aG docker
要啟動Kubernetes的安裝,以上是遠端伺服器需要的唯一準備工作。
RKE入門使用
如下示例假定使用者已配置三臺伺服器:
node-1: 192.168.1.5 node-2: 192.168.1.6 node-3: 192.168.1.7
叢集配置檔案
預設情況下,RKE將查詢名為cluster.yml的檔案,該檔案中包含有關將在伺服器上執行的遠端伺服器和服務的資訊。
最小檔案應該是這樣的:
叢集配置檔案包含一個節點列表。每個節點至少應包含以下值:
- 地址 – 伺服器的SSH IP / FQDN
- 使用者 – 連線到伺服器的SSH使用者
- 角色 – 主機角色列表:worker,controlplane或etcd
另一節是“服務”,其中包含有關將在遠端伺服器上部署的Kubernetes元件的資訊。
有三種類型的角色可以使用主機:
- etcd – 這些主機可以用來儲存叢集的資料。
- controlplane – 這些主機可以用來存放執行K8s所需的Kubernetes API伺服器和其他元件。
- worker – 這些是您的應用程式可以部署的主機。
執行RKE
要執行RKE,首先要確保cluster.yml檔案在同一個目錄下,然後執行如下命令:
➜ ./rke up
若想指向另一個配置檔案,執行如下命令:
➜ ./rke up --config /tmp/config.yml
輸出情況將如下所示:
連線到叢集
RKE會在配置檔案所在的目錄下部署一個本地檔案,該檔案中包含kube配置資訊以連線到新生成的群集。預設情況下,kube配置檔案被稱為.kube_config_cluster.yml。將這個檔案複製到你的本地~/.kube/config,就可以在本地使用kubectl了。
需要注意的是,部署的本地kube配置名稱是和叢集配置檔案相關的。例如,如果您使用名為mycluster.yml的配置檔案,則本地kube配置將被命名為.kube_config_mycluster.yml。
A Peek Under the Hood
RKE預設使用x509身份驗證方法來設定Kubernetes元件和使用者之間的身份驗證。RKE會首先為每個元件和使用者元件生成證書。
生成證書後,RKE會將生成的證書部署到/etc/kubernetes/ssl伺服器,並儲存本地kube配置檔案,其中包含主使用者證書,在想要刪除或升級叢集時可以與RKE一起使用。
然後,RKE會將每個服務元件部署為可以相互通訊的容器。RKE還會將叢集狀態儲存在Kubernetes中作為配置對映以備後用。
RKE是一個冪等工具,可以執行多次,且每次均產生相同的輸出。如下的網路外掛它均可以支援部署:
- Calico
- Flannel (default)
- Canal
要使用不同的網路外掛,您可以在配置檔案中指定:
network: plugin: calico
外掛
RKE支援在叢集載入程式中使用可插拔的外掛。使用者可以在cluster.yml檔案中指定外掛的YAML。
RKE在叢集啟動後會部署外掛的YAML。RKE首先會將這個YAML檔案作為配置對映上傳到Kubernetes叢集中,然後執行一個Kubernetes作業來掛載這個配置對映並部署這些外掛。
請注意,RKE暫不支援刪除外掛。外掛部署完成後,就不能使用RKE來改變它們了。
要開始使用外掛,請使用叢集配置檔案中的addons:選項,例如:
請注意,我們使用|-</code,因為外掛是一個多行字串選項,您可以在其中指定多個YAML檔案並用“—”將它們分開。
高可用性
RKE工具是滿足高可用的。您可以在叢集配置檔案中指定多個控制面板主機,RKE將在其上部署主控元件。預設情況下,kubelets被配置為連線到nginx-proxy服務的地址——127.0.0.1:6443,該代理會向所有主節點發送請求。
要啟動HA叢集,只需使用controlplane角色指定多個主機,然後正常啟動叢集即可。
新增或刪除節點
RKE支援為角色為worker和controlplane的主機新增或刪除節點。要新增其他節點,只需要更新具有其他節點的叢集配置檔案,並使用相同的檔案執行叢集配置即可。
要刪除節點,只需從叢集配置檔案中的節點列表中刪除它們,然後重新執行rke up命令。
叢集刪除命令
RKE支援rke remove命令。該命令執行以下操作:
- 連線到每個主機並刪除部署在其上的Kubernetes服務。
- 從服務所在的目錄中清除每個主機:
- /etc/kubernetes/ssl
- /var/lib/etcd
- /etc/cni
- /opt/cni
請注意,這個命令是不可逆的,它將徹底摧毀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