kubespray离线部署k8s集群

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

 

 

 

 

  

posted @ 2021-07-12 09:44  梦君子  阅读(1678)  评论(0编辑  收藏  举报