利用Ansible部署kubernetes叢集

本系列文檔緻力于提供快速部署高可用`k8s`叢集的工具,并且也努力成為`k8s`實踐、使用的參考書;基于二進制方式部署和利用`ansible-playbook`實作自動化:既提供一鍵安裝腳本,也可以分步執行安裝各個元件,同時講解每一步主要參數配置和注意事項。項目位址:
https://github.com/gjmzj/kubeasz叢集特性:`TLS` 雙向認證、`RBAC` 授權、多`Master`高可用、支援`Network Policy`
二進制方式部署優勢:有助于了解系統各元件的互動原理和熟悉元件啟動參數,有助于快速排查解決實際問題
文檔基于`Ubuntu 16.04`,其他系統如`CentOS 7`需要讀者自行替換部分指令;由于使用經驗有限和簡化腳本考慮,已經盡量避免`ansible-playbook`的進階特性和複雜邏輯。
你可能需要掌握基本`kubernetes` `docker` `linux shell` 知識,關于`ansible`建議閱讀
[ansible超快入門]基本夠用。
歡迎提`Issues`和`PRs`參與維護項目。
元件版本
- kubernetes v1.8.4
- etcd v3.2.10
- docker 17.09.0-ce
- calico/node v2.6.2
附:叢集用到的所有二進制檔案已打包好供下載下傳 `
https://pan.baidu.com/s/1eSetFSA`
快速指南
單機快速體驗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
本文轉自kubernetes中文社群-
好用的K8S1.8.4 叢集二進制安裝指南