在日常运维实验或工作当中,避免不了反复搭建 Kubernetes 集群。比如做实验时把环境搞坏了、资源不够时清掉旧集群之后又要再搭一遍,又或者面向私有化交付场景,只要到了需要部署 K8s 集群的时候,都可以通过 Sealos 命令行工具实现“一键”搞定,省去大量手工步骤。
强烈推荐观看 B 站视频版本:https://www.bilibili.com/video/BV1CU5s62EYZ/
Sealos 介绍
Sealos 本身是一个以 Kubernetes 为基础的 AI 原生云操作系统,统一了从云 IDE 到生产部署的整个应用生命周期,很适合搭建现代 AI 应用、托管数据库(MySQL、PostgreSQL、Redis、MongoDB)以及复杂的微服务架构。不过,本文重点不放在这个系统上,而是聚焦它的命令行工具 sealos。
Sealos 安装
安装可以参考官方文档:
https://sealos.run/docs/k8s/quick-start/deploy-kubernetes#%E5%85%88%E5%86%B3%E6%9D%A1%E4%BB%B6
通过以下脚本获取最新版本并下载二进制包:
# 获取Sealos版本号
VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4`
# 配置GitHub代理
export PROXY_PREFIX=https://ghfast.top
# 下载Sealos二进制命令行包
wget ${PROXY_PREFIX}/https://github.com/labring/sealos/releases/download/${VERSION}/sealos_${VERSION#v}_linux_amd64.tar.gz \
&& tar zxvf sealos_${VERSION#v}_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
准备环境:
# 1)修改主机名
# master节点
hostnamectl set-hostname k8s-master01-192-168-1-53
# node1节点
hostnamectl set-hostname k8s-node01-192-168-1-54
# 2)配置时间同步
#删除centos默认repo包,配置阿里云Centos-7.repo包
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#方式1:安装配置chrony时间同步
IP=`ip addr | grep 'state UP' -A2 | grep inet | egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" | head -n 1 | cut -d / -f1`
yum install -y chrony
sed -i '3,6s/^/#/g' /etc/chrony.conf
sed -i "7s|^|server $IP iburst|g" /etc/chrony.conf
echo "allow all" >> /etc/chrony.conf
echo "local stratum 10" >> /etc/chrony.conf
systemctl restart chronyd
systemctl enable chronyd
timedatectl set-ntp true
sleep 5
systemctl restart chronyd
chronyc sources
#方式2:时间同步 注意:系统重启后恢复成原时间
yum install ntpdate -y
ntpdate ntp1.aliyun.com
#方式2 ubuntu系统:时间同步 注意:系统重启后恢复成原时间
apt update
apt install ntpdate -y
ntpdate ntp1.aliyun.com
Sealos 一键部署 K8s 集群
参考单机与集群安装方式,使用如下命令即可一键部署:
sealos run \
registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \
registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 \
--masters 192.168.1.53 \
--nodes 192.168.1.54 \
-p [your-ssh-passwd]
注意:labring/helm 应当放在 labring/cilium 之前,因为 Cilium 依赖 Helm 来安装。
部署过程说明:
- 执行命令后,Sealos 会自动下载 K8s 组件镜像、容器运行时(containerd)、网络插件
- 部署时间大约 5-10 分钟(取决于网络状况),无需人工介入
- 若部署失败,运行
sealos reset 清理环境后重新执行上述命令即可
如果你希望使用其他集群镜像安装 K8s,可以查阅官方页面,获取类似下面的镜像:
registry.cn-shanghai.aliyuncs.com/labring/kubernetes
registry.cn-shanghai.aliyuncs.com/labring/calico
验证 K8s 集群
1)查看集群节点状态
# 所有节点状态为Ready即部署成功
kubectl get nodes
2)查看集群组件状态
# 查看所有命名空间的Pod运行状态
kubectl get pods -A
# 查看集群信息
kubectl cluster-info

3)查看集群证书签发时间
kubeadm certs check-expiration

4)重置集群
当需要彻底清理 K8s 集群时,一条 sealos reset 命令即可完成卸载,亲测相当省心。
# 完全清理K8s集群环境
sealos reset
集群管理过程中,像这样对基础设施的操作往往涉及 Terraform 等定义式工具的使用习惯,而 Sealos 刚好在应用层提供了一种更轻量的实现方式。如果你还需要进一步完善可观测性,后续也可以考虑引入 Grafana 一类的方案来搭配 Prometheus 监控面板。
戳戳戳!
