最近在看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