高可用Kubernetes集群-16. ansible快速部署


說明

本文檔指導采用二進制包的方式快速部署高可用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版本

邏輯拓撲

  1. 集群服務器數量建議:3;文檔以172.30.200.51~53示例,172.30.200.50為vip;
  2. 為減少服務器數量,采用all-in-one的方式,各角色服務融合部署;
  3. 前端采用haproxy+keepalived做高可用;
  4. k/v數據庫采用etcd集群;
  5. kubernetes-master角色組件:kube-apiserver,kube-controller-manager,kube-scheduler;
  6. 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM