最近在看kubespray的ansible-playbook自動化部署流程,對ansible的使用有了新的理解,為了加深對kubespray的理解,計划改造一套完全離線安裝的kubespray版本,有什么問題建議,歡迎大家隨時指出。
kubespray GitHub地址為: https://github.com/kubernetes-sigs/kubespray , 這里使用分支為release-2.15,對應的主要組件和系統版本如下:
-
- kubernetes v1.19.10
- docker v19.03
- calico v3.16.9
- centos 7.9.2009
kubespray離線包下載地址:https://www.mediafire.com/file/nyifoimng9i6zp5/kubespray_offline.tar.gz/file
centos7.9 ISO下載地址:https://www.mediafire.com/file/2854z2xt6uvwydh/CentOS-7-x86_64-Minimal-2009.iso/file
操作系統的安裝這里不再贅述,離線包下載完成后解壓到/opt 目錄下:
tar -zxvf /opt/kubespray_offline.tar.gz -C /opt/
這里部署采用All in One方式,即單節點模式,主機IP地址為:192.168.137.192,CPU為4核,內存為4G,開始部署ansible服務器:
yum install /opt/kubespray_offline/ansible_install/rpm/* pip3 install /opt/kubespray_offline/ansible_install/pip/*
配置主機免密碼登陸:
ssh-copy-id 192.168.137.129
配置ansible 主機組:
cd /opt/kubespray_offline/kubespray
declare -a IPS=(192.168.137.129)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3.6 contrib/inventory_builder/inventory.py ${IPS[@]}
開始部署k8s:
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -vv
部署時間大概持續半個小時,中間不需要任何介入,部署完成后,查看集群狀態
kubectl get nodes

查看kubernetes-dashboard 映射的端口號,默認為38443:
kubectl get svc -n kube-system

查看賬號 k8dash-sa 登錄token:
kubectl describe secret k8dash-sa -n kube-system | awk '$1=="token:"{print $2}'

瀏覽器訪問kubernetes-dashboard地址:https://192.168.137.129:38443/,並輸入賬號k8dash-sa的token進行登錄:


該集群默認還安裝了k8dash管理界面,登錄方式跟kubernetes-dashboard一樣,地址為:http://192.168.137.129:34654 , token 還是使用賬號k8dash-sa的token即可:

如果部署前要自定義k8s集群信息,編輯配置文件進行修改即可:
vi /opt/kubespray_offline/kubespray/inventory/mycluster/group_vars/all/all.yml
k8s默認集群的證書有效期為1年,離線包里面已經將源碼修改為100年,並重新編譯,查看證書有效期:
kubeadm alpha certs check-expiration

kubespray也支持多節點部署,假如有三台主機:10.68.60.71 10.68.60.72 10.68.60.73,則配置IPS變量的時候輸入即可:
declare -a IPS=(10.68.60.71 10.68.60.72 10.68.60.73)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
此時查看hosts.yaml即可看到,可以根據需求自己搭配各個主機的角色:
cat inventory/mycluster/hosts.yaml

