第6节 sealos搭建k8s


❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.topopen in new window


[TOC]

开始

什么是sealos?

💡 标准自己以k8s为内核的操作系统。

sealos是一个Go语言开发的简单干净且KUbernetes集群部署工具。

sealos是能够很好的支持,在生产环境中部署高可用的kubernetes集群。

Sealos 特性与优势

  1. 支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。
  2. 100年证书。
  3. 工具使用非常简单。
  4. 支持使用自定义配置文件,可灵活完成集群环境定制。
  5. 使用内核进行本地负载,稳定性极高,故障排查也极其简单。
  6. 最主要的优势是不需要翻墙出去

选择rancher还是sealos

同样的还有 kubekeyopen in new window ,sealos是二次优化

KubeKeyopen in new window(由 Go 语言开发)是一种全新的安装工具,替代了以前使用的基于 ansible 的安装程序。KubeKey 为您提供灵活的安装选择,您可以仅安装 Kubernetes,也可以同时安装 Kubernetes 和 KubeSphere。

为什么不用 KeepAlived 和 HAProxy 实现集群高可用

无论是通过 KeepAlived 还是 HAProxy 进行高可用集群调度都会存在以下一些劣势。

  1. 软件源不一致可能导致容器中安装的软件版本也不一致,进而会引起相应检查脚本不生效等故障。
  2. 可能因为系统依赖库问题,在某些特定环境下就直接无法完成安装。
  3. 只依靠检测 HAProxy 进程是否存活是无法保证集群高可用的,正确的检测方式应该是判断ApiServer 是否 healthz 状态。
  4. Keepalived 可能存在 Cpu 占满的情况。

使用 sealos 快速构建 kubernetes

sealos现在只支持linux,需要linux服务器来测试。

一些工具可以非常方便地帮助您启动虚拟机,例如multipassopen in new window

构建项目

mkdir /sealos && cd /sealos && git clone https://github.com/labring/sealos && cd sealos && ls && make build  # 大概可能因为网络原因需要等一段时间~

您可以将 bin 文件 scp 到您的 linux 主机。

如果你使用 multipaas,你可以将 bin 目录挂载到 vm

multipass mount /your-bin-dir <name>[:<path>]

然后在本地测试。

⚠️ 注意:

所有二进制文件都sealos可以在任何地方构建,因为它们有CGO_ENABLED=0. 但是,在运行一些依赖于 CGO 的sealos子命令时,需要支持覆盖驱动程序。images因此,在构建时会打开 CGO sealos,从而无法sealos在 Linux 以外的平台上构建二进制文件。

  • 本项目中的 MakefileGoReleaser 都有这个设置。

😂 让我很喜欢的一点是:sealos能一次性把环境搭建好,想当年,我真是废了九牛二虎之力才搭建~失败的。

image-20221019194939030

核心服务快速启动

💡 重新把昨天集群全部删除,新开三台服务器,纯新~

image-20221020103019907

环境准备

⚠️ 注意:环境一定很重要,不然都跑不起来~

hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-master02
hostnamectl set-hostname k8s-master03

虚拟机需要配置静态IP

查看内核版本

# 下载并安装 sealos, sealos 是个 golang 的二进制工具,直接下载拷贝到 bin 目录即可, release 页面也可下载 
yum install wget && yum install tar &&\
wget  https://github.com/labring/sealos/releases/download/v4.1.3/sealos_4.1.3_linux_amd64.tar.gz  && \
tar -zxvf sealos_4.1.3_linux_amd64.tar.gz sealos &&  chmod +x sealos && mv sealos /usr/bin 
# 创建一个集群
sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
     --masters 192.168.0.2,192.168.0.3\
     --nodes 192.168.0.4 -p [your-ssh-passwd]

-p:passwd密码

开启ssh免密不需要些密码了,在这里就实现了。

image-20221020111912006

image-20221020105230320

验证集群:

kubectl get nodes

image-20221020113615770

查看版本:

[root@k8s-master01 ~]# sealos version
{"gitVersion":"4.1.3","gitCommit":"b2ba9705","buildDate":"2022-09-06T06:04:14Z","goVersion":"go1.19","compiler":"gc","platform":"linux/amd64"}

使用 docker 作为 runtime:

sealos run labring/kubernetes-docker:v1.20.5-4.1.3 labring/calico:v3.24.1 \
     --masters 192.168.64.2,192.168.64.22,192.168.64.20 \
     --nodes 192.168.64.21,192.168.64.19 -p [your-ssh-passwd]

END 链接