sealos3安装高可用k8s集群

sealos3简介

注意官网的最新版本是sealos4,和sealos3完全不同,本文档不适用sealos4.

项目地址: https://github.com/labring/sealos/tree/release-v3.3.9#readme
参考地址: https://fuckcloudnative.io/posts/sealos/

在这里插入图片描述


!安装前提条件(k8s低于1.20版本不兼容Rhel8系列)

!!!!高能警告:Rhel8,Centos8和Rocky8预装了podmannftables,而nftableskube-proxy不兼容,Rhel8系列安装k8s不能正常工作.建议使用Centos7(升级内核到5.4以上)Ubuntu.

关于Rhel8nftables内核模块和kube-proxy不兼容的issue提了快2年了,我看估计是没戏了。
https://github.com/kubernetes/kubernetes/pull/97070
下图为原文。
在这里插入图片描述

高版本离线包自带docker/containerd,如没安装docker/containerd会自动安装.
k8s1.22版本及以上强制安装containerd,要求卸载docker.

  • Linux系统配置好主机名–主机名不可重复
  • 规划和配置好IP地址
  • 集群内主机间配置ssh免密登录
  • 下载sealos要使用的k8s离线安装包
  • 下载最新版本sealos.
  • 务必同步服务器时间
  • master节点CPU必须2C以上
  • 请使用sealos 3.2.0以上版本
  • 网卡名称如果是不常见的,建议修改成规范的网卡名称, 如(eth.|en.|em.*)
  • cni组件选择cilium时要求内核版本不低于5.4
  • podSubnet: 100.64.0.0/10
  • serviceSubnet: 10.96.0.0/12

10.0.0.0/8172.16.0.0/24192.168.0.0/16之后又诞生了第四个私有IPv4地址,不同之处在于100.64.0.0/10是在服务商网络内使用。

  • 100.64.0.0/10Shared address space,是预留给ISP运营商做NAT用的。
  • ISP运营商设备给用户分配100.64.0.0/10内的IP,然后再在运营商设备上进行NAT,转换成公网IP。

在这里插入图片描述


下载sealos专用k8s安装包

sealos提供的专用kube离线包原商店: http://store.lameleg.com/

参考: https://github.com/huyongywl/sealos/blob/master/README_zh.md

下载sealos专用离线k8s安装包

# 下载1.14.1版本的k8s二进制专用安装包
wget -c https://github.com/sealstore/cloud-kernel/releases/download/offline/kube1.14.1.tar.gz

下载1.22版本

# 下载sealos专用离线k8s安装包
# IPFS在线存储地址
https://bafybeidmnrgsghvuvh4ev4q4riy42xz2nb5gnnidbilsqr63xtmofwojga.ipfs.w3s.link/ipfs/bafybeidmnrgsghvuvh4ev4q4riy42xz2nb5gnnidbilsqr63xtmofwojga/kube1.22.7.tar.gz

IPFS存储CID
bafybeidmnrgsghvuvh4ev4q4riy42xz2nb5gnnidbilsqr63xtmofwojga

https://ipfs.io/ipfs/bafybeidmnrgsghvuvh4ev4q4riy42xz2nb5gnnidbilsqr63xtmofwojga


使用sealos3快速二进制包安装k8s高可用集群

不要指定网卡参数 --network,会导致cni启动不了
生产环境只建议安装次新版!!!
cidr建议使用B类网段.

# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
wget -c https://github.com/labring/sealos/releases/download/v3.3.8/sealos

# 赋予执行权限
chmod +x sealos && mv sealos /usr/local/bin/

部署一个k8s集群,版本kube1.14.1

kube1.14.1这个版本默认使用docker的cri

# 安装一个三master的kubernetes集群
## 如已设ssh免密登录可以不需要--passwd参数
## --podcidr 配置pod网段
## --svccidr 配置clusterip网段
## --network  机器网卡名,CNI网卡发现用
sealos init \
	--master 192.168.50.131 \
	--node 192.168.50.128 \
	--node 192.168.50.129 \
	--pkg-url /root/kube1.14.1.tar.gz \
	--version v1.14.1 \
	--podcidr 10.244.0.0/16 \
	--svccidr 10.93.0.0/12

