使用sealos快速搭建kubernetes集群!!!

打印 上一主题 下一主题

主题 1772|帖子 1772|积分 5318

什么是sealos?

Sealos 是一款基于 Kubernetes 的轻量级操作系统,专为云原生环境设计,重要用于快速摆设和管理 Kubernetes 集群。它采用“容器化内核”的概念,将操作系统和 Kubernetes 深度集成,简化了集群的安装、运维和扩展流程。
sealos 是一个简单的 Golang 二进制文件,可以安装在大多数 Linux 操作系统中。支持在线和离线安装,适用于amd64和arm64架构。轻松管理节点,安装分布式应用,支持Containerd和Docker运行时。
sealos核心特点

极简安装

只需一条命令即可摆设完整的 Kubernetes 集群(包括 Master 和 Worker 节点)。
支持离线安装,适合内网或无外网环境。
容器化内核

将操作系统核心组件(如 kubelet、containerd)容器化,实现环境隔离和版本控制。
避免传统 Linux 发行版的依赖冲突问题。
多集群管理

同一管理多个 Kubernetes 集群,支持集群生命周期管理(创建、扩容、升级、销毁)。
内置应用市场

提供常见云原生应用(如 Prometheus、Istio、Nginx)的一键摆设。
兼容性

支持主流 Linux 发行版(如 CentOS、Ubuntu)作为底层系统。
适配 ARM 和 x86 架构。
sealos相关资源

GitHub地址:https://github.com/labring/sealos
中文文档:https://sealos.run/docs/k8s/quick-start/install-cli
sealos相关命令

sealos的相关命令,除了集群、节点操作管理之外需要留意一下,关于容器和镜像的命令都和docker一样,我们只需要把docker替换成sealos即可
示例:
  1. [root@master01 ~]# sealos --help
  2. sealos is a Kubernetes distribution, a unified OS to manage cloud native applications.
  3. ## 集群操作
  4. Cluster Management Commands:
  5.   apply         Run cloud images within a kubernetes cluster with Clusterfile
  6.   cert          update Kubernetes API server's cert
  7.   run           Run cloud native applications with ease, with or without a existing cluster
  8.   reset         Reset all, everything in the cluster
  9.   status        state of sealos
  10. # 节点管理,添加node节点,删除node节点
  11. Node Management Commands:
  12.   add           Add nodes into cluster
  13.   delete        Remove nodes from cluster
  14. # 远程操作管理
  15. Remote Operation Commands:
  16.   exec          Execute shell command or script on specified nodes
  17.   scp           Copy file to remote on specified nodes
  18. Experimental Commands:
  19.   registry      registry related
  20. # 容器和镜像命令,和dockers一样
  21. Container and Image Commands:
  22.   build         Build an image using instructions in a Containerfile or Kubefile
  23.   create        Create a cluster without running the CMD, for inspecting image
  24.   diff          Inspect changes to the object's file systems
  25.   inspect       Inspect the configuration of a container or image
  26.   images        List images in local storage
  27.   load          Load image(s) from archive file
  28.   login         Login to a container registry
  29.   logout        Logout of a container registry
  30.   manifest      Manipulate manifest lists and image indexes
  31.   merge         merge multiple images into one
  32.   pull          Pull images from the specified location
  33.   push          Push an image to a specified destination
  34.   rmi           Remove one or more images from local storage
  35.   save          Save image into archive file
  36.   tag           Add an additional name to a local image
  37. Other Commands:
  38.   completion    Generate the autocompletion script for the specified shell
  39.   docs          generate API reference
  40.   env           prints out all the environment information in use by sealos
  41.   gen           generate a Clusterfile with all default settings
  42.   version       Print version info
  43. Use "sealos <command> --help" for more information about a given command.
复制代码
kubernetes集群镜像版本支持说明

支持Containerd的k8s

