SealOS部署k8s集群(单节点)
一、 先决条件
- 每个集群节点应该有不同的主机名。
- 需要在 K8s 集群的第一个 master 节点上运行 sealos run 命令。
- 建议使用干净的操作系统来创建集群。不要自己装 Docker!
- 支持大多数 Linux发行版,但内核版本建议5以上。例如:Ubuntu、CentOS、Rocky linux。
- 支持 Docker Hub 中的所有 Kubernetes 版本。
- 支持使用 Containerd 作为容器运行时。
- Sealos默认提供了一个私有镜像仓库。
- 所有操作必须使用 root 用户执行。
二、准备(在所有主机上执行)
本次使用的操作系统是debian 12(本机IP地址192.168.80.12),因其内核为6.1.0-28-amd64
1,设置主机名k8s-master
hostnamectl set-hostname k8s-master
2,编辑/etc/hosts文件,增加IP与主机名对应关系
192.168.80.12 k8s-master
3,安装用到的依赖包
apt -y install curl jq ebtables socat iptables
三、在k8s-master主机上执行部署
1)在线安装方式
1,下载sealos命令行工具(当前使用v5.0.1版本)
在https://github.com/labring/sealos/releases 下载对应系统的版本,debian 12对应的是:
https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.deb
2,在k8s-master上安装sealos命令行工具
dpkg -i sealos_5.0.1_linux_amd64.deb
3,在k8s-master上安装k8s(单节点)
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4
这里使用了calico网络插件。需要注意:helm应当在calico之前。
在干净的服务上直接执行上面的命令,不需要额外多余操作即可安装一个高可用K8S集群(单节点)
2)离线安装方式
离线包下载地址:通过网盘分享的文件:K8S
链接: https://pan.baidu.com/s/12FMstUEmHWPqSml1VVVgSA?pwd=c2bf 提取码: c2bf
1,在k8s-master上安装sealos命令行工具(sealos命令行工具包来源于其它外网环境)
dpkg -i sealos_5.0.1_linux_amd64.deb
2,导入tar包镜像(tar包镜像来源于其它外网环境的sealos的save导出)
sealos load -i kubernetes_v1.27.7.tar
sealos load -i helm_v3.9.4.tar
sealos load -i calico_v3.27.4.tar
3,在k8s-master上安装k8s(单节点)
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4
这里使用了calico网络插件。需要注意:helm应当在calico之前。
在干净的服务上直接执行上面的命令,不需要额外多余操作即可安装一个高可用K8S集群(单节点)
四、k8s镜像部署
当前安装的k8s集群使用containerd作为容器运行;使用calico作为网络插件CNI;sealos默认提供了一个私有镜像仓库,sealos的私有仓库默认运行在集群的第一个节点上,第一个节点是指创建集群的时候输入的第一个节点的地址,使用下面的命令查看守护进程的状态。
systemctl status registry.service
1,使用sealos login命令来登陆,默认用户名和密码为 admin:passw0rd
sealos login -u admin -p passw0rd 192.168.80.12:5000
注:192.168.80.12:5000 (k8s-master的IP地址)为私有镜像仓库中地址
2,sealos导入docker镜像
sealos load -i GBase8sV8.8_3513x25_csdk_x64_20250225.tar
3,sealos重新打tag,注意tag的写法,使用私有镜像时,需要该写法。
sealos tag localhost/gbase8sv8.8:3513x25_csdk_x64 \
192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
4,推送到本地的私有镜像
sealos push 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
5,GBase8s单机部署yaml文件(gbase8s-standard-deployment.yaml)
# gbase8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: gbase8s-deployment
spec:
replicas: 1
selector:
matchLabels:
app: gbase8s
template:
metadata:
labels:
app: gbase8s
annotations:
# 使用calico方式,指定使用IP地址,数据库集群中必须指定IP
# 所有IP网段,使用kubectl get pod -A -o wide | grep calico-apiserver获取
# 或者k8s-master上使用ip a获取的tunl0网卡对应的网络
cni.projectcalico.org/ipAddrs: "[\"100.116.59.101\"]"
spec:
containers:
- name: gbase8s
# 镜像地址
image: 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
ports:
- containerPort: 9088
---
apiVersion: v1
kind: Service
metadata:
name: gbase8s-service
spec:
selector:
app: gbase8s
ports:
- name: sqlexec
port: 9088
targetPort: 9088
nodePort: 30088
type: NodePort
6,部署GBase8s(单节点)服务
使用kubectl apply部署GBase8s(单节点)的k8s服务
kubectl apply -f gbase8s-standard-deployment.yaml
7,查看pod部署
使用kubectl get pod查看部署情况
kubectl get pod -o wide
示例输出如下:
NAME READY STATUS RESTARTS AGE
gbase8s-deployment-6cd4dbc946-ltfk6 1/1 Running 0 88m
五、一些常用的sealos和kubectl(命令与docker有很大的相同)
1) kubectl命令
显示service
kubectl get service -o wide
显示service详细信息
kubectl describe service gbase8s-service
删除service
kubectl delete service gbase8s-service
显示deployment
kubectl get deployment -o wide
显示deployment详细信息
kubectl describe deployment gbase8s-deployment
删除depolyment
kubectl delete deployment gbase8s-deployment
显示pod
kubectl get pod -o wide
显示pod详细信息
kubectl describe pod gbase8s-deployment-6cd4dbc946-ltfk6
2) sealos命令
导入docker镜像
sealos load -i GBase8sV8.8_3513x25_csdk_x64_20250225.tar
给镜像打新的tag
sealos tag localhost/gbase8sv8.8:3513x25_csdk_x64 \
192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
推送至本地镜像仓库
sealos push 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
清理k8s集群
sealos reset
增加master节点
sealos add --masters 192.168.0.13,192.168.0.14
增加node节点
sealos add --nodes 192.168.0.21,192.168.0.22