在这里插入图片描述

# 安装单master的k8s集群
sealos init \
	--master 192.168.0.2 \
	--node 192.168.0.12 \
	--pkg-url /root/kube1.22.0.tar.gz \
	--version v1.22.0

安装日志

安装日志所在位置~/.sealos/sealos.log

# 查看安装日志
less ~/.sealos/sealos.log

# 实时查看k8s集群安装日志
tail -f ~/.sealos/sealos.log

在这里插入图片描述


自定义网络

pod的ip地址段,也称为cidr

# podcidr 参数指定自定义pod网段 如 
--podcidr 10.244.0.0/16 \

# svccidr 参数指定clusterip网段 如 
--svccidr 10.93.0.0/12 \

# 不安装cni插件
## without-cni sealos自带calico网络,如果你想自己装CNI不用默认可加此参数, 如 
sealos init --without-cni …

# 自定义cni插件
-- network flannel

添加证书

需要添加证书, 在init的时候指定--cert-sans 域名即可
证书有效期是99年

# 安装k8s集群时添加证书
sealos init --cert-sans 域名 \
	--master 192.168.0.2 \
	--node 192.168.0.12 \
	--pkg-url /root/kube1.22.0.tar.gz \
	--version v1.22.0
	--podcidr 10.244.0.0/16 \
	--svccidr 10.93.0.0/12 \

sealos参数注释

参数名含义示例
passwd服务器密码123456
masterk8s master节点IP地址192.168.0.2
nodek8s node节点IP地址192.168.0.3
pkg-url离线资源包地址,支持下载到本地,或者一个远程地址/root/kube1.16.0.tar.gz
version资源包对应的版本v1.16.0

向集群中加入机器


增加master

# 增加master机器
sealos join --master 192.168.0.6 --master 192.168.0.7
sealos join --master 192.168.0.6-192.168.0.9  # 或者多个连续IP

增加node

# 增加node机器
sealos join --node 192.168.0.6 --node 192.168.0.7
sealos join --node 192.168.0.6-192.168.0.9  # 或者多个连续IP

从集群中删除机器


删除指定master节点

# 删除指定master节点
sealos clean --master 192.168.0.6 --master 192.168.0.7
sealos clean --master 192.168.0.6-192.168.0.9  # 或者多个连续IP

删除指定node节点

# 删除指定node节点
sealos clean --node 192.168.0.6 --node 192.168.0.7
sealos clean --node 192.168.0.6-192.168.0.9  # 或者多个连续IP

清理集群

# 注意clean不加任何参数会清理整个集群,等同于sealos clean --all
sealos clean --all

备份集群

# 查看备份帮助
sealos etcd save -h

本地备份etcd数据

本地备份, 默认保存在/opt/sealos/ectd-backup这个目录, 默认名称为sanpshot

# 本地备份etcd数据
sealos etcd save

本地备份并复制到各master节点。增加--docker参数, 默认在生成的文件下添加当前的uinx时间戳,然后复制到各master节点.

# 在所有的master节点上备份数据
sealos etcd save --docker

备份上传到阿里云oss

备份上传至oss,首次执行带命令行或者编辑~/.sealos/config.yaml

# 备份上传到阿里云oss
## 需要自行指定oss的ak参数
sealos etcd save --docker \
    --aliId youraliyunkeyid \
    --aliKey youraliyunkeysecrets \
    --ep oss-cn-hangzhou.aliyuncs.com  \
    --bucket etcdbackup  \
    --objectPath /sealos/ 

升级k8s版本

参考: https://www.sealyun.com/instructions/5

!升级前注意事项:

# 确保集群是健康状态
kubectl get nodes -owid

# 确保kube-system下的pod运行正常
kubectl get pod -n kube-system -owide

执行升级

版本必须要大于等于1.18.0,才可升级
执行升级前提前下载好新版本的离线安装包

# 升级到1.19.2版本
sealos upgrade --version v1.19.2 --pkg-url /root/kube1.19.2.tar.gz -f | tee -a upgrade.1183-1192.log 

containerd常用

https://blog.youkuaiyun.com/omaidb/article/details/128673207

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值