保举使用 Containerd 作为容器运行时 (CRI) 的集群镜像版本,Containerd 是一种轻量级、高性能的容器运行时,与 Docker 兼容。使用 Containerd 的 Kubernetes 镜像可以提供更高的性能和资源使用率。以下是支持 Containerd 的集群镜像版本支持说明:

支持Docker的k8s

固然,你也可以选择使用 Docker 作为容器运行时,以下是支持 Docker 的集群镜像版本支持说明:

查看集群镜像

ealos 全部的集群镜像都可以在 cluster-image-docs 仓库里找到。除了推送到 Docker Hub 之外,这些镜像还被同步到了阿里云的镜像仓库。
Docker Hub 上可以通过以下链接查看 Sealos 全部的集群镜像:https://hub.docker.com/u/labring。
使用 Registry Explorer 可以查看 K8s 集群镜像的全部版本,直接输入 registry.cn-shanghai.aliyuncs.com/labring/kubernetes,然后点击“Submit Query”:

就会看到这个集群镜像的全部 tag。
Docker Hub 同理,输入 docker.io/labring/kubernetes 即可查看全部 tag。
留意!!!
K8s 的小版本号越高,集群越稳定。例如 v1.29.x,其中的 x 就是小版本号。建议使用小版本号比力高的 K8s 版本。到本文截止时间为止,v1.29 最高的版本号是 v1.29.9,而 v1.30 最高的版本号是 v1.30.5,以是建议使用 v1.29.9。你需要根据实际环境来选择最佳的 K8s 版本
Kubernetes集群镜像说明

Sealos 官方发布的集群镜像重要包括以下几种:

  • kubernetes:使用 containerd 作为容器运行时(CRI)的 Kubernetes 镜像。
  • kubernetes-docker:使用 docker 作为容器运行时(CRI)的 Kubernetes 镜像。
  • kubernetes-crio:使用 crio 作为容器运行时(CRI)的 Kubernetes 镜像。
安装前置准备

环境信息

主机名IP地址系统内核系统规格master0110.0.0.30ubuntu22.042c4gnode0110.0.0.31ubuntu22.042c4gnode0210.0.0.32ubuntu22.042c4gsealos安装kubernetes要求


  • 每个集群节点应该有不同的主机名。主机名不要带下划线。
  • 全部节点的时间需要同步。
  • 需要在 K8s 集群的第一个 master 节点上运行 sealos run 命令,现在集群外的节点不支持集群安装。
  • 建议使用干净的操作系统来创建集群。不要本身装 Docker!
  • 支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。
  • 支持 Docker Hub 中的全部 Kubernetes 版本。
  • 支持使用 Containerd 作为容器运行时。
  • 在公有云上安装请使用私有 IP。
极简安装以Docker为容器运行时的kubernetes单节点集群

前置准备


  • 设置主机名,全部节点执行
  1. hostnamectl set-hostname master01
  2. hostnamectl set-hostname node01
  3. hostnamectl set-hostname node02
复制代码

  • 时间同步,全部节点执行
  1. #同步时区
  2. ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3. #下载ntpdate工具用于同步时间
  4. apt -y install ntpdate
  5. ntpdate ntp.aliyun.com
复制代码
  1. apt-get update -y && apt-get install -y ebtables ethtool socat iptables
复制代码
master01节点下载sealos安装工具

下载地址:https://github.com/labring/sealos/releases/tag/v5.0.1
  1. [root@master01 ~]# wget https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.tar.gz
  2. [root@master01 ~]# tar -xvf sealos_5.0.1_linux_amd64.tar.gz
  3. [root@master01 ~]# cp sealos /usr/bin/
  4. # 查看信息
  5. [root@master01 ~]# sealos version
  6. SealosVersion:
  7.   buildDate: "2024-10-09T02:18:27Z"
  8.   compiler: gc
  9.   gitCommit: 2b74a1281
  10.   gitVersion: 5.0.1
  11.   goVersion: go1.20.14
  12.   platform: linux/amd64
