Sealos 介绍

Sealos 是一个 Go 语言开发的简单干净且轻量的 Kubernetes 集群部署工具,能很好的支持在生产环境中部署高可用的 Kubernetes 集群。

Sealos 特性与优势

支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。

证书有效期默认延期至 99 年

工具使用非常简单。

支持使用自定义配置文件,可灵活完成集群环境定制。

使用内核进行本地负载,稳定性极高,故障排查也极其简单。

最主要的优势是不需要翻墙出去!!!

 

下载 sealos 命令行工具

Bash

VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4`

#声明版本

wget 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

#安装命令工具

 

先决条件

每个集群节点应该有不同的主机名。主机名不要带下划线。

所有节点的时间需要同步。

需要在 K8s 集群的第一个 master 节点上运行 sealos run 命令,目前集群外的节点不支持集群安装

建议使用干净的操作系统来创建集群。不要自己装 Docker!

支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。

支持 Docker Hub 中的所有 Kubernetes 版本。

支持使用 Containerd 作为容器运行时。

在公有云上安装请使用私有 IP

 

生成集群配置文件

 Sealos 的 gen 命令可以用于生成 Kubernetes 集群的配置文件(Clusterfile),这个配置文件可以在之后通过 sealos apply 命令来应用。gen 命令可以帮助用户快速生成一个基本的配置文件,用户可以在此基础上根据自己的需求进行修改和调整。

Bash

sealos gen registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.25.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.8.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.24.1 \

    --masters 172.19.100.15,172.19.100.7,172.19.100.17 \

    --nodes 172.19.100.10 --passwd 'lAf3GIBasW@N3gJAqON8otFOxYs' > Clusterfile.yaml

                                                    master节点密码,实现ssh远程登录

在生成了 Clusterfile 之后,用户可以根据自己的需求来修改这个文件。添加或修改环境变量;修改集群cidr配置。完成修改后,用户就可以通过 sealos apply 命令来根据这个配置文件来创建或更新集群了。

YAML

apiVersion: apps.sealos.io/v1beta1

kind: Cluster

metadata:

  creationTimestamp: null

  name: default

spec:

  hosts:

  - ips:

    - 172.16.66.41:22

    - 172.16.66.42:22

    - 172.16.66.43:22

    roles:

    - master

    - amd64

  - ips:

    - 172.16.66.44:22

    roles:

    - node

    - amd64

  image:

  - labring/kubernetes:v1.25.15

  - labring/helm:v3.8.2

  - labring/calico:v3.24.1

  ssh:

    passwd: redhat

... ...

 

 

初始化集群

 Bash

sealos apply -f Clusterfile.yaml

初始化成功界面

 

Bash

[root@sealos-01 ~]# kubectl  get nodes

NAME        STATUS   ROLES           AGE     VERSION

sealos-01   Ready    control-plane   4m38s   v1.25.15

sealos-02   Ready    control-plane   3m46s   v1.25.15

sealos-03   Ready    control-plane   2m43s   v1.25.15

sealos-04   Ready    <none>          2m16s   v1.25.15

 

[root@sealos-01 ~]# kubectl  -n kube-system get pods

NAME                                READY   STATUS    RESTARTS        AGE

coredns-565d847f94-bvc79            1/1     Running   0               2m59s

coredns-565d847f94-lv8wp            1/1     Running   0               2m59s

etcd-sealos-01                      1/1     Running   1               3m13s

etcd-sealos-02                      1/1     Running   0               2m5s

etcd-sealos-03                      1/1     Running   0               78s

kube-apiserver-sealos-01            1/1     Running   1               3m15s

kube-apiserver-sealos-02            1/1     Running   1               109s

kube-apiserver-sealos-03            1/1     Running   1               68s

kube-controller-manager-sealos-01   1/1     Running   3 (2m13s ago)   3m15s

kube-controller-manager-sealos-02   1/1     Running   2               118s

kube-controller-manager-sealos-03   1/1     Running   1               76s

kube-proxy-4xgvw                    1/1     Running   0               2m24s

kube-proxy-7crtv                    1/1     Running   0               2m59s

kube-proxy-9hkn9                    1/1     Running   0               81s

kube-proxy-wzms8                    1/1     Running   0               54s

kube-scheduler-sealos-01            1/1     Running   3 (2m14s ago)   3m14s

kube-scheduler-sealos-02            1/1     Running   1               118s

kube-scheduler-sealos-03            1/1     Running   1               74s

kube-sealos-lvscare-sealos-04       1/1     Running   1               46s

 

使用 containerd 作为容器运行时,镜像和容器的操作使用 crictl 命令。

Bash

[root@sealos-01 ~]# crictl images

[root@sealos-01 ~]# ctr -n k8s.io images ls

 

重置集群

Bash

sealos reset

添加节点

要向集群中添加节点,可以使用 --nodes 选项:

Bash

sealos add --nodes x.x.x.x

要向集群中添加控制节点,可以使用 --masters 选项:

Bash

sealos add --masters x.x.x.x

 

删除节点

要从集群中删除节点,可以使用 --nodes 选项:

Bash

sealos delete --nodes x.x.x.x

要从集群中删除控制节点,可以使用 --masters 选项:

Bash

sealos delete --masters x.x.x.x

 

查看集群证书有效期

Bash

kubeadm  certs check-expiration