kubernetes集群搭建

kubernetes集群搭建

最近由于实验室项目需要搭建kuberbetes集群,参考了很多文章,踩了很多坑,花了很长时间才搭建好,这里分享一下,免得更多的人踩坑。
1.安装步骤:
(1)准备工作(每个节点都要做)
第一步:设定各阶段时间精确同步
用date命令查看三个节点的时间,如果不同步直接启动chronyd服务,并设定开机启动
systemctl start chronyd.service
systemctl enable chronyd.serrvice

第二步:配置节点域名,使用hosts文件设置节点域名解析
Mastar节点:
hostnamectl set-hostname master
Node节点:
hostnamectl set-hostname node01
hosts文件如下:
kubernetes集群搭建
第三步:关闭各节点的iptables或firewalld服务,并禁止开机启动
systemctl stop firewalld.service
systemctl stop iptables.service
systemctl disable firewalld.service
systemctl disable iptables.service

第四步:禁用各节点的SELinux
用命令getenforce查看,如果结果不是Disabled输入命令:setenforce 0

第五步:各节点禁用swap
用命令free -m查看swap项是否为0, 如果非零则修改配置文件 vi /etc/fstab将带有swap类型的设备注释掉。
如果不禁用的话后面初始化节点时可以强行忽略。

(2)安装k8s(每个节点都要做)
在/etc/yum.repos.d/目录下运行vi kubernetes.repo
kubernetes集群搭建
接下来初始化集群需要下载相关镜像,由于墙的原因国外k8s镜像库无法下载,所以需要在国内镜像库拉取镜像后再更改标签。执行kubeadm config images list可以获取Kubeadm初始化需要的镜像。
kubernetes集群搭建
(3)启动k8s
对于master节点:
kubernetes集群搭建
除了使用使用官网https://github.com/coreos/flannel提供的配置文件进行Flannel的安装,如果wget不下来的话,可以从github查找flannel.yml文件。(我们在contos服务器上wget不下来,但是在windows系统却可以得到,然后复制过去。)

对于node节点
初始化node01节点
这里只需要把前面join的代码复制到node01节点上运行就可以使node节点加入到mster的集群。
join后可在master上查看所有节点状态,如果节点状态都为ready说明已成功搭建好k8s集群。

由于在服务器上面搭建,所以本文的有些图片是从网上获取。
搭建主要的坑有:
1.hosts文件要编辑正确
2.初始化集群需要下载相关镜像,我们是采用从阿里云镜像库拉取的办法,可以参考https://www.jianshu.com/p/aac137b8a022
3.重新init或者join时会有报错,需要运行kubeadm reset这条命令还原当前节点上 kubeadm init 或者 kubeadm join 所做的所有更改
4.我们在服务器init时,主机会自动分配到接了外网路由器的网口,需要断开外网,只打开与node节点连接的网口。而且网口之间存在冲突,至今还没有解决,可能是IP地址设置问题。
5.最大的坑是我们有一台服务器join的时候一直没能加入集群,查找了很多文章和方法一直没能解决。后面我们将master与node节点位置对换之后,发现这台服务器init不了。可以使用journalctl -xeu kubelet查看到该node端上运行的pod的日志情况。发现我们是大页内存的配置存在问题。