终于来了!Sealos 桌面环境完全部署指南!

时间:2024-10-25 08:52:39

Sealos 用了五年的时间从一个 K8s 一键安装工具蜕变成了一个真正的云操作系统,将产品体验提升到了极致,也收获了 10w+ 的社区用户。

一个多月前,Sealos 正式发布了公有云托管版本,社区用户狂喜,纷纷寻找私有化部署教程。现在教程来了,本文将会手把手教你如何私有化部署 Sealos 桌面环境。

准备工作

1. 服务器配置要求

  • 推荐使用奇数台 Master 节点和若干 Node 节点
  • 操作系统 :Ubuntu 22.04 LTS
  • 内核版本 :5.4 及以上
  • 配置推荐 :CPU 4 核 , 内存 8GB, 存储空间 100GB 以上
  • 最小配置 :CPU 2 核 , 内存 4GB, 存储空间 60GB

    2. 网络要求

  • 所有节点之间网络互通
  • Master 节点可以通过 SSH 免密登陆到其他节点
  • 所有节点可以通过 Ping 通信

    3. 域名要求

  • 需要一个域名用于访问 Sealos 及相关服务
  • 没有域名可以使用 免费域名服务

    在线部署

    部署 Kubernetes 集群

    得益于 Sealos CLI 强大的 Kubernetes 生命周期管理,Kubernetes 集群部署变得非常简单:
##注意:helm 版本需要在 3.12.0 及以上!
$ sealos gen labring/kubernetes:v1.25.6 \
    labring/helm:v3.12.0 \
    labring/calico:v3.24.1 \
    labring/cert-manager:v1.8.0 \
    labring/openebs:v3.4.0 \
    --masters 10.140.0.16 \
    --nodes 10.140.0.54 > Clusterfile

#请修改 Clusterfile 中的 PodSubnet 及 ServiceSubnet
 默认的 PodSubnet: 100.64.0.0/10
#默认的 ServiceSubnet: 10.96.0.0/22

$ sealos apply -f Clusterfile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

等待集群就绪后 , 使用 kubectl get pods -A 查看集群状态:

file

在所有 Pod 均为 Ready 状态后,即可进行下一步操作。如果您需要部署其他版本的 Kubernetes 集群,可以在 Sealos 文档 中查看支持的版本。

部署 Sealos 依赖组件

使用下面的脚本即可一键安装 Sealos 所有的依赖组件:

#!/bin/bash
set -e

cat << EOF > 
apiVersion: /v1beta1
kind: Config
metadata:
  creationTimestamp: null
  name: ingress-nginx-config
spec:
  data: |
    controller:
      hostNetwork: true
      kind: DaemonSet
      service:
        type: NodePort
  match: /labring/ingress-nginx:v1.5.1
  path: charts/ingress-nginx/
  strategy: merge
EOF

sealos run /labring/kubernetes-reflector:v7.0.151\
    /labring/ingress-nginx:v1.5.1\
    /labring/zot:v1.4.3\
    /labring/kubeblocks:v0.5.3\
    --env policy=anonymousPolicy\
    --config-file 

echo "patch ingress-nginx-controller tolerations to allow run on master node, if you don't want to run on master node, please ignore this step"
kubectl -n ingress-nginx patch ds ingress-nginx-controller -p '{"spec":{"template":{"spec":{"tolerations":[{"key":"/control-plane","operator":"Exists","effect":"NoSchedule"}]}}}}'

echo "waitting for kubeblocks crd created, this may take a while"
while ! kubectl get  redis >/dev/null 2>&1; do
  sleep 5
done

echo "start patch redis clusterdefinition"
kubectl patch  redis --type='json' -p '[{"op": "add", "path": "/spec/componentDefs/0/podSpec/containers/1/resources/limits", "value": {"cpu":"100m", "memory":"100Mi"}}]'
echo "patch redis success"

echo "wait for all pod to be ready then install Sealos"
kubectl get po -A
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

过程可能稍长,等待所有 Pod 均为 Ready 状态后,即可进行下一步。

file

部署 Sealos

只需一条命令即可一键部署 Sealos:

$ sealos run /labring/sealos-cloud:latest\
    --env cloudDomain="34.81.60."
  • 1

等待所有 Pod 均为 Ready 状态后,即可访问 Sealos,最终集群 Pod 如下:

file

浏览器访问 https://34.81.60. 即可进入 Sealos,由于是自签名证书,浏览器会显示不安全,无法打开 App,可参考下文 Q&A 中的解决方案

file

关于 Sealos 的使用,可以参考 Sealos 官方文档中的案例

自定义配置

  • 如果你需要使用自己的域名,可以将 cloudDomain 参数修改为你的域名,例如:cloudDomain="";

  • 如果你需要使用自己的证书,你可以使用下面的脚本(注意需要修改证书位置及 yaml_content 中的 match image)生成 文件,然后在 sealos run sealos-cloud 时使用 --config-file 参数指定该文件:

#!/bin/bash
#读取原始证书和密钥文件
tls_crt_file=""
tls_key_file=""
#使用 base64 转换
tls_crt_base64=$(cat $tls_crt_file | base64 | tr -d '\n')
tls_key_base64=$(cat $tls_key_file | base64 | tr -d '\n')
#定义 YAML 文件内容
yaml_content="
apiVersion: /v1beta1
kind: Config
metadata:
  name: secret
