說明
本文檔指導采用二進制包的方式快速部署高可用kubernetes集群。
腳本托管:k8s-ansible(持續更新)
參考:高可用kubernetes集群
組件版本
組件 | 版本 | 備注 |
---|---|---|
centos | 7.5 | linux內核版本不低於3.10,本文檔基於centos發行版本 |
haproxy | 1.8.13 | 版本可選,本文檔默認采用1.8.13版本 |
keepalived | 2.0.6 | 版本可選,本文檔默認采用2.0.6版本 |
docker | 18.06.1.ce | 版本可選,本文檔默認采用18.06.1.ce版本 |
cfssl | R1.2 | 版本可選,本文檔默認采用R.12版本 |
etcd | v3.3.9 | 版本可選,本文檔默認采用v3.3.9版本 |
flannel | v0.10.0 | 版本可選,本文檔默認采用v0.10.0版本 |
kubernetes | v1.11.2 | 版本可選,本文檔默認采用v1.11.2版本 |
kube-dns | 1.14.10 | 本文檔默認采用1.14.10版本 |
dashboard | 1.8.3 | 本文檔默認采用1.8.3版本 |
heapster | v1.5.4 | 本文檔默認采用v1.5.4版本 |
influxdb | v1.5.2 | 本文檔默認采用v1.5.2版本 |
grafana | v5.0.4 | 本文檔默認采用v5.0.4版本 |
邏輯拓撲
- 集群服務器數量建議:3;文檔以172.30.200.51~53示例,172.30.200.50為vip;
- 為減少服務器數量,采用all-in-one的方式,各角色服務融合部署;
- 前端采用haproxy+keepalived做高可用;
- k/v數據庫采用etcd集群;
- kubernetes-master角色組件:kube-apiserver,kube-controller-manager,kube-scheduler;
- kubernetes-minion角色組件:kubelet,kube-proxy。
使用說明
環境准備
- 准備1台ansible-server(主控端):
- 與ansible-client可通信;
- 可訪問互聯網(如果不可訪問,可提前下載相關package上傳到指定目錄,可參考"~/k8s-ansible/download.sh");
- 理論上無硬件要求。
- 根據規划,准備若干台宿主機作為ansible-client(被控端),本文檔宿主機數量為3:
-
物理機或虛擬機;
-
最小化安裝,設置IP地址,啟動ssh服務即可;
-
宿主機可訪問互聯網,否則需要通過其他方式初始化宿主機(如采用虛擬機時,可通過鏡像的方式統一初始化,初始化步驟參考"~/k8s-ansible/playbooks/roles/initenv/tasks/main.yaml");
-
配置如下:
IP CPU(cores) Memory(GB) Remark 172.30.200.51 4 4 根據實際部署情況酌情調整資源用量 172.30.200.52 4 4 172.30.200.53 4 4
-
操作指南
以下操作若無特別說明,均在選定的ansible-server以root賬戶執行。
1. 安裝ansible-server
yum install ansible -y
2. 設置ansible-server免密登陸ansible-client
ansible采用無代理的方式操作被控端,默認使用ssh協議對被控端進行管理,為避免下發指令時輸入目標主機密碼,采用簽名證書的方式可ssh免密登陸目標主機。
-
ssh-keygen:生成秘鑰(含公鑰/私鑰)時,使用默認設置,回車即可;
-
ssh-copy-id:分發公鑰到所有目標主機時需要目標主機密碼,注意for循環中的ansible-client格式。
ssh-keygen -t rsa for i in "172.30.200.51" "172.30.200.52" "172.30.200.53"; do ssh-copy-id root@$i; done
3. 拉取安裝腳本
重要:在運行賬號的"~/"目錄下拉取安裝腳本。
# 安裝或升級git
yum install git -y
# 拉取安裝腳本,注意腳本的保存目錄
cd ~
git clone https://github.com/Netonline2016/k8s-ansible.git
4. 下載安裝包
為避免安裝過程中,聯網下載安裝包超時或等待時間過長,提前下載相應package,並放置於對應路徑下,此過程已整理為shell腳本,可直接運行。
如對package有版本要求,可在腳本中修改,請見"~/k8s-ansible/download.sh"腳本注釋。
sh ~/k8s-ansible/download.sh
5. 根據規划定義主機變量
涉及文件,修改請見相應文件注釋:
- ~/k8s-ansible/inventory/hosts
- ~/k8s-ansible/inventory/group_vars/all
6. 部署高可用kubernetes集群
采用ansible playbook方式運行自動化安裝。
ansible-playbook -i ~/k8s-ansible/inventory/hosts ~/k8s-ansible/playbooks/k8s-ansible.yaml