复制代码
下载集群镜像

这里使用sealos下载镜像,语法和docker一样,只不过docker替换成sealos即可
  1. # 下载k8s镜像
  2. [root@master01 ~]# sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.26.15
  3. # 下载helm镜像
  4. [root@master01 ~]# sealos pull  registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2
  5. # 下载calico镜像
  6. [root@master01 ~]# sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5
复制代码
运行命令安装集群
  1. sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 \
  2.      --masters 10.0.0.30 \
  3.      --nodes 10.0.0.31,10.0.0.32 -p root123
复制代码
参数说明:

  • --masters:k8s master节点地址列表
  • --nodes:k8s node节点列表
  • -p:ssh登录密码,这里我们使用密码即可
  • -i:ssh登录的密钥,
终极显示如图即表示安装成功!!!

安装成功之后,我们等候全部的pod都启动成功。
  1. [root@master01 ~]# kubectl get po -A
  2. NAMESPACE          NAME                                       READY   STATUS    RESTARTS   AGE
  3. calico-apiserver   calico-apiserver-59965665cb-dsfd8          1/1     Running   0          83s
  4. calico-apiserver   calico-apiserver-59965665cb-k96cz          1/1     Running   0          83s
  5. calico-system      calico-kube-controllers-5699c5bff4-744hp   1/1     Running   0          2m27s
  6. calico-system      calico-node-972ns                          1/1     Running   0          2m28s
  7. calico-system      calico-node-fqlml                          1/1     Running   0          2m28s
  8. calico-system      calico-node-snmlg                          1/1     Running   0          2m28s
  9. calico-system      calico-typha-6fdb6c64d6-b6pjb              1/1     Running   0          2m19s
  10. calico-system      calico-typha-6fdb6c64d6-rsphw              1/1     Running   0          2m28s
  11. calico-system      csi-node-driver-5bght                      2/2     Running   0          2m27s
  12. calico-system      csi-node-driver-hgx6h                      2/2     Running   0          2m27s
  13. calico-system      csi-node-driver-p4fsh                      2/2     Running   0          2m27s
  14. kube-system        coredns-787d4945fb-2x7hw                   1/1     Running   0          2m56s
  15. kube-system        coredns-787d4945fb-tnbgh                   1/1     Running   0          2m56s
  16. kube-system        etcd-master01                              1/1     Running   0          3m9s
  17. kube-system        kube-apiserver-master01                    1/1     Running   0          3m9s
  18. kube-system        kube-controller-manager-master01           1/1     Running   0          3m10s
  19. kube-system        kube-proxy-g92s8                           1/1     Running   0          2m56s
  20. kube-system        kube-proxy-gdhd7                           1/1     Running   0          2m41s
  21. kube-system        kube-proxy-tbmmc                           1/1     Running   0          2m42s
  22. kube-system        kube-scheduler-master01                    1/1     Running   0          3m9s
  23. kube-system        kube-sealos-lvscare-node01                 1/1     Running   0          2m34s
  24. kube-system        kube-sealos-lvscare-node02                 1/1     Running   0          2m35s
  25. tigera-operator    tigera-operator-5d4855cc5b-2pp5k           1/1     Running   0          2m36s
复制代码
查看node节点是否都处于Ready状态
  1. [root@master01 ~]# kubectl get nodes
  2. NAME       STATUS   ROLES           AGE     VERSION
  3. master01   Ready    control-plane   3m34s   v1.26.15
  4. node01     Ready    <none>          3m2s    v1.26.15
  5. node02     Ready    <none>          3m3s    v1.26.15
复制代码
检查docker是否安装成功
  1. [root@master01 ~]# docker -v
  2. Docker version 27.3.1, build ce12230
复制代码
到此为止,我们的K8s集群安装成功了!!!
清理K8s集群

