1. 程式人生 > >好用的K8S1.8.4 叢集二進位制安裝指南_Kubernetes中文社群

好用的K8S1.8.4 叢集二進位制安裝指南_Kubernetes中文社群

利用Ansible部署kubernetes叢集

本系列文件致力於提供快速部署高可用`k8s`叢集的工具,並且也努力成為`k8s`實踐、使用的參考書;基於二進位制方式部署和利用`ansible-playbook`實現自動化:既提供一鍵安裝指令碼,也可以分步執行安裝各個元件,同時講解每一步主要引數配置和注意事項。

叢集特性:`TLS` 雙向認證、`RBAC` 授權、多`Master`高可用、支援`Network Policy`

二進位制方式部署優勢:有助於理解系統各元件的互動原理和熟悉元件啟動引數,有助於快速排查解決實際問題

文件基於`Ubuntu 16.04`,其他系統如`CentOS 7`需要讀者自行替換部分命令;由於使用經驗有限和簡化指令碼考慮,已經儘量避免`ansible-playbook`的高階特性和複雜邏輯。

你可能需要掌握基本`kubernetes` `docker` `linux shell` 知識,關於`ansible`建議閱讀 [ansible超快入門] 基本夠用。

歡迎提`Issues`和`PRs`參與維護專案。

元件版本

  1. kubernetes v1.8.4
  2. etcd v3.2.10
  3. docker 17.09.0-ce
  4. calico/node v2.6.2

快速指南

單機快速體驗k8s叢集的測試、開發環境–[AllinOne部署];在國內的網路環境下要比官方的minikube方便、簡單很多。

1.準備一臺虛機(推薦記憶體3G,硬碟20G以上),最小化安裝Ubuntu16.04 server,配置基礎網路、更新源、SSH登陸等。
2.安裝python2/git/python-pip/ansible

# 文件中指令碼預設均以root使用者執行
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
# 刪除不要的預設安裝
apt-get purge ufw lxd lxd-client lxcfs lxc-common
# 安裝依賴工具
apt-get install python2.7 git python-pip
# Ubuntu16.04可能需要配置以下軟連線
ln -s /usr/bin/python2.7 /usr/bin/python
# 安裝ansible (國內如果安裝太慢可以直接用pip阿里雲加速)
#pip install pip –upgrade
#pip install ansible
pip install pip –upgrade -i http://mirrors.aliyun.com/pypi/simple/ –trusted-host mirrors.aliyun.com
pip install –no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ –trusted-host mirrors.aliyun.com
# 配置ansible ssh金鑰登陸
ssh-keygen -t rsa -b 2048 回車 回車 回車
ssh-copy-id $IP #$IP為本虛機地址,按照提示輸入yes 和root密碼

3.安裝kubernetes叢集

git clone https://github.com/gjmzj/kubeasz.git
mv kubeasz /etc/ansible
# 下載已打包好的binaries,並且解壓縮到/etc/ansible/bin目錄
# 國內請從我分享的百度雲連結下載 https://pan.baidu.com/s/1eSetFSA
# 如果你有合適網路環境也可以按照/down/download.sh自行從官網下載各種tar包到 ./down目錄,並執行download.sh
tar zxvf k8s.184.tar.gz
mv bin/* /etc/ansible/bin
# 配置ansible的hosts檔案
cd /etc/ansible
cp example/hosts.allinone.example hosts
然後根據實際情況修改此hosts檔案,所有節點都是本虛機IP
# 採用一步安裝或者分步安裝
ansible-playbook 90.setup.yml # 一步安裝
#ansible-playbook 01.prepare.yml
#ansible-playbook 02.etcd.yml
#ansible-playbook 03.kubectl.yml
#ansible-playbook 04.docker.yml
#ansible-playbook 05.calico.yml
#ansible-playbook 06.kube-master.yml
#ansible-playbook 07.kube-node.yml

如果執行成功,k8s叢集就安裝好了。

4.驗證安裝

# 如果提示kubectl: command not found,退出重新ssh登陸一下,環境變數生效即可
kubectl version
kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等元件 Healthy
kubectl clusterinfo # 可以看到kubernetes master(apiserver)元件 running
kubectl get node # 可以看到單 node Ready狀態
kubectl get pod –all-namespaces # 可以檢視所有叢集pod狀態
kubectl get svc –all-namespaces # 可以檢視所有叢集服務狀態
calicoctl node status # 可以在master或者node節點上檢視calico網路狀態

5.安裝主要元件

# 安裝kubedns
kubectl create -f manifests/kubedns
# 安裝heapster
kubectl create -f manifests/heapster
# 安裝dashboard
kubectl create -f manifests/dashboard

詳細步驟

  1.  [叢集規劃和基礎引數設定](docs/00-叢集規劃和基礎引數設定.md)
  2.  [建立CA證書和環境配置](docs/01-建立CA證書和環境配置.md)
  3.  [安裝etcd叢集](docs/02-安裝etcd叢集.md)
  4.  [配置kubectl命令列工具](docs/03-配置kubectl命令列工具.md)
  5.  [安裝docker服務](docs/04-安裝docker服務.md)
  6.  [安裝calico網路元件](docs/05-安裝calico網路元件.md)
  7.  [安裝kube-master節點](docs/06-安裝kube-master節點.md)
  8.  [安裝kube-node節點](docs/07-安裝kube-node節點.md)