如何使用 kubespray 安裝 kubernetes cluster

mingderwang
bimap-elk
Published in
4 min readFeb 8, 2020

網路上 k8s 安裝, 絕大部分是英文版, 少數有一些簡體版. 所以本文用繁體版, 為大家服務. 當然只想使用 kubernetes 環境, 現在幾乎所有的雲端都已經提供 k8s 讓客戶使用. 所以直接用 Google GKE, Amazon AWS EKS, Azure AKS , IBM cloud, Red Hat 的 OpenShift, DigitalOcean 等都可以達到相同目的, 也比較適合當 production. 但你只想練習 kubectl 的操作, 也可以玩免費的 play with k8s https://labs.play-with-k8s.com/

但台灣用戶, 還是喜歡自架主機, 誰叫我們是 PC 生產王國(硬體便宜), 但軟體可不是完全不花人力, 不必成本. 這裡介紹大家如何在現有公司的硬體環境開始架設 kubernetes cluster 來部署軟體.

本文從最簡單的安裝 k8s 教起, 市面上或網路上, 安裝 kubernetes cluster 的方法和工具實在太多, minikube, openshift, Ubuntu 的 microk8s , 我還是喜歡 kubespray, 還算成熟穩定, 有興趣的人, 可以請先看 kubespray README.md

  • 架構

我使用 ESXi 硬體環境, 直接用 vagrant 開啟 6 台 k8s node 所需要的 VM. (當然也可以把多台實體主機或來自不同 RACK 上的 VM 串在一起.)

6 台 k8s nodes 的規格如下: (不要比這個規格小, 更大沒關係. 但至少用4 個 nodes, 1 x kube-master, 3 x kube-worker, (其中一台也當 etcd node))

註: kubespray 也支援 CentOS 7 的 nodes. 只是 Ubuntu 比較不會有雷

2-cores, 8GB ram, 64GB storage, 2 networks, ubuntu 18.04.

1 台 ansible 部署機, 規格相同如上, 規格也可小一點, 建議不用任何一個 node 當部署機, 當然用你筆電也行

  • 環境準備

確定每一台 node, 都能由 ansible 部署機, 無需密碼的 ssh 進一個 sudo 的帳號. 這裏用 username: vagrant, password: vagrant

  • 下載 kubespray 軟體
git clone https://github.com/kubernetes-sigs/kubespray.gitcd kubespray
sudo pip install -r requirements.txt

也可以直接使用我的 inventory/mycluster/host.yaml

https://gist.github.com/mingderwang/c9dc20df98e6f5daf945f33ebed6291

cd kubespray
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v
  • ansible 成功後

在 kubenetes master node 裡, 準備 kubectl

在你常用的 sudo 帳號下, 執行

mkdir -p $HOME/.kubesudo cp /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

測試是否安裝成功

kubectl get nodes

並檢查所有系統 pod 與 services 都正常 running

kubectl get pod,svc --all-namespaces | grep kube-system

PS. 其實, 一定不會沒有雷, 每個人的環境都不盡相同. 有問題可以參加 FB (kubernetes playgroud) 在線上討論.

--

--