从0到1,使用Sealos一站式部署k8s集群(亲测可行)

987 阅读5分钟

屏幕截图 2024-07-16 132644.png

说明:本篇文章详细介绍了使用sealos安装k8s集群,从主机安装到集群安装,可根据需要自行跳转

1. Linux主机安装以及配置

我们最终实现的k8s集群有一个master节点,两个工作节点

主机.png

1.1 Centos7主机安装

1.1.1 镜像下载

首先去阿里云镜像中心下载Centos7镜像阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)

屏幕截图 2024-07-15 125450.png

1.1.2 使用VMware安装虚拟机

选择自定义,下一步 屏幕截图 2024-07-15 130028.png 下一步

屏幕截图 2024-07-15 130119.png 选择稍后安装,下一步

屏幕截图 2024-07-15 130127.png 如图所示,下一步

屏幕截图 2024-07-15 130135.png 选择虚拟机存放位置,下一步

屏幕截图 2024-07-15 130207.png 注意:至少选择两个处理器内核,不然一会部署集群时会报错,继续下一步

屏幕截图 2024-07-15 130238.png 至少两个G内存,根据主机配置自行调整,下一步

屏幕截图 2024-07-15 130246.png 之后按照图所示一直点击下一步就可以 屏幕截图 2024-07-15 130300.png

屏幕截图 2024-07-15 130309.png

屏幕截图 2024-07-15 130316.png

屏幕截图 2024-07-15 130325.png

屏幕截图 2024-07-15 130334.png

屏幕截图 2024-07-15 130343.png 最终配置结果,完成 屏幕截图 2024-07-15 130351.png 之后点击虚拟机设置,放置iso镜像

屏幕截图 2024-07-15 130429.png 启动系统,在这里回车就可以

屏幕截图 2024-07-15 130511.png 选择语言

屏幕截图 2024-07-15 130605.png 选择自动分区,开始安装

屏幕截图 2024-07-15 130624.png 设置用户,等待安装完成重启系统

屏幕截图 2024-07-15 130729.png

1.2 节点静态IP配置

选择root权限登录

屏幕截图 2024-07-15 133450.png 输入以下命令进入网络配置文件

$ cd /etc/sysconfig/network-scripts
$ ls
$ vi ifcfg-ens33

屏幕截图 2024-07-15 133745.png 进入后修改BOOTPROTO=static,ONBOOT=yes ,设置IPADDR为设置你的主机IP,NETMASK设置子网号,GATEWAY设置网关(用于主机与虚拟机进行通信),设置DNS服务器 屏幕截图 2024-07-15 133924.png 在这里查看你的API网关,点击虚拟网络编辑器

屏幕截图 2024-07-15 140048.png 屏幕截图 2024-07-09 153151.png

屏幕截图 2024-07-09 153213.png 这个就是你的网关IP 屏幕截图 2024-07-09 153226.png 网络配置文件编辑完之后,wq保存退出,输入以下命令重启网络

$ service network restart

查看你的 IP地址

$ ip addr

这是修改之前的样子

屏幕截图 2024-07-15 133951.png 修改之后

屏幕截图 2024-07-15 134016.png
注意以上所有操作另外两台虚拟机同理,只需修改IPADDR
工作节点1
屏幕截图 2024-07-15 134535.png
工作节点2
屏幕截图 2024-07-15 134928.png
记得配置完之后重启网络,使用ip addr查看是否为自己的期望配置

1.3 为方便操作,使用Xshell工具协助完成配置

连接各节点之后,同时操作所有节点

屏幕截图 2024-07-15 141346.png

屏幕截图 2024-07-15 141553.png

屏幕截图 2024-07-15 141449.png

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

屏幕截图 2024-07-15 153803.png

1.4.4 清理yum缓存

$ yum clean all

屏幕截图 2024-07-15 153825.png

1.4.5 生成新的缓存

$ yum makecache

屏幕截图 2024-07-15 154337.png

1.4.6 更新yum源检查是否生效

$ yum update 

屏幕截图 2024-07-15 155918.png

屏幕截图 2024-07-15 161144.png

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 修改配置文件

屏幕截图 2024-07-15 163933.png

2.4.4 启动服务

$ systemctl enable --now chronyd

2.4.5 查看服务状态

$ systemctl status chronyd chronyc activity -v

屏幕截图 2024-07-15 164007.png

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

这里填写你自己主机的信息 屏幕截图 2024-07-15 164648.png

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/

屏幕截图 2024-07-15 170551.png

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

屏幕截图 2024-07-15 171230.png

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 为内核的云操作系统
安装前注意:

  1. 不要下载docker,否则会报一系列问题
  2. 在master节点运行sealos gen命令
  3. 只需要在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

屏幕截图 2024-07-15 232016.png

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

屏幕截图 2024-07-16 115910.png 查看该配置文件,在这里可以找到安装的镜像

$ vi Cluterfile

屏幕截图 2024-07-16 120620.png 要实现负载均衡器,将Cluterfile配置文件中strictARP参数修改为true

屏幕截图 2024-07-16 121029.png 保存退出

3.3.2 配置好之后,输入以下命令执行安装

$ sealos apply -f Clusterfile

开始安装

屏幕截图 2024-07-16 121824.png ------附------
apply时可能会报yaml解析错误,此时vi编辑 Clusterfile删除最上面一行就可以了,之后再正常执行sealos apply -f Clusterfile,如没有该问题可忽略

3.3.3 完成安装

显示如下图案就说明安装成功

屏幕截图 2024-07-16 122409.png

3.3.4 检查集群健康状态

查看各个节点是否在集群内正常运行

$ kubectl get nodes
$ kubectl get po -A

可以看到节点都处于ready状态,正常运行

屏幕截图 2024-07-16 123129.png 集群内的kube-proxy网络代理,silium网络插件等组件可以看到都正常运行

屏幕截图 2024-07-16 123500.png 到此给所有虚拟机拍一个快照

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…