假如中途因为一些设置导致K8s集群安装失败,需要修改设置重新安装的话,我们可以使用sealos reset命令来重置集群继续安装
  1. [root@master01 ~]# sealos reset
  2. 2025-04-26T12:58:42 info are you sure to delete these nodes?
  3. Do you want to continue on 'master01' cluster? Input 'master01' to continue: master01 ##这里需要输入主节点的名称
复制代码
显示如图即表示清理成功

自定义设置安装(保举使用!!!)

sealos支持自定义设置Kubernetes集群,实现高效的集群管理,可以自定义pod的网段以及calico的网段.
使用sealos gen天生一个Clusterfile
  1. sealos gen registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 \
  2.      --masters 10.0.0.30 \
  3.      --nodes 10.0.0.31,10.0.0.32 \
  4.      -p root123 \
  5.      -o Clusterfile
复制代码
天生Clusterfile后,可以根据需要更新集群的设置,例如要修改pods的CIDR范围,就可以修改networking.podSubnet 和 spec.data.spec.calicoNetwork.ipPools.cidr 字段。
终极天生的Clusterfile像这样
  1. [root@master01 ~]# cat Clusterfile
  2. apiVersion: apps.sealos.io/v1beta1
  3. kind: Cluster
  4. metadata:
  5.   creationTimestamp: null
  6.   name: default
  7. spec:
  8.   hosts:
  9.     - ips:
  10.         - 192.168.0.2:22
  11.         - 192.168.0.3:22
  12.         - 192.168.0.4:22
  13.       roles:
  14.         - master
  15.         - amd64
  16.     - ips:
  17.         - 192.168.0.5:22
  18.         - 192.168.0.6:22
  19.         - 192.168.0.7:22
  20.       roles:
  21.         - node
  22.         - amd64
  23.   image:
  24.     - labring/kubernetes:v1.25.0
  25.     - labring/helm:v3.8.2
  26.     - labring/calico:v3.24.1
  27.   ssh:
  28.     passwd: xxx
  29.     pk: /root/.ssh/id_rsa
  30.     port: 22
  31.     user: root
  32. status: {}
  33. ---
  34. apiVersion: kubeadm.k8s.io/v1beta2
  35. kind: ClusterConfiguration
  36. networking:
  37.   podSubnet: 10.160.0.0/12
  38. ---
  39. apiVersion: apps.sealos.io/v1beta1
  40. kind: Config
  41. metadata:
  42.   name: calico
  43. spec:
  44.   path: charts/calico/values.yaml
  45.   strategy: merge
  46.   data: |
  47.     installation:
  48.       enabled: true
  49.       kubernetesProvider: ""
  50.       calicoNetwork:
  51.         ipPools:
  52.         - blockSize: 26
  53.           cidr: 10.160.0.0/12
  54.           encapsulation: IPIP
  55.           natOutgoing: Enabled
  56.           nodeSelector: all()
  57.         nodeAddressAutodetectionV4:
  58.           interface: "eth.*|en.*"
复制代码
启动集群

运行 sealos apply -f Clusterfile 启动集群。集群运行成功后会把 Clusterfile 保存到 /root/.sealos/default/Clusterfile 文件中,可以修改其中字段来重新 apply 对集群进行变更。
  1. # 启动集群,
  2. [root@master01 ~]# sealos apply -f Clusterfile
  3. # 检查节点
  4. [root@master01 ~]# kubectl get nodes
  5. NAME       STATUS   ROLES           AGE   VERSION
  6. master01   Ready    control-plane   81s   v1.26.15
  7. node01     Ready    <none>          47s   v1.26.15
  8. node02     Ready    <none>          49s   v1.26.15
  9. # 查看/root/.sealos/default/Clusterfile
  10. [root@master01 ~]# ll /root/.sealos/default/Clusterfile
  11. -rw-r--r-- 1 root root 8401 Apr 26 13:20 /root/.sealos/default/Clusterfile
