forked from labring/sealos
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
955 changed files
with
21,210 additions
and
4 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
|
||
|
||
import Highlight from '@site/src/components/Highlight' | ||
|
||
# 什么是 Sealos? | ||
|
||
<Highlight content="在线使用 Sealos" url="https://cloud.sealos.io" /> | ||
|
||
云原生生态之庞大与复杂,无疑让许多企业感到手足无措,这个生态依然缺乏好用的、开箱即用的发行版。在云原生市场还急需一款云操作系统以进一步降低云原生门槛与成本。 | ||
|
||
Sealos 的问世为企业开启了一扇新窗。它为企业与开发者提供了一种全新的选择,无论在公有云还是私有云中,都只需安装一个云操作系统。它能让各类应用在操作系统上稳定安全地运行,一并解决了应用所需的各种依赖问题。 | ||
|
||
Sealos 坚守的理念是:**云可以像 Linux 一样简单**。你可以像使用 Linux 一样安装后立即投入使用,使用过程无需过多纠结。唯一的差别仅在于,Linux 是安装在单一服务器上,而 Sealos 则是安装在整个数据中心。 | ||
|
||
在 Sealos 的架构中,**公有云与私有云并无本质上的差异**,他们应是同一套代码的不同实例,唯一的区别仅在于配置与所安装应用的差异。在内网安装即是私有云,而在公网对外提供服务则成为公有云。 | ||
|
||
我们坚信,随着 Sealos 的不断发展与进步,未来的云将更加开放,更加简单。云计算的美好将属于所有算力的提供者,云的价值将由所有云计算的参与者共享。**他们将能够在多元化的市场环境中,以更经济的方式享受云计算所带来的种种便利。** | ||
|
||
## 概述 | ||
|
||
Sealos 是一款以 Kubernetes 为内核的**云操作系统发行版**。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够**像使用个人电脑一样**简单地使用云。 | ||
|
||
用户将可以像使用个人电脑一样在 Kubernetes 上一键安装任意高可用分布式应用,几乎不需要任何专业的交付和运维成本。同时,利用独特的集群镜像能力,用户可将任意分布式应用打包成 OCI 镜像,自由组合各种分布式应用,轻松订制所需的云。通过强大且灵活的应用商店功能,可满足各类用户的多样化需求。 | ||
|
||
![](./images/overview-1.png) | ||
|
||
## 适用场景 & 优势 | ||
|
||
Sealos 是一款强大的业务运行平台,它能完美支持 Java、Go、Python、PHP 等各类应用,不受编程语言限制。该平台为应用提供稳定的运行环境,并解决后端依赖问题,例如数据库、对象存储和消息队列等。更进一步,它还能灵活处理应用配置管理、服务发现、公网暴露,以及自动伸缩等问题。 | ||
|
||
### 公有云 | ||
|
||
如果您的业务需要运行在公有云环境中,那么您可以直接使用 [Sealos 提供的公有云服务](https://cloud.sealos.io)。 | ||
|
||
#### Sealos 的能力 | ||
|
||
- 🚀 **应用管理**:在应用商店中轻松管理并快速发布可公网访问的分布式应用。 | ||
- 🗄️ **数据库管理**:秒级创建高可用数据库,支持 MySQL、PostgreSQL、MongoDB 和 Redis。 | ||
- 🌥️ **公私一致**:即是公有云也是私有云,支持传统应用无缝迁移到云环境。 | ||
|
||
#### Sealos 的优势 | ||
|
||
- 💰 **高效 & 经济**:仅需为容器付费,自动伸缩杜绝资源浪费,大幅度节省成本。 | ||
- 🌐 **通用性强,无心智负担**:专注于业务本身,无需担心复杂性,几乎没有学习成本。 | ||
- 🛡️ **灵活 & 安全**:多租户共享机制在确保安全的同时,实现资源隔离与高效协作。 | ||
|
||
### 私有云 | ||
|
||
Sealos 云操作系统 **100% 开源**,您可在 [GitHub](https://github.com/labring/sealos) 上找到所有源代码,因此 **Sealos 公有云**的全部功能也可以部署在私有云环境中,以满足您更多样化的业务需求。 | ||
|
||
### 强大的应用交付能力 | ||
|
||
- Sealos 具备优秀的 Kubernetes 生命周期管理能力,还可以自由定制 Kubernetes 环境。 | ||
- Sealos 可以将整个集群打包,并一键交付到客户环境中。所有服务和业务都可以整体交付。 | ||
- 不同于 Docker 主要关注单机镜像,Sealos 更进一步,可以将**整个集群**或者某个分布式应用进行打包。 |
224 changes: 224 additions & 0 deletions
224
docs/5.0/docs/developer-guide/self-hosting/lifecycle-management/QA.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
--- | ||
sidebar_position: 1 | ||
--- | ||
|
||
# 常见问题 | ||
|
||
使用Sealos时,您可能会遇到一些问题。以下是一些常见问题的答案和解决方法。 | ||
|
||
## 镜像构建问题 | ||
|
||
### Q1: 在构建阶段如何设置代理服务? | ||
|
||
在执行构建命令时,可以通过设置HTTP_PROXY环境变量来配置代理服务。 | ||
|
||
```shell | ||
HTTP_PROXY=socket5://127.0.0.1:7890 sealos build xxxxx | ||
``` | ||
|
||
### Q2:如何启用buildah的调试日志? | ||
|
||
若需要查看buildah的调试日志,可以通过设定`BUILDAH_LOG_LEVEL`环境变量实现。 | ||
|
||
```shell | ||
BUILDAH_LOG_LEVEL=debug sealos images | ||
``` | ||
|
||
### Q3:如何在Pod中执行Sealos构建? | ||
|
||
若在Pod中执行Sealos构建,请按以下步骤操作: | ||
|
||
1. 在Pod中构建镜像,可用以下YAML配置创建Deployment。 | ||
|
||
```yaml | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
labels: | ||
app: sealoscli | ||
name: sealoscli | ||
spec: | ||
replicas: 1 | ||
selector: | ||
matchLabels: | ||
app: sealoscli | ||
strategy: {} | ||
template: | ||
metadata: | ||
labels: | ||
app: sealoscli | ||
spec: | ||
containers: | ||
- image: #用你的sealos镜像替换 | ||
name: sealoscli | ||
stdin: true | ||
stdinOnce: true | ||
securityContext: | ||
privileged: true | ||
``` | ||
2. 创建Dockerfile。以下是一个例子,根据需要进行修改。 | ||
```dockerfile | ||
FROM bitnami/minideb:buster | ||
|
||
ARG TARGETOS | ||
ARG TARGETARCH | ||
|
||
LABEL from=bitnami/minideb:buster platform=rootcloud team=oam tag=buster name=base | ||
|
||
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && sed -i "s@http://security.debian.org@http://mirrors.aliyun.com/debian-security@g" /etc/apt/sources.list | ||
RUN install_packages curl iputils-ping net-tools telnet procps vim wget jq | ||
|
||
ENV LANG=C.UTF-8 | ||
ENV LANGUAGE=C.UTF-8 | ||
ENV LC_ALL=C.UTF-8 | ||
ENV TZ=Asia/Shanghai | ||
``` | ||
|
||
3. 在Pod中执行构建命令。 | ||
|
||
```shell | ||
sealos build --arch arm64 --build-arg TARGETOS=linux --build-arg TARGETARCH=arm64 -t test -f Dockerfile . | ||
``` | ||
|
||
### Q4:如何使用其他构建工具构建集群镜像? | ||
|
||
如果您想使用 Docker 或 Podman 等其他容器工具来构建集群镜像,您可以借助 [sreg](https://github.com/labring/sreg) 来缓存镜像。 | ||
|
||
以下是操作步骤: | ||
|
||
1. 安装 sreg: | ||
```shell | ||
wget https://github.com/labring/sreg/releases/download/v0.1.1/sreg_0.1.1_linux_amd64.tar.gz | ||
tar -xzf sreg_0.1.1_linux_amd64.tar.gz sreg | ||
mv sreg /usr/bin/ | ||
``` | ||
2. 缓存镜像: | ||
```shell | ||
sreg save --registry-dir=registry . | ||
``` | ||
3. 构建集群镜像: | ||
```shell | ||
docker build -t xxxx -f Sealfile . | ||
``` | ||
|
||
### Q5:执行Sealos构建时遇到“lgetxattr /var/lib/containers/storage/overlay/0c2afe770ec7870ad4639f18a1b50b3a84718f95c8907f3d54e14dbf0a01d50d/merged/dev/ptmx: no such device”错误? | ||
|
||
这个问题可能与`fuse-overlayfs`的版本有关。建议您从[这里](https://github.com/containers/fuse-overlayfs/releases)下载最新版本下载并替换`/bin/fuse-overlayfs`。 | ||
|
||
## 运行时选择问题 | ||
|
||
### Q1:如何选择Kubernetes运行时? | ||
|
||
Sealos会根据您选择的镜像决定使用哪种运行时。如果选择了kubernetes-docker镜像,Sealos将使用Docker作为运行时;如果选择了kubernetes-crio镜像,Sealos将使用CRI-O作为运行时。 | ||
|
||
## 版本兼容性问题 | ||
|
||
### Q1:报错:"Applied to cluster error: failed to init exec auth.sh failed exit status 127"? | ||
|
||
此问题常因您使用的sealos版本和镜像版本不匹配造成。请确认您的镜像版本和sealos的版本是匹配的。 | ||
例如,若您正使用形如kubernetes:v1.xx.x的版本,可能需要升级sealos,特别是在使用较老版本的sealos,而sealos集群镜像则使用了最新版时。 | ||
另一种解决方法是选择对应版本的sealos镜像。比如,如果您的sealos版本是4.1.3,那么集群镜像应选择形如kuberntes:v1.24.0-4.1.3的版本。 | ||
确保镜像版本和sealos版本的匹配,可以帮助避免此类问题。 | ||
|
||
### Q2: 如果您在集群中新增了其他域名,或者修改了 service 的 CIDR,并且在添加 master 时出现了错误 | ||
|
||
为了解决这个问题,Sealos 团队在 4.2.0 版本进行了相应的修复。具体的修复内容和讨论可以在这个 pull request 中查看:https://github.com/labring/sealos/pull/2943 。 | ||
|
||
所以,如果您遇到了这个问题,我们建议您升级到 Sealos 4.2.0 版本。更新后的版本应该能够正确处理这些变更,并且在添加 master 时不会出现错误。 | ||
|
||
## 文件和目录位置问题 | ||
|
||
### Q1:如何修改`/root/.sealos`默认目录的存储位置? | ||
|
||
若需修改默认的存储位置,可以设置SEALOS_RUNTIME_ROOT环境变量,然后运行sealos命令。建议您将这个环境变量设置为全局的,这样在其他命令或场景中也可以方便使用。 | ||
|
||
```shell | ||
export SEALOS_RUNTIME_ROOT=/data/.sealos | ||
sealos run labring/kubernetes:v1.24.0 | ||
``` | ||
|
||
### Q2:如何修改`/var/lib/sealos`默认目录的存储位置? | ||
|
||
若需修改默认的存储位置,可以设置SEALOS_DATA_ROOT环境变量,然后运行sealos命令。同样,建议您将这个环境变量设置为全局的。 | ||
|
||
```shell | ||
export SEALOS_DATA_ROOT=/data/sealos | ||
sealos run labring/kubernetes:v1.24.0 | ||
``` | ||
|
||
### Q3: 如何修改 Sealos 镜像数据和状态的存储路径? | ||
|
||
> 在使用 Sealos 集群时,可能需要改变默认的镜像数据存储路径和状态数据的存储路径。默认情况下,这些数据被存储在 `/etc/containers/storage.conf` 文件定义的位置。 | ||
1. **查看当前存储配置** | ||
首先,我们可以使用下面的命令来查看当前的镜像存储配置: | ||
``` | ||
sealos images --debug | ||
``` | ||
这个命令会打印出包含当前存储配置的文件,例如: | ||
``` | ||
2023-06-07T16:27:02 debug using file /etc/containers/storage.conf as container storage config | ||
REPOSITORY TAG IMAGE ID CREATED SIZE | ||
``` | ||
2. **修改镜像数据存储路径** | ||
如果你希望更改镜像数据的存储路径,你可以编辑 `/etc/containers/storage.conf` 文件。在这个文件中,找到并修改 `graphroot` 字段设置为新的路径。例如: | ||
``` | ||
vim /etc/containers/storage.conf | ||
``` | ||
在编辑器中,将 `graphroot` 字段的值修改为你希望的新路径。 | ||
3. **修改状态数据存储路径** | ||
参考 Buildah 的设计,Sealos 同样提供了状态数据存储路径的设置。在同样的配置文件 `/etc/containers/storage.conf` 中,找到并修改 `runroot` 字段为新的路径。 | ||
通过以上步骤,你可以将 Sealos 集群的镜像数据和状态数据保存到新的地址。每次运行 Sealos 命令时,它都将使用你在 `graphroot` 和 `runroot` 中设置的新路径来分别存储镜像数据和状态数据。 | ||
### Q4:ssh传输文件时,如何禁止检查文件的md5? | ||
在网络环境良好时,禁用md5检查可以极大提升传输速度。若不想在ssh传输文件时检查文件的md5,可将SEALOS_SCP_CHECKSUM环境变量设置为false以禁用此功能。建议将此环境变量设为全局,以便在多场景下使用。 | ||
```shell | ||
export SEALOS_SCP_CHECKSUM=false | ||
sealos run labring/kubernetes:v1.24.0 | ||
``` | ||
|
||
|
||
## 其他问题 | ||
|
||
### Q1:image-cri-shim导致端口大量占用,耗尽服务器socket资源? | ||
|
||
出现此问题时,可通过以下命令解决: | ||
|
||
```shell | ||
wget https://github.com/labring/sealos/releases/download/v4.2.0/sealos_4.2.0_linux_amd64.tar.gz && tar xvf sealos_4.2.0_linux_amd64.tar.gz image-cri-shim | ||
sealos exec -r master,node "systemctl stop image-cri-shim" | ||
sealos scp "./image-cri-shim" "/usr/bin/image-cri-shim" | ||
sealos exec -r master,node "systemctl start image-cri-shim" | ||
sealos exec -r master,node "image-cri-shim -v" | ||
``` | ||
|
||
### Q2:报错"[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists" | ||
|
||
此问题可通过升级至Sealos 4.1.7+来解决。 | ||
|
||
### Q3:报错:"function "semverCompare" not defined" | ||
|
||
此问题可通过升级至Sealos 4.1.4+来解决。 | ||
|
||
我们希望这些解答能帮助您解决在使用Sealos过程中遇到的问题。如果还有其他问题,欢迎随时提问。 | ||
|
||
## 使用技巧 | ||
|
||
### Q1: 如何清理 Sealos 集群的缓存文件 | ||
|
||
> 在使用 Sealos 集群时,安装过程中可能会在本地存储一些缓存文件,这些文件会重复占用磁盘空间。那么,如何清理这些缓存文件以释放磁盘空间呢? | ||
我们提供了一个非常简单的解决方案,只需要执行以下命令: | ||
|
||
```shell | ||
sealos unmount --all && sealos rm --all | ||
``` | ||
这个命令的作用是移除所有缓存的 Sealos 集群镜像文件,以及所有的相关挂载点。--all 选项表示处理所有相关文件和挂载点。 | ||
执行这个命令后,所有 Sealos 集群的缓存文件就会被清理掉,从而释放出被它们占用的磁盘空间。 | ||
这是一个非常有用的技巧,特别是对于在磁盘空间有限的环境中运行 Sealos 集群的用户来说。在你感觉磁盘空间被占用过多时,不妨尝试执行这个命令来释放一些空间。 | ||
请注意,这个命令只会删除缓存文件,不会影响已经运行的集群。也就是说,执行这个命令后,你的集群仍然可以正常运行。 |
85 changes: 85 additions & 0 deletions
85
...-hosting/lifecycle-management/advanced-guide/build-image-using-registry-sync.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
--- | ||
sidebar_position: 2 | ||
--- | ||
|
||
# 镜像构建改进指南 | ||
|
||
## 深入理解Sealos镜像构建 | ||
|
||
为了了解Sealos镜像构建的背后所做的工作,我们将首先揭示它在底层究竟进行了哪些操作。以下是一个直观的架构图: | ||
|
||
![](images/build.png) | ||
|
||
Sealos在构建镜像过程中涵盖了以下几个核心步骤: | ||
|
||
- **缓存镜像**:解析构建执行时的工作目录(在这里我们称之为"context"目录),将缓存镜像保存到registry结构并存储在./registry目录下。 | ||
- **构建镜像**:在context目录中进行镜像构建,生成新的镜像。(请注意,构建镜像时需要将./registry目录进行复制。) | ||
|
||
## 提升镜像构建效率 | ||
|
||
当前项目中,我们借用了`github.com/distribution/distribution`的源代码,在执行缓存镜像的过程中直接调用了registry的sdk并启动了registry-proxy功能。借助于镜像仓库的缓存能力,我们将镜像缓存并存入context/registry目录。 | ||
|
||
这个过程的关键就在于调用了distribution仓库的方法进行保存镜像: | ||
|
||
- 启动 registry-proxy 功能。 | ||
- 保存镜像摘要及索引相关数据(通过调用saveManifestAndGetDigest方法)。 | ||
- 保存镜像文件数据(通过调用saveBlobs方法)。 | ||
|
||
这种方法确实具有一些显著的优点: | ||
|
||
- 轻量化:无需依赖其他组件即可保存镜像。 | ||
- 自由控制:可以自由控制保存逻辑,无需依赖第三方组件。 | ||
|
||
然而,我们也注意到了一些潜在的问题: | ||
|
||
- 对新手来说,代码理解难度较高,不易清晰了解这里的逻辑。 | ||
- 无法缓存使用token认证的方式。 | ||
- 需要依赖一些临时存储空间,对空间有要求。 | ||
|
||
考虑到这些问题,我们决定尝试一种新的模式:在本地启动一个轻量的registry,使用`skopeo copy`的sdk进行代码复用。这一改变直接解决了之前所有的问题。 | ||
|
||
![](images/registry-build.png) | ||
|
||
**所以,新的构建方式 ✨镜像仓库同步✨ 优雅登场 🎉🎉** | ||
|
||
官方仓库中的[#3154](https://github.com/labring/sealos/pull/3154)这个PR已经完成了这个功能的实现。目前,Sealos支持这两种方式进行镜像构建。接下来,我会介绍如何启动新功能(如果新功能表现稳定,我们可能会废弃旧的构建方式)。 | ||
|
||
## 如何启动新功能 | ||
|
||
> Sealos v4.3.0 以上版本默认支持此功能。 | ||
启动新功能非常简单,只需在你构建镜像之前添加一个环境变量即可。这个功能同时支持build和merge两个命令。 | ||
|
||
```shell | ||
SEALOS_REGISTRY_SYNC_EXPERIMENTAL=true sealos build -t test . | ||
``` | ||
|
||
以下是执行上述命令后的预期输出: | ||
|
||
```tex | ||
SEALOS_REGISTRY_SYNC_EXPERIMENTAL=true sealos build -t test . | ||
Getting image source signatures | ||
Copying blob fee740108510 done | ||
Copying config f92f3ea6e4 done | ||
Writing manifest to image destination | ||
Storing signatures | ||
Getting image source signatures | ||
Copying blob 08409d417260 done | ||
Copying config 44dd6f2230 done | ||
Writing manifest to image destination | ||
Storing signatures | ||
2023-06-01T13:16:07 info saving images busybox, alpine | ||
STEP 1/2: FROM scratch | ||
STEP 2/2: COPY registry ./registry | ||
COMMIT test | ||
Getting image source signatures | ||
Copying blob 13ab73c881c8 done | ||
Copying config 4e22d16b36 done | ||
Writing manifest to image destination | ||
Storing signatures | ||
--> 4e22d16b366 | ||
Successfully tagged localhost/test:latest | ||
4e22d16b366e9fec25641522a74cbd73a7db67dc0516b8f8e00200c4d0551592 | ||
``` | ||
|
||
希望以上内容可以帮助您更好地理解并使用Sealos的新镜像构建方式。 |
Oops, something went wrong.