1.背景

最近在学习和研究k8s,主要是如何搭建k8s环境。我在这搭建过程中踩了不少坑,有参考网上的博客资料,终于测试和总结出了一套可以自动化搭建k8s集群的方法。

本文主要介绍如何使用kubeadm快速部署一个K8s集群,跟着操作来,你就能马上搭建成功,少走很多弯路。

2.部署过程

2.1 环境准备

准备3台虚拟机如下,版本centos 7.9

IP

备注

机器名称

192.168.126.175lmasterlmaster
192.168.126.176lnode1lnode1
192.168.126.177

lnode2

lnode2

2.2 配置文件

准备系统镜像、rpm安装包、脚本、配置文件如下:

文件名称

备注

必须性

CentOS-7-x86_64-DVD-2207-02.isocentos7.9镜像,不一定要用【可选】
cri-dockerd-0.3.14-3.el7.x86_64.rpmcri-dockerd安装包【必选】
befrore-install.sh关闭selinux的脚本

【必选】                

install-k8s.sh安装k8s的脚本【必选】 
install-k8s-common.sh安装的辅助脚本【必选】 
uninstall-k8s.sh卸载k8s脚本,不一定要用【可选】 
kubeadm.yamlkubeadm配置【必选】 
kube-flannel.ymlcni网络插件【必选】 

该资料清单,已经放到网盘,大家可以自取。

下载链接:https://pan.quark.cn/s/4b6c895f690a
提取码:3g8v

2.3 修改配置

在2.2提供的bash脚本是在本人的测试环境下制作和执行的,里面的一些配置,比如ip、机器名都是个人特有信息,大家拿到脚本后,是需要结合自己的环境去修改配置,才能去使用的。

主要是修改ip 和主机名称,其他信息不做修改。具体如下:

修改install-k8s-common.sh:

修改kubeadm.yaml:

修改install-k8s.sh (这个如何修改在后面安装k8s主结点,还会介绍):

2.4 安装-k8s主结点

MobaXterm远程连接k8s主结点:192.168.126.175,如下图:

将2.2中列出的配置文件和bash脚本上传到 /home  ,如下图所示:

在/home下,输入下列命令:

chmod +x *.sh

输入下列指令,关闭selinux

./befrore-install.sh

输入下列指令,开始安装k8s主结点:

./install-k8s.sh

在install-k8s.sh执行过程中会有2次需要用户确认的过程:

第1次:以上↑↑↑↑↑↑↑主机配置hosts是否正确?默认为 no. Enter [yes/no]:yes

第2次:[reset] Are you sure you want to proceed? [y/N]::y

安装成功后,如下图所示:

注意:在“安装k8s_主结点_启动集群:初始化”时,界面会输出 如下信息,将里面的“kubeadm join 192.168.126.175:6443 --token abcdef.0123456789abcdef \
        --discovery-token-ca-cert-hash sha256:ead6f4bf1803873b23dc0689f119b6eb2958bf12d26f37454d03e5d67b147358”

保存下来,后面初始化node结点会用到

2.5 修改install-k8s.sh

在本地修改install-k8s.sh文件,将 2.4拿到的kubeadmin join信息,按照下图修改:

这样修改后, 就能拿去初始化 node结点了。

2.6 安装-k8s从结点

MobaXterm远程连接k8s从结点:192.168.126.176,如下图:

将刚刚修改的install-k8s.sh文件和其他文件上传到 /home  ,如下图所示:

 在/home下,输入下列命令:

chmod +x *.sh

输入下列指令,关闭selinux

./befrore-install.sh

输入下列指令,开始安装k8s从结点:

./install-k8s.sh

在install-k8s.sh执行过程中会有2次需要用户确认的过程:

第1次:以上↑↑↑↑↑↑↑主机配置hosts是否正确?默认为 no. Enter [yes/no]:yes

第2次:[reset] Are you sure you want to proceed? [y/N]::y

安装成功后,如下图所示

2.7 安装-k8s从结点

 MobaXterm远程连接k8s从结点:192.168.126.177,如下图:

将刚刚修改的install-k8s.sh文件和其他文件上传到 /home  ,如下图所示:

 在/home下,输入下列命令:

chmod +x *.sh

输入下列指令,关闭selinux

./befrore-install.sh

输入下列指令,开始安装k8s主结点:

./install-k8s.sh

在install-k8s.sh执行过程中会有2次需要用户确认的过程:

第1次:以上↑↑↑↑↑↑↑主机配置hosts是否正确?默认为 no. Enter [yes/no]:yes

第2次:[reset] Are you sure you want to proceed? [y/N]::y

安装成功后,如下图所示

3.验证

3.1 验证k8s集群安装

在k8s主结点192.168.126.175,执行下列命令,看搭建的集群是否成功?

kubectl get nodes

注意:这里可能要等1分钟左右,STATUS才会变成Ready.这个Ready就表示运行正常,搭建成功。

3.2 测试k8s集群

在k8s集群中创建一个pod,验证是否正常运行

在k8s主结点192.168.126.175,执行下列命令

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

经过上面的操作,我们看到成功创建了一个名称为“nginx-7854ff8877-k5hf7”的pod,它的端口是32594。

通常集群的访问地址格式为http://NodeIP:Port ,进行访问。

那么nginx的地址是:http://192.168.126.175:32594、 http://192.168.126.176:32594、http://192.168.126.177:32594;

为了验证效果,打开浏览器,输入上面的3个地址:

那么,nginx部署成功,集群支持nginx的映射访问。

4. 管理面板kuboard 

本次安装也安装了面板工具:kuboard;

Master主结点会默认安装kuboard多集群管理界面,方便管理k8s容器的一些基本的常用操作,包括服务部署、日志查看、负载导入导出等,虽然简单但是很实用。

4.1 登录kuboard 

访问Master管理界面http://192.168.126.175/

默认账号:admin

默认密码:Kuboard123

4.2 如何使用

 使用教程详见官网:Kuboard_Kubernetes教程_K8S安装_管理界面

5.结束

至此,我们已经成功通过kubeadm搭建了k8s集群。本文提供的脚本已经经过多次测试执行,是没有问题的。如有问题,建议自行根据异常提示去处理。另外,脚本中是指定了k8s、docker版本等,大家熟悉脚本后,可自行修改脚本配置,去安装执行。最后,再次感谢网络上的前辈们,我是看了相关资料,基于资料做了调整后,才能搭建成功。

6.参考文献

《Docker容器化K8s集群部署教程(一键部署sheel脚本)》

Docker容器化K8s集群部署教程(一键部署sheel脚本)-CSDN博客

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