Kubernetes在夯什麼—建置一座K8s

Kubernetes在夯什麼—建置一座K8s

Part4-Kubernetes在夯什麼—建置一座K8s

截至目前,我們介紹了K8s的基本概念及使用上的好處,是時候給自己建置一座K8s了!其實最容易建置的K8s叢集,非Minikube莫屬了。Minikube是官方提供的「單節點叢集」套件,主要可以用作於K8s的學習和開發實驗用途。由於我個人是使用MacBook Pro,所以本文的截圖及指令說明將以OSX環境呈現。若讀者使用其他作業環境,可以參考官方完整的安裝流程

  • brew install kubectl
$    brew cask install minikube

完成上列兩行指令,我們就完成了!就是這麼簡單!安裝完成後,趕快用下列指令測試看看吧!

$    minikube start

$    kubectl cluster-info

$    kubectl get nodes -o wide

欲關閉或停止Minikube也非常簡單,只要使用一個指令:

$    minikube stop

**本文僅簡單描述K8s的安裝流程,不會進一步討論如何操作。但若讀者有興趣了解的話,可以參考我的Minikube Intro Workshop

雖然Minikube是個很簡單、輕量且快速部署的K8s環境,但完全不適用於商業測試或正式環境,畢竟企業服務通常至少會需要多個節點,以實現分散式微服務架構。欲部署一座非實驗性質的K8s叢集,一般建議採用官方提供的部署工具kubeadm。不過使用kubeadm的安裝流程,在實際操作上仍有一定的複雜程度,不是所有人都能輕易上手。另一方面,我們迎棧科技的kube-ansible將kubeadm套件打包並自動化處理,大大簡化了使用者的操作流程。

kube-ansible主要包括兩大功能。其一為Quick Start 虛擬叢集部署,在使用前需要事先安裝:

  • Ansible version: v2.4+
  • Vagrant: >= 1.7+
  • VirtualBox: >= 5.0+
  • OSX needs to install sshpass tool

使用者利用此功能,僅需輸入虛擬機的相關參數,剩下的全交由ansible playbook自動化執行。這些參數包括各角色節點數量、規格、CNI選項等等。也可以不輸入參數,直接使用預設的1 Master 2 Node叢集。

在利用kube-ansible部署K8s之前,根據使用情境可能需要額外修改一些YAML檔。例如:在路徑group_vars/all.yml的檔案中,標註“#Extra addons”的段落提供了使用者一些plugin的選項,包括dashboard、loggin(ELK)及monitoring(Heapster)。kube-ansible預設將這三個項目定義為false,若使用者要啟動的話,需在這裡將值改為true。

另外值得一提的是,若使用者利用kube-ansible部署1.9以上的K8s版本,且欲將上方提到的Heapster啟用,以實現K8s HPA功能,需在路徑roles/kubernetes/master/templates/yaml/manager.yml.j2的檔案中,新增一行:

– –horizontal-pod-autoscaler-use-rest-clients=false

在將所有YAML檔設定完成後,只要執行工具tools/setup,即可自動化部署虛擬叢集。特別補充一下:若在group_vars/all.yml啟用Heapster,需輸入-c參數,將每台節點設定為至少2 vCPU。


(加入-h參數查看指令說明)

建立完成後,便可利用以下指令登入kube-master1節點查看叢集狀態:

$    vagrant ssh master1

$    sudo su –
$    kubectl cluster-info

$    kubectl get nodes -o wide

kube-ansible的另一個主要功能,是部署K8s於私有雲叢集;部署設備可以是實體機或虛擬機叢集。若讀者有意自行部署一座正式用途的K8s叢集,可以參考此連結的部署方法說明。本文將不會進一步解說部署流程(其實README也很完整,跟著操作就行)。

回顧:
Part 1 – 容器服務的世代
Part2 – Kubernetes在夯什麼—K8S基礎介紹
Part3-Kubernetes在夯什麼—K8s與DevOps

撰文: 迎棧科技資深架構師 陳逸凡

訂閱電子報

Select list(s)*

 

Loading