SealOS部署k8s集群(单节点)

发布于:2025-03-12 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、 先决条件

  • 每个集群节点应该有不同的主机名。
  • 需要在 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