作者:尹珉。Sealos 开源社区 Ambassador,云原生爱好者。
当容器化交付遇上离线环境
在当今快节奏的软件交付环境中,容器化交付曾经成为许多企业抉择的首选技术手段。在能够拜访公网的环境下,容器化交付不仅可能进步软件开发和交付的效率,还可能帮忙企业实现疾速迭代和继续交付。
然而,在离线环境中,容器化交付面临着诸多挑战,包含软件包和镜像的筹备艰难、配置繁琐、部署工夫长等。在本文中,咱们将以运维的角度去探讨基于离线环境下应用容器化交付的痛点,提出一些解决方案以帮忙企业在离线环境中实现高效的容器化交付。
业务场景
我司次要面向 政企客户 ,所交付的产品必须是部署在 内网 中。作为运维负责人,始终苦恼于如何在客户离线环境中以容器化的形式交付业务零碎。政企客户 IDC 机房的环境特殊性,导致目前运维同学在应用容器化交付时效率不高,客户满意度不高的状况,为了解决这个问题,咱们须要找到一个可能在离线环境中疾速部署和治理 Kubernetes 集群的工具。
在离线环境中用容器化交付存在以下常见痛点
1. 学习和了解老本高
Kubernetes 是一个简单的零碎,须要进行肯定的学习和了解能力纯熟应用。这对于不是很精通这项技术的运维工程师来说是一个很大的难点。
2. 镜像治理
在离线环境中,无奈间接从互联网下载 Kubernetes 的镜像和依赖项。因而须要将所需的镜像和依赖项提前下载到本地,并将其导入到 Kubernetes 集群中。这可能须要破费肯定的工夫和精力。
3. 环境配置
在离线环境中,须要手动配置 Kubernetes 所需的所有组件和依赖项,例如 etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy 等等。这须要在部署时有较高的运维教训来对环境初始化问题进行排查和解决。
4. 网络设置
Kubernetes 集群须要正确配置网络设置,以便容器之间能够相互通信。在离线环境中,网络设置可能会更加简单,须要认真设置能力确保失常运行。
基于以上常见的痛点,咱们能够看出,在离线环境中用容器化技术进行交付还是存在较高的学习门槛和配置难度,达不到开箱即用闪电交付的成果。
解决方案
1. 应用 Sealos 实现一键打包闪电交付?
Sealos 能够像 Docker 那样把整个集群制作成镜像,实现分布式软件的构建、交付、运行。
Sealos 我的项目地址:https://github.com/labring/sealos
2. 利用场景
- Kubernetes 集群装置
- Kubernetes 集群、数据库、中间件、SaaS 利用整体打包,一键交付
- 离线交付,多架构反对,国产化反对
- 各种在 Kubernetes 上编排的分布式应用交付
3. 部署架构图
4. 编写一个和 Dockerfile 很相似的 Kubefile,就能够构建一个集群镜像,应用 Clusterfile 去运行一个集群
实战部署
1. 下载 Sealos 二进制文件
$ wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz \
&& tar zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
2. 编写 kubefile 并构建集群镜像
阐明:此处基于 Kubernetes1.24.0 封装含有 Calico 的镜像作为演示,理论的业务镜像也能够基于此形式进行封装即可。
FROM labring/kubernetes:v1.24.0-amd64
COPY cni ./cni
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
$ sealos build -t registry.cn-hangzhou.aliyuncs.com/flowyun/kubernetes-calico:latest -f Kubefile .
3. 保留构建出的镜像
$ sealos save -o Kubernetes.tar registry.cn-hangzhou.aliyuncs.com/demo/Kubernetes-calico:latest
4. 拷贝 sealos 二进制文件和集群镜像到离线环境
$ tar zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
$ sealos load -i Kubernetes.tar
5. 查看集群镜像是否导入胜利
$ sealos images
6. 装置集群
阐明:以单机装置为例,集群装置同理。
$ sealos run registry.cn-hangzhou.aliyuncs.com/demo/Kubernetes-calico:latest --single
7. 验证集群
$ kubectl get pod -A
8. 拜访业务系统验证
效率比照
部署服务名称 | 传统交付形式部署耗时 | Sealos 闪电交付形式部署耗时 |
---|---|---|
MariaDB 数据库 | 1’hour | 1’min |
中间件(redis、nacos) | 1’hour | 30’min |
Kubernetes 搭建 | 4’hour | |
Kubernetes 组件配置调试 | 2’hour | |
业务零碎服务 | 2’hour | |
12’hour/ 人 | 31’min/ 人 |
七、总结
- Sealos 能够疾速部署和降级 Kubernetes 集群。因为 Sealos 应用离线包来提供软件,因而不须要依赖 Internet 连贯,能够在离线环境下疾速部署和降级集群,进步了部署效率。
- Sealos 在离线环境下运行十分稳固和牢靠。因为不受内部网络稳定等影响,Sealos 的设计使得它在离线环境下运行时十分稳固和牢靠,进步了可靠性。
- Sealos 应用离线包,不须要从 Internet 下载软件,因而不易受到网络攻击和恶意软件的影响,进步了安全性。
- Sealos 应用规范的 Kubernetes YAML 文件来创立集群,这意味着用户能够依据本人的需要进行定制和扩大,从而进步了灵活性。
- Sealos 应用简略,不须要简单的配置和命令,只需依照指南进行操作即可,升高了学习和应用的门槛,进步了易用性。
Sealos 是一款功能强大、易于应用的工具,能够帮忙企业在离线环境中实现高效的容器化交付。Sealos 能够疾速部署和降级 Kubernetes 集群,在离线环境下运行十分稳固和牢靠,应用离线包,不须要从 Internet 下载软件,因而不易受到网络攻击和恶意软件的影响,应用规范的 Kubernetes YAML 文件来创立集群,升高了学习和应用的门槛,进步了易用性。