
sealos系列——k8s集群部署
以下来自官方文档Sealos 是一个基于 Kubernetes 内核的云操作系统发行版。它采用云原生方式,摒弃传统的云计算架构,转向以 Kubernetes 为云内核的新架构。这使得企业可以像使用个人计算机一样毫不费力地使用云。用户只需单击一个按钮即可在 Kubernetes 上安装任何高可用性分布式应用程序,类似于使用个人计算机。它实际上不需要专业交付或运营成本。同时,利用独特的集群成像功能,用
最近重新给自己搭一套环境使用,所以在选怎么部k8s集群的时候接触到了sealos,干脆学习记录一下
什么是sealos?
以下来自官方文档
Sealos 是一个基于 Kubernetes 内核的云操作系统发行版。它采用云原生方式,摒弃传统的云计算架构,转向以 Kubernetes 为云内核的新架构。这使得企业可以像使用个人计算机一样毫不费力地使用云。
用户只需单击一个按钮即可在 Kubernetes 上安装任何高可用性分布式应用程序,类似于使用个人计算机。它实际上不需要专业交付或运营成本。同时,利用独特的集群成像功能,用户可以将任何分布式应用打包到 OCI 映像中,自由组合各种分布式应用,并轻松定制所需的云。强大而灵活的应用商店功能,可以满足各种用户的多样化需求。
Sealos的功能
- 应用程序管理:在应用商店中轻松管理和快速发布可公开访问的分布式应用程序。
- 数据库管理:秒级创建高可用数据库,支持MySQL、PostgreSQL、MongoDB和Redis。
- 云通用性:在公有云和私有云中同样有效,支持传统应用程序向云的无缝过渡。
Sealos的优点
- 高效且经济:只需为您使用的容器付费;自动扩展可防止资源浪费并大幅降低成本。
- 高通用性和易用性:专注于您的核心业务活动,而不必担心系统复杂性;涉及的学习成本可以忽略不计。
- 敏捷性和安全性:独特的多租户共享模型确保了有效的资源分割和协作,所有这些都在安全的框架下进行。
下面开始一步步的小白式部署吧!
k8s集群部署
前期准备
环境
ip | 节点 |
---|---|
192.168.0.109 | k8s-master-01 |
192.168.0.111 | k8s-master-02 |
192.168.0.110 | k8s-node-01 |
版本
sealos: v5.0.0-beta4
k8s:1.28.0
helm:v3.9.4
calico:v3.25.0
sealos部署k8s高可用集群不需要nginx或者haproxy了,而是直接采用ipvs的方式去负载apiserver,所以本地直接采用两台master节点来演示,正常情况基于kubeadm部署的k8s集群至少需要三个master节点才可以,但资源有限只为了演示就将就一下。
1、禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
2、禁用selinux
# 临时禁用
setenforce 0
# 永久禁用,编辑配置文件修改该行
vim /etc/selinux/config
SELINUX=disabled
3、开启ipvs内核模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules \
&& bash /etc/sysconfig/modules/ipvs.modules \
&& lsmod | grep -e ip_vs -e nf_conntrack_ipv4
yum install -y ipvsadm
4、时间同步
时间同步这里就选chrony了,yum或者rpm包安装都行
yum install -y chrony
# cat /etc/chrony.conf,修改下时间服务器地址就好了
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst
# 重启并查看同步状态
systemctl restart chronyd
chronyc sources
好了到此前期准备工作就完成了,接下来就开始正式安装我们的sealos跟k8s集群了,网络插件这里选的是calico
正式安装(离线方式)
sealos安装
github地址:https://github.com/labring/sealos/releases
不同版本sealos对k8s版本是有要求的,具体可以参考官网,肯定有人注意准备工作也没有安装docker,因为这里我们就用containerd就行,命令跟docker差不多,把docker ps换成crictl ps就行
1、安装sealos
# 上传sealos 并解压,只需要上传一台即可
tar -zvxf sealos_5.0.0-beta4_linux_amd64.tar.gz
mv sealos /usr/bin/
这样就安装完了,命令用法有些类似docker
Sealos 吸取了 Docker 思想的精髓,把 Docker 的思想衍生到了集群的维度,实现分布式软件的构建、打包、交付、运行等等。
和操作系统 ISO 镜像或 Docker 镜像类似,集群镜像就是用一定的技术手段把整个集群的所有文件以一定格式打成的一个资源包。
以 Kubernetes 集群镜像为例,里面包含了除操作系统以外的所有文件:
- Containerd 依赖的二进制与 systemd 配置、Containerd 配置,以及一个私有的容器镜像仓库。
- Kubernetes 核心组件二进制、容器镜像、kubelet system 配置等。
- 其它脚本、配置与二进制工具等应用运行需要的所有依赖。
集群镜像的打包格式兼容了 OCI 标准,可以直接推送到 Docker 镜像仓库中。安装集群时只需要使用 sealos pull 命令将该镜像从镜像仓库里拉取下来,然后再执行 sealos run 命令,整个 Kubernetes 集群就安装好了
2、k8s集群安装
# 拉取
sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.0 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.25.0
# 查看拉取的镜像
sealos images
# 导出
sealos save -o kubernetes.tar registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.0
sealos save -o helm.tar registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4
sealos save -o calico.tar registry.cn-shanghai.aliyuncs.com/labring/calico:v3.25.0
# 离线安装
sealos run kubernetes.tar helm.tar calico.tar --cluster='k8s-cluster-test' \
--masters=192.168.0.109,192.168.0.111 \
--nodes=192.168.0.110 \
-p admin123
# 如果配置了ssh免密则不需要加-p参数,在线安装不需要pull跟save的过程,直接run对应镜像就可
镜像地址:https://github.com/labring-actions/cluster-image-docs/blob/main/docs/aliyun-shanghai/apps.md
sealos集群管理常用命令
# 添加工作节点
sealos add --nodes 192.168.0.111,192.168.0.112
# 添加主节点
sealos add --masters 192.168.0.106,192.168.0.107
# 删除工作节点
sealos delete --nodes 192.168.0.111,192.168.0.112
# 删除主节点
sealos delete --masters 192.168.0.106,192.168.0.107
# 清理集群
sealos reset
验证
工作节点忘了改hostname了,不用在意
再看下运行的镜像
最后我们看一下sealos是怎么对apiserver进行负载的
可以看到,node节点上通过静态pod的方式启动了一个lvscare进程,来管理ipvs规则,它会监测apiserver的健康状况,一旦apiserver不可用,便会清除对应主节点的ipvs转发规则,直到恢复正常
来查看下对应的yaml文件:
再看下证书有效期:
可以看到,有100年的有效期,而使用kubeadm安装默认只有一年
节点管理
删除节点
因为我们之前指定过–cluster=‘test’,所以按照官方文档直接写删除命令肯定遇到一头雾水的操作
我们先看一下集群配置文件
/root/.sealos/
目录下
如果不加--cluster
参数,那默认就是default
# 删除111的master节点跟110的node节点
sealos delete --cluster='test' --masters='192.168.0.111' --nodes='192.168.0.110'
添加节点
sealos add --cluster test --masters 192.168.0.111 --nodes 192.168.0.110
查看下
至此,sealos的安装及节点删除添加均大功告成
更多推荐
所有评论(0)