spec:
  path: manifests/
  #please change the match image to your own image
  match: /labring/sealos-cloud:latest
  strategy: merge
  data: |
    data:
      : $tls_crt_base64
      : $tls_key_base64
"
#创建新的  文件
echo "$yaml_content" > 

sealos run /labring/sealos-cloud:latest\
--env cloudDomain="34.81.60."\
--config-file 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

离线部署

镜像准备

离线部署依赖于 Sealos 强大的离线交付能力,离线部署步骤也非常简单,需要在公网环境下需要提前使用 sealos pull/save 保存镜像:

#!/bin/bash
#pull_images.sh
set -ex
mkdir -p tars
images=(
  /labring/kubernetes:v1.25.6
  /labring/helm:v3.12.0
  /labring/calico:v3.24.1
  /labring/cert-manager:v1.8.0
  /labring/openebs:v3.4.0
  /labring/kubernetes-reflector:v7.0.151
  /labring/ingress-nginx:v1.5.1
  /labring/zot:v1.4.3
  /labring/kubeblocks:v0.5.3
  /labring/sealos-cloud:latest
)

for image in "${images[@]}"; do
  sealos pull "$image"
  filename=$(echo "$image" | cut -d':' -f1 | tr / -)
  sealos save -o "tars/${filename}.tar" "$image"
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

执行完这个脚本后,会在当前目录下生成一个 tars 目录,里面包含了所有的镜像文件。

file

然后将镜像拷贝到内网环境下,使用 sealos load 命令加载镜像:

#!/bin/bash
#load_images.sh
set -ex
for file in tars/*.tar; do
  sealos load -i "$file"
done
  • 1
  • 2
  • 3
  • 4
  • 5

file

file

❝ 注意:在内网环境下如果缺少 Docker 镜像,还需要您自己操作导入 Docker 镜像。当然,Sealos CLI 同样也可以。

Q&A

安装过程中出现问题怎么办?

如果您在安装过程中遇到任何问题,可以在 Sealos 开发者社区 或者 Sealos issues 中提出,我们将尽快回复并帮助您解决问题。或者您也可以加入我们的wx交流群,与与开发者和其他用户进行亲切友好的交流????

file

应该选择哪个 Sealos 镜像版本?

由于 Sealos 项目还在快速迭代中,我们推荐使用最新版(latest 版本)。如果您需要固定版本,可以在 Docker Hub中选择合适的版本。

Sealos 可以商用吗?

首先,非常感谢您对我们的开源项目的支持和关注。您完全可以根据我们的开源许可证 Apache 2.0 *使用我们的软件,包括商业用途。但请确保遵守许可证要求,这可能包括但不限于:保留必要的版权声明、明显的更改通知,以及在某些情况下,您可能需要发布对源代码的改动等

如果没有域名怎么办?

如果您有公网 IP,那么您可以直接使用 。这样,您就可以使用 {{ $ip }}. 作为部署时的域名。

浏览器访问 Sealos 网址时提示“不安全”

如果您在部署过程中提供了正确的证书,但仍然收到这个提示,可以采取以下措施:

  • 检查证书是否和域名匹配:证书需要解析 {{ $domain }} 及 *.{{ $domain }};

  • 检查证书是否被正确地使用 base64 编码并写入到 文件中;

  • 如果您在部署过程中没有提供证书,那么这种现象是正常的,因为默认使用的是 Sealos 的自签名证书。您可以选择以下两种方式解决:

  • 信任证书:在浏览器中导出证书,然后双击证书打开,导入到受信任的根证书颁发机构中;

  • 关闭浏览器的安全检查:以 Chrome 为例,修改 Chrome 浏览器的快捷方式,在目标后面添加 --ignore-certificate-errors 参数,然后重新打开浏览器。

部署时卡在 Waiting waiting for mongodb secret generated 怎么办?

Sealos 依赖 kubeblocks 提供的数据库服务。如果在部署过程中卡在这一步,说明在上一步,部署 Sealos 依赖组件时出错了。您应该尝试重新部署。

如何重新部署?

如果您需要重新部署,只需执行以下命令:

$ sealos reset

    这个命令将清理所有集群资源,让您可以从头开始部署。

    如何在 Windows 上的 Linux 虚拟机中部署 Sealos?

    假设您的 Linux 虚拟机能够联网,那么您可以按照在线部署方案进行部署。需要注意的是,域名需要在虚拟机管理器中配置。如果没有证书,系统将默认使用 Sealos 的自签名证书。

    Sealos 是否支持 ARM64 架构?

    我们正在进行相关测试。测试完成后,我将在文档中更新相关信息。

    引用链接 [1] Sealos 文档: /docs/lifecycle-management/quick-start/

    [2] Sealos 官方文档中的案例: /docs/category/examples/

    [3] Sealos 开发者社区: /

    [4] Sealos issues: /labring/sealos/issues

    [5] Docker Hub: /r/labring/sealos-cloud/tags?page=1&ordering=last_updated

    [6] :

    关于 Sealos Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。

    ????GitHub:/labring/sealos

    ????官网:

    ????开发者论坛: sealos 以kubernetes为内核的云操作系统发行版,让云原生简单普及

    laf 写代码像写博客一样简单,什么docker kubernetes统统不关心,我只关心写业务!