2021/03/12 軟體版本更新至 v21.03
前言
Kubernetes(K8s)是一個開源系統,用於自動化容器應用程序的部署,擴展和管理。
然而安裝 K8s 系統相當繁瑣,對於新手來說會遇到各式各樣的問題,更別說要建構一整座叢集了。好消息是,目前越來越多簡化 K8s 安裝步驟的工具,本章就要來介紹由 NVIDIA 維運的建置工具 DeepOps。
介紹
DeepOps 項目主要用於快速佈署 Kubernetes 及 Slurm 在 GPU 服務器叢集和共享單個強大節點(例如 NVIDIA DGX Systems)的最佳實踐。DeepOps 具高彈性,可以進行調整或以模塊化方式使用,以匹配特定使用情境的集群需求。
特性
- 利用 Ansible 提供點到點來設置整個群集管理堆棧
- 提供腳本可用於快速部署 Kubeflow 和連接 NFS 存儲
- 可安裝 Slurm,Kubernetes 或兩者的混合 (Slurm 安裝將於日後另行介紹)
- 提供 K8s 儀錶板及資源監控介面
版本
- 21.03
Component | v21.03 |
---|---|
Kubespray | b39a196 |
Kubernetes | 1.18.9 |
Etcd | 3.4.3 |
Docker | 19.03.14 |
Calico | 3.15.2 |
Helm | 3.4.1 |
Dashboard | 2.0.3 |
DCGM Exporter | 2.0.13-2.1.2 |
Monitoring | 10.0.2 |
建置範例
架構
Hostname | IP Address | IP Interface | SSH Port | OS | GPU | Role |
---|---|---|---|---|---|---|
k8sm01 | 192.168.149.128 | ens33 | 22 | Ubuntu 20.04.2 | NO | Master Node |
k8sm02 | 192.168.149.129 | ens33 | 22 | Ubuntu 20.04.2 | NO | Master Node |
k8sm03 | 192.168.149.130 | ens33 | 22 | Ubuntu 20.04.2 | NO | Master Node |
k8sc01 | 192.168.149.134 | ens33 | 22 | Ubuntu 20.04.2 | YES | Compute Node |
k8sc02 | 192.168.149.135 | ens33 | 22 | Ubuntu 20.04.2 | YES | Compute Node |
事前準備
請在 Master Node 擇一節點操作
下載 DeepOps 軟體包
1 | git clone --recurse-submodules https://github.com/NVIDIA/deepops.git -b release-21.03 |
安裝套件及產生 config
資料夾
1 | sudo -H ./scripts/setup.sh |
編輯建置設定檔 (ini)
1 | vim config/inventory |
將資料輸入之後存檔離開
1 | [all] |
建置 Master 節點
佈署管理節點 (Master Nodes),第一次使用需輸入 ssh(-k) 及 sudo(-K) 密碼
1 | ansible-playbook -l kube-master -k -K playbooks/k8s-cluster.yml |
運行完成成功畫面,要確認 failed
為 0
確認管理節點皆成功建置完成
1 | kubectl get nodes |
建置 Compute 節點
佈署計算節點 (Compute Nodes),第一次使用需輸入 ssh(-k) 及 sudo(-K) 密碼
1 | ansible-playbook -l k8s-cluster -k -K playbooks/k8s-cluster.yml |
運行完成成功畫面,要確認 failed
為 0
設定 Compute 節點的 kubernetes.io/role
1 | kubectl label --overwrite nodes k8sc01 kubernetes.io/role=compute |
確認計算節點皆成功建置完成
1 | kubectl get nodes |
K8s 維護
安裝 Kubernetes Dashboard
創建管理用戶並安裝儀錶板和 token,如日後忘記 token ,同指令可再執行一次即可獲得。
1 | sudo bash ./scripts/k8s/deploy_dashboard_user.sh |
- Dashboard: https://< Master Node IP >:31443
安裝 Monitoring
佈署 DCGM、Prometheus 和 Grafana 來監控各節點的資源使用情況
1 | sudo bash ./scripts/k8s/deploy_monitoring.sh |
- Grafana: http://< Master Node IP >:30200
- Prometheus: http://< Master Node IP >:30500
- Alertmanager: http://< Master Node IP >:30400
增加節點
回到建置設定檔 config/inventory
,將新的節點加入後執行以下指令,即可增加節點
1 | ansible-playbook -l k8s-cluster -k -K submodules/kubespray/scale.yml |
移除節點
將要移除的節點名稱填入,如下範例 (移除 k8sc01 及 k8sc02 兩個節點)
1 | ansible-playbook submodules/kubespray/remove-node.yml --extra-vars "node=k8sc01,k8sc02" |
升級叢集
TODO