Kubespray

Kubespray 是 Kubernetes incubator 中的項目,目標是提供 Production Ready Kubernetes 部署方案,該項目基礎是通過 Ansible Playbook 來定義系統與 Kubernetes 集群部署的任務,具有以下幾個特點:

  • 可以部署在 AWS, GCE, Azure, OpenStack 以及裸機上.

  • 部署 High Available Kubernetes 集群.

  • 可組合性 (Composable),可自行選擇 Network Plugin (flannel, calico, canal, weave) 來部署.

  • 支持多種 Linux distributions(CoreOS, Debian Jessie, Ubuntu 16.04, CentOS/RHEL7).

本篇將說明如何通過 Kubespray 部署 Kubernetes 至裸機節點,安裝版本如下所示:

  • Kubernetes v1.7.3

  • Etcd v3.2.4

  • Flannel v0.8.0

  • Docker v17.04.0-ce

節點資訊

本次安裝測試環境的作業系統採用 Ubuntu 16.04 Server,其他細節內容如下:

IP Address
Role
CPU
Memory

192.168.121.179

master1 + deploy

2

4G

192.168.121.106

node1

2

4G

192.168.121.197

node2

2

4G

192.168.121.123

node3

2

4G

這邊 master 爲主要控制節點,node 爲工作節點。

預先準備資訊

  • 所有節點的網路之間可以互相通信。

  • 部署節點 (這邊爲 master1) 對其他節點不需要 SSH 密碼即可登入。

  • 所有節點都擁有 Sudoer 權限,並且不需要輸入密碼。

  • 所有節點需要安裝 Python

  • 所有節點需要設定 /etc/hosts 解析到所有主機。

  • 修改所有節點的 /etc/resolv.conf

  • 部署節點 (這邊爲 master1) 安裝 Ansible >= 2.3.0。

Ubuntu 16.04 安裝 Ansible:

安裝 Kubespray 與準備部署資訊

首先通過 pypi 安裝 kubespray-cli,雖然官方說已經改成 Go 語言版本的工具,但是根本沒在更新,所以目前暫時用 pypi 版本:

安裝完成後,新增配置檔 ~/.kubespray.yml,並加入以下內容:

接着用 kubespray cli 來產生 inventory 文件:

在 inventory.cfg,添加部分內容:

也可以自己新建 inventory 來描述部署節點。

完成後通過以下指令進行部署 Kubernetes 集群:

其中 -n 爲部署的網絡插件類型,目前支持 calico、flannel、weave 與 canal。

驗證集群

當 Ansible 運行完成後,若沒發生錯誤就可以開始進行操作 Kubernetes,如取得版本資訊:

取得當前集群節點狀態:

查看當前集群 Pod 狀態:

Last updated