复制代码
安装以Containerd为容器运行时的kubernetes集群

运行下面的命令即可,固然也可以使用Clusterfile自定设置安装
  1. # 直接运行
  2. sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 \
  3.      --masters 10.0.0.30 \
  4.      --nodes 10.0.0.31,10.0.0.32 -p root123
复制代码
安装成功,显示如图:

以containerd为容器运行时的kubernetes集群没有docker命令,只有sealos命令,sealos可以完成docker的大部门操作,例如拉取镜像,运行容器,构建镜像等等一系列操作。语法和docker一样
安装高可用的kubernetes集群

安装高可用的kubernetes集群也很简单,只需要通过sealos run命令中的--masters选项指定多个节点即可
示例:
  1. sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 \
  2.      --masters 10.0.0.30,10.0.0.34,10.0.0.33 \
  3.      --nodes 10.0.0.31,10.0.0.32 -p root123
复制代码
sealos针对集群的扩缩容

前置准备

  1. apt-get update -y && apt-get install -y ebtables ethtool socat iptables
复制代码
添加node节点
  1. sealos add --nodes='10.0.0.21' -p '!Xinxin123'
复制代码
如图表示扩容成功

检查一下
  1. [root@master01 ~]# kubectl get nodes
  2. NAME       STATUS   ROLES           AGE   VERSION
  3. master     Ready    <none>          40s   v1.26.15
  4. master01   Ready    control-plane   14m   v1.26.15
  5. node01     Ready    <none>          14m   v1.26.15
  6. node02     Ready    <none>          14m   v1.26.15
复制代码
删除node节点
  1. sealos delete --nodes='10.0.0.21'
复制代码
添加master节点
  1. sealos add --master='10.0.0.21' -p '!Xinxin123'
复制代码
删除master节点
  1. sealos delete --master='10.0.0.21' -p '!Xinxin123'
复制代码
sealos的私有镜像仓库

参考文档:https://sealos.run/docs/k8s/operations/registry/using_sealoshub_private_registry
sealos 的私有仓库默认运行在集群的第一个节点上,第一个节点是指创建集群的时候输入的第一个节点的地址,使用下面的命令查看守卫进程的状态。
  1. [root@master01 ~]# systemctl status registry.service
  2. ● registry.service - registry: The sealos registry
  3.      Loaded: loaded (/etc/systemd/system/registry.service; enabled; vendor preset: enabled)
  4.      Active: active (running) since Sat 2025-04-26 13:32:01 CST; 23min ago
  5.        Docs: https://www.sealos.io/docs/Intro
  6.    Main PID: 32257 (registry)
  7.       Tasks: 7
  8.      Memory: 72.5M
  9.         CPU: 40.117s
  10.      CGroup: /system.slice/registry.service
  11.              └─32257 /usr/bin/registry serve /etc/registry/registry_config.yml
复制代码
登录私有容器镜像仓库

sealos 私有仓库使用 --net host 参数运行在 HTTP 下,应当在本地设置 insecure-registries,然后使用第一个节点的 IP 地址进行毗连,Docker 客户端设置参考如下:
  1. {
  2.   "insecure-registries": ["192.168.1.10:5000"],
  3. }
复制代码
使用 sealos login 命令来进行登录,默认用户名与密码是 admin:passw0rd,默认域名是:sealos.hub,该域名在我们安装k8s集群时,sealos默认帮我们添加好了hosts剖析,默认端口是5000
  1. [root@master01 ~]# cat /etc/hosts
  2. 127.0.0.1 localhost
  3. 127.0.1.1 master
  4. # sealos
  5. 10.0.0.30 sealos.hub
  6. 10.0.0.30 apiserver.cluster.local
复制代码
sealos登录私有仓库
  1. sealos login -u admin -p passw0rd sealos.hub:5000
复制代码
也可以使用 docker login 命令。
  1. docker login -u admin -p passw0rd sealos.hub:5000
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表