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

shell 复制代码
hostnamectl set-hostname k8s-master  

2,编辑/etc/hosts文件,增加IP与主机名对应关系

shell 复制代码
192.168.80.12	k8s-master  

3,安装用到的依赖包

shell 复制代码
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命令行工具
shell 复制代码
dpkg -i sealos_5.0.1_linux_amd64.deb
3,在k8s-master上安装k8s(单节点)
shell 复制代码
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命令行工具包来源于其它外网环境)
shell 复制代码
dpkg -i sealos_5.0.1_linux_amd64.deb
2,导入tar包镜像(tar包镜像来源于其它外网环境的sealos的save导出)
shell 复制代码
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(单节点)
shell 复制代码
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的私有仓库默认运行在集群的第一个节点上,第一个节点是指创建集群的时候输入的第一个节点的地址,使用下面的命令查看守护进程的状态。

shell 复制代码
systemctl status registry.service

1,使用sealos login命令来登陆,默认用户名和密码为 admin:passw0rd

shell 复制代码
sealos login -u admin -p passw0rd 192.168.80.12:5000

注:192.168.80.12:5000 (k8s-master的IP地址)为私有镜像仓库中地址

2,sealos导入docker镜像

shell 复制代码
sealos load -i GBase8sV8.8_3513x25_csdk_x64_20250225.tar

3,sealos重新打tag,注意tag的写法,使用私有镜像时,需要该写法。

shell 复制代码
sealos tag localhost/gbase8sv8.8:3513x25_csdk_x64 \
 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64

4,推送到本地的私有镜像

shell 复制代码
sealos push 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64

5,GBase8s单机部署yaml文件(gbase8s-standard-deployment.yaml)

text 复制代码
# 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服务

shell 复制代码
kubectl apply -f gbase8s-standard-deployment.yaml

7,查看pod部署

使用kubectl get pod查看部署情况

shell 复制代码
kubectl get pod -o wide

示例输出如下:

text 复制代码
NAME                                  READY   STATUS    RESTARTS   AGE
gbase8s-deployment-6cd4dbc946-ltfk6   1/1     Running   0          88m

五、一些常用的sealos和kubectl(命令与docker有很大的相同)

1) kubectl命令

显示service

shell 复制代码
kubectl get service -o wide

显示service详细信息

shell 复制代码
kubectl describe service gbase8s-service

删除service

shell 复制代码
kubectl delete service gbase8s-service

显示deployment

shell 复制代码
kubectl get deployment -o wide

显示deployment详细信息

shell 复制代码
kubectl describe deployment gbase8s-deployment

删除depolyment

shell 复制代码
kubectl delete deployment gbase8s-deployment

显示pod

shell 复制代码
kubectl get pod -o wide

显示pod详细信息

shell 复制代码
kubectl describe pod gbase8s-deployment-6cd4dbc946-ltfk6  

2) sealos命令

导入docker镜像

shell 复制代码
sealos load -i GBase8sV8.8_3513x25_csdk_x64_20250225.tar

给镜像打新的tag

shell 复制代码
sealos tag localhost/gbase8sv8.8:3513x25_csdk_x64 \
192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64

推送至本地镜像仓库

shell 复制代码
sealos push 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64

清理k8s集群

shell 复制代码
sealos reset

增加master节点

shell 复制代码
sealos add --masters 192.168.0.13,192.168.0.14

增加node节点

shell 复制代码
sealos add --nodes 192.168.0.21,192.168.0.22
相关推荐
桂月二二1 小时前
云原生容器编排:Kubernetes的架构演进与实践
云原生·架构·kubernetes
奔跑中的小象1 小时前
Deepin通过二进制方式升级部署高版本 Docker
docker·容器·eureka·deepin
行者Sun19893 小时前
【K8s】专题十六(3):Kubernetes 包管理工具之 Helm 语法
云原生·容器·kubernetes·helm
全是操作13 小时前
k8s scheduler源码阅读
云原生·容器·kubernetes
obboda14 小时前
Docker基础入门
运维·docker·云原生·容器·eureka
cooldream200915 小时前
Docker Desktop 安装与使用详解
运维·docker·容器
川石课堂软件测试16 小时前
涨薪技术|Kubernetes(k8s)之Service服务
功能测试·adb·docker·云原生·容器·kubernetes·单元测试
钰紫薇16 小时前
玩转K8S,轻松部署SpringBoot项目,实现hello K8s
运维·kubernetes
RedCong17 小时前
k8s之PodDisruptionBudget详解
云原生·容器·kubernetes
{⌐■_■}17 小时前
【Kubernets】Kubernetes 的基础知识,Pod是什么? 和容器的关系?多个容器如何在同一个 Pod 里协作?
云原生·容器·kubernetes