说明:本篇文章详细介绍了使用sealos安装k8s集群,从主机安装到集群安装,可根据需要自行跳转
1. Linux主机安装以及配置
我们最终实现的k8s集群有一个master节点,两个工作节点
1.1 Centos7主机安装
1.1.1 镜像下载
首先去阿里云镜像中心下载Centos7镜像阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)
1.1.2 使用VMware安装虚拟机
选择自定义,下一步
下一步
选择稍后安装,下一步
如图所示,下一步
选择虚拟机存放位置,下一步
注意:至少选择两个处理器内核,不然一会部署集群时会报错,继续下一步
至少两个G内存,根据主机配置自行调整,下一步
之后按照图所示一直点击下一步就可以
最终配置结果,完成
之后点击虚拟机设置,放置iso镜像
启动系统,在这里回车就可以
选择语言
选择自动分区,开始安装
设置用户,等待安装完成重启系统
1.2 节点静态IP配置
选择root权限登录
输入以下命令进入网络配置文件
$ cd /etc/sysconfig/network-scripts
$ ls
$ vi ifcfg-ens33
进入后修改BOOTPROTO=static,ONBOOT=yes ,设置IPADDR为设置你的主机IP,NETMASK设置子网号,GATEWAY设置网关(用于主机与虚拟机进行通信),设置DNS服务器
在这里查看你的API网关,点击虚拟网络编辑器
这个就是你的网关IP
网络配置文件编辑完之后,wq保存退出,输入以下命令重启网络
$ service network restart
查看你的 IP地址
$ ip addr
这是修改之前的样子
修改之后
注意以上所有操作另外两台虚拟机同理,只需修改IPADDR
工作节点1
工作节点2
记得配置完之后重启网络,使用ip addr查看是否为自己的期望配置
1.3 为方便操作,使用Xshell工具协助完成配置
连接各节点之后,同时操作所有节点
1.4 配置yum国内源,这里我选择阿里源
其他国内源
阿里yum源: httpmirrors.aliyun.comrepo
163(网易)yum源: httpmirrors.163.com.help
中科大的Linux安装镜像源:httpcentos.ustc.edu.cn
搜狐的Linux安装镜像源:httpmirrors.sohu.com
北京首都在线科技:httpmirrors.yun-idc.com
1.4.1 我们先进入到yum源文件所在位置,查看源
$ cd /etc/yum.repos.d
ls
1.4.2 先对默认的yum源进行更名备份
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
1.4.3 下载国内的阿里云yum源配置文件到/etc/yum.repos.d/
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
1.4.4 清理yum缓存
$ yum clean all
1.4.5 生成新的缓存
$ yum makecache
1.4.6 更新yum源检查是否生效
$ yum update
1.4.7 安装wget,git,yum-utils工具
$ yum -y install yum-utils
$ yum -y install git
$ yum -y install wget
2. 安装k8s集群前的准备工作(重要)
2.1 配置主机解析(所有节点都要设置)
cat >> /etc/hosts <<EOF
192.168.72.130 kube-master01
192.168.72.131 kube-node01
192.168.72.132 kube-node02
EOF
2.2 禁用不必要的服务(所有节点都要设置)
2.2.1 禁用防火墙,网络管理,邮箱
$ systemctl disable --now firewalld Net```workManager postfix
2.2.2 禁用selinux
$ sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
$ grep ^SELINUX= /etc/selinux/config
2.2.3 禁用swap分区
$ swapoff -a && sysctl -w vm.swappiness=0
$ sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
$ grep swap /etc/fstab
2.3 Linux基础优化(所有节点都要设置)
2.3.1 修改sshd服务优化
$ sed -ri 's@^#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config
$ sed -ri 's#^GSSAPIAuthentication yes#GSSAPIAuthentication no#g' /etc/ssh/sshd_config
$ grep ^UseDNS /etc/ssh/sshd_config
$ grep ^GSSAPIAuthentication /etc/ssh/sshd_config
2.3.2 所有节点配置模块自动加载(重要)
$ modprobe br_netfilter
$ modprobe ip_conntrack
$ cat >>/etc/rc.sysinit<<EOF #!/bin/bash for file in /etc/sysconfig/modules/*.modules ; do [ -x $file ] && $file done EOF
$ echo "modprobe br_netfilter" >/etc/sysconfig/modules/br_netfilter.modules
$ echo "modprobe ip_conntrack" >/etc/sysconfig/modules/ip_conntrack.modules
$ chmod 755 /etc/sysconfig/modules/br_netfilter.modules $ chmod 755 /etc/sysconfig/modules/ip_conntrack.modules $ lsmod | grep br_netfilter
2.4 基于chronyd守护进程实现集群时间同步(所有节点都要设置)
2.4.1 手动同步时区和时间
$ \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.4.2 安装服务chrony
$ yum -y install ntpdate chrony
2.4.3 修改配置文件
2.4.4 启动服务
$ systemctl enable --now chronyd
2.4.5 查看服务状态
$ systemctl status chronyd chronyc activity -v
2.5 安装集群常用软件(所有节点都要设置)
$ yum -y install expect wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git ntpdate chrony bind-utils rsync unzip git
2.6 下载配置文件及脚本(所有节点都要设置)
$ git clone https://gitee.com/jasonyin2020/oldboyedu-linux-Cloud_Native
2.7 kube-master01配置免密钥登录集群并配置同步脚本
kube-master01节点免密钥登录集群节点,安装过程中生成配置文件和证书均在kube-master01上操作,集群管理也在kube-master01上操作
2.7.1 配置批量免密钥登录(master节点)
编写免密脚本
$ cat > password_free_login.sh <<'EOF'
#!/bin/bash
# author: fusheng
# 创建密钥对
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa -q
# 声明你服务器密码,建议所有节点的密码均一致,否则该脚本需要再次进行优化
export mypasswd=qwe521
# 定义主机列表
k8s_host_list=(kube-master01 kube-node01 kube-node02)
# 配置免密登录,利用expect工具免交互输入
for i in ${k8s_host_list[@]};do
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"$mypasswd\r\"; exp_continue}
}"
done
EOF
$ sh password_free_login.sh
这里填写你自己主机的信息
2.7.1 编写同步脚本(master节点)
$ cat > /usr/local/sbin/data_rsync.sh <<'EOF'
#!/bin/bash
# Author: fusheng
if [ $# -ne 1 ];then
echo "Usage: $0 /path/to/file(绝对路径)"
exit
fi
if [ ! -e $1 ];then
echo "[ $1 ] dir or file not find!"
exit
fi
fullpath=`dirname $1`
basename=`basename $1`
cd $fullpath
k8s_host_list=(kube-master01 kube-node01 kube-node02)
for host in ${k8s_host_list[@]};do
tput setaf 2
echo ===== rsyncing ${host}: $basename =====
tput setaf 7
rsync -az $basename `whoami`@${host}:$fullpath
if [ $? -eq 0 ];then
echo "命令执行成功!"
fi
done
EOF
$ chmod +x /usr/local/sbin/data_rsync.sh
2.7.1 同步数据到其他节点(master节点)
$ data_rsync.sh /root/oldboyedu-linux-Cloud_Native/
2.8 升级linux内核(所有节点)
2.8.1 CentOS7需要升级内核版本为5.17+
$ cd /root/oldboyedu-linux-Cloud_Native/kernel/5.17.9 && yum -y localinstall kernel-ml*
2.8.2 更改内核的启动顺序
$ grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
2.8.3 检查默认的内核版本
$ grubby --default-kernel
2.8.4 重启操作系统
$ reboot
2.7.5 检查当前正在使用的内核版本
$ uname -r
3. 使用Sealos开始安装k8s集群(master节点)
实验环境
centos7.6 2207,5.17.9-1.el7.elrepo.x86_64
sealos: v5.0.0
k8s: v1.29.6 (当前时间:2024年7月15日)
helm: v3.14.1
cilium: v1.15.5
cert-manager: v1.15.0
openebs: v3.10.0
Sealos官方文档:
什么是 Sealos? | Sealos: 专为云原生开发打造的以 K8s 为内核的云操作系统
安装前注意:
- 不要下载docker,否则会报一系列问题
- 在master节点运行sealos gen命令
- 只需要在master节点操作,node节点会通过master ssh自动操作的
3.1 安装jq工具
$ yum install -y epel-release
$ yum install -y jq
$ curl --silent "https://api.github.com/repos/labring/sealos/releases" | jq -r '.[].tag_name'
3.2 设置 VERSION 环境变量为 latest 版本号,或者将 VERSION 替换为您要安装的 Sealos 版本
$ VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4`
3.2 使用下面的命令自动下载二进制文件(这里的下载速度取决你的网络)
$ curl -sfL https://mirror.ghproxy.com/https://raw.githubusercontent.com/labring/sealos/main/scripts/install.sh | PROXY_PREFIX=https://mirror.ghproxy.com sh -s ${VERSION} labring/sealos
3.3 开始安装(记得改主机的参数以及想要安装的镜像版本)
3.3.1 利用vi编辑器创建一个脚本文件sealos-install-k8s.sh,填入以下内容
$ sealos gen registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.6 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.14.1 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.15.5 registry.cn-shanghai.aliyuncs.com/labring/cert-manager:v1.15.0 registry.cn-shanghai.aliyuncs.com/labring/openebs:v3.10.0 \
--masters 192.168.72.130 \
--nodes 192.168.72.131,192.168.72.132 -p qwe521 > Clusterfile
之后执行命令
$ sh sealos-install-k8s.sh
$ ls
我们会发现生成了一个Clusterfile
查看该配置文件,在这里可以找到安装的镜像
$ vi Cluterfile
要实现负载均衡器,将Cluterfile配置文件中strictARP参数修改为true
保存退出
3.3.2 配置好之后,输入以下命令执行安装
$ sealos apply -f Clusterfile
开始安装
------附------
apply时可能会报yaml解析错误,此时vi编辑 Clusterfile删除最上面一行就可以了,之后再正常执行sealos apply -f Clusterfile,如没有该问题可忽略
3.3.3 完成安装
显示如下图案就说明安装成功
3.3.4 检查集群健康状态
查看各个节点是否在集群内正常运行
$ kubectl get nodes
$ kubectl get po -A
可以看到节点都处于ready状态,正常运行
集群内的kube-proxy网络代理,silium网络插件等组件可以看到都正常运行
到此给所有虚拟机拍一个快照
4. 后续集群拓展
4.1 添加节点
后续添加节点也非常容易
添加master节点
$ sealos add --masters 节点地址
添加node工作节点
$ sealos add --nodes 节点地址
4.2 删除节点
删除master节点
$ sealos delete --masters 节点地址
删除node工作节点
$ sealos delete --nodes 节点地址
4.3 重置集群
sealos reset
到此我们的集群安装就全部完成了,本次安装使用的是cilium网络插件,容器,容器运行时都是自动化的非常方便,相比kubeadm安装对新手非常不友好,安装短则几小时长则两个星期,很多问题需要自己动手去解决
之后安装各种分布式应用也非常方便,第一种方式时直接编辑Clusterfile文件添加镜像,也可以通过执行以下命令安装
$ sealos run registry.cn-shanghai.aliyuncs.com/labring/xxx:v.x.x
4.4 添加至 sea colud
如果还想将集群添加至sea cloud,请参考文章实战-Sealos一键部署k8s集群-2024.3.7(测试成功)_sealos 一键安装后密码-CSDN博客
4.5 后续
更多关于集群的使用,请参考sealos官方文档什么是 Sealos? | Sealos: 专为云原生开发打造的以 K8s 为内核的云操作系统,包括集群镜像的构建,集群的生命周期管理等等
以下是集群镜像版本说明
sealos.run/docs/self-h…
5.0 结语
好了,sealos的安装和基本使用到此就介绍完成了,不过这只是sealos使用的冰山一角,后续欢迎讨论关于更多的使用方法,本次集群安装所有测试都由本人亲自完成,如有问题可以留言
参考文章 : www.cnblogs.com/yinzhengjie… blog.csdn.net/weixin_3924…