这款工具可以把Kubernetes集群打包成一个镜像

这款工具可以把Kubernetes集群打包成一个镜像

作者:Github爱好者 2021-06-04 06:20:08

开发

开发工具

云计算 Docker 可以把一个操作系统的 rootfs+应用 build 成一个容器镜像,sealer 把 kubernetes 看成操作系统,在这个更高的抽象纬度上做出来的镜像就是集群镜像。实现整个集群的 Build Share Run !!!

[[403561]]

 sealer[ˈsiːlər]是一款分布式应用打包交付运行的解决方案,通过把分布式应用及其数据库中间件等依赖一起打包以解决复杂应用的交付问题。

sealer 构建出来的产物我们称之为集群镜像, 集群镜像里内嵌了一个 kubernetes, 解决了分布式应用的交付一致性问题。集群镜像可以 push 到 registry 中共享给其他用户使用,也可以在官方仓库中找到非常通用的分布式软件直接使用。

Docker 可以把一个操作系统的 rootfs+应用 build 成一个容器镜像,sealer 把 kubernetes 看成操作系统,在这个更高的抽象纬度上做出来的镜像就是集群镜像。实现整个集群的 Build Share Run !!!

有了集群镜像用户实践云原生生态技术将变得极其简单,如:

1.安装一个 kubernetes 集群

  1. #安装sealer 
  2. wget https://github.com/alibaba/sealer/releases/download/v0.1.4/sealer-0.1.4-linux-amd64.tar.gz && \ 
  3. tar zxvf sealer-0.1.4-linux-amd64.tar.gz && mv sealer /usr/bin 
  4. #运行集群 
  5. sealer run kubernetes:v1.19.9 # 在公有云上运行一个kubernetes集群 
  6. sealer run kubernetes:v1.19.9 --masters 3 --nodes 3 # 在公有云上运行指定数量节点的kuberentes集群 
  7. # 安装到已经存在的机器上 
  8. sealer run kubernetes:v1.19.9 --masters 192.168.0.2,192.168.0.3,192.168.0.4 --nodes 192.168.0.5,192.168.0.6,192.168.0.7 --passwd xxx 

2.安装 prometheus 集群

  1. sealer run prometheus:2.26.0 

上面命令就可以帮助你安装一个包含 prometheus 的 kubernetes 集群, 同理其它软件如 istio ingress grafana 等都可以通过这种方式运行。

还没完,Sealer 最出色的地方是可以非常方便的让用户自定义一个集群的镜像,通过像 Dockerfile 一样的文件来描述和 build,也就是 Kubefile:

  1. FROM registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.9 
  2. RUN wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml 
  3. CMD kubectl apply -f recommended.yaml 

使用下面的 sealer build 命令就可以构建集群镜像:

  1. sealer build -t registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest . 

然后一个包含 dashboard 的集群镜像就被制作出来了,可以运行或者分享给别人。

把制作好的集群镜像推送到镜像仓库,集群镜像仓库兼容 docker 镜像仓库标准,可以把集群镜像推送到 docker hub、阿里 ACR、或者 Harbor 中

  1. sealer push registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest 

使用场景&特性

  • [x] 极其简单的方式在生产环境中或者离线环境中安装 kubernetes、以及 kubernetes 生态中其它软件
  • [x] 通过 Kubefile 可以非常简单的自定义 kubernetes 集群镜像对集群和应用进行打包,并可以提交到仓库中进行分享
  • [x] 强大的生命周期管理能力,以难以想象的简单的方式去做如集群升级,集群备份恢复,节点阔缩等操作
  • [x] 速度极快 3min 以内完成集群安装
  • [x] 支持 ARM x86, v1.20 以上版本支持 containerd,几乎兼容所有支持 systemd 的 linux 操作系统
  • [x] 不依赖 ansible haproxy keepalived, 高可用通过 ipvs 实现,占用资源少,稳定可靠
  • [x] 官方仓库中有非常多的生态软件镜像可以直接使用,包含所有依赖,一键安装

快速开始

安装一个 kubernetes 集群

  1. sealer run kubernetes:v1.19.9 --masters 192.168.0.2 --passwd xxx 

如果是在云上安装:

  1. export ACCESSKEYID=xxx 
  2. export ACCESSKEYSECRET=xxx 
  3. sealer run registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest 
  4. # 或者指定节点数量运行集群 
  5. sealer run registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest \ 
  6.   --masters 3 --nodes 3 

  1. [root@iZm5e42unzb79kod55hehvZ ~]# kubectl get node 
  2. NAME                      STATUS   ROLES    AGE   VERSION 
  3. izm5e42unzb79kod55hehvz   Ready    master   18h   v1.16.9 
  4. izm5ehdjw3kru84f0kq7r7z   Ready    master   18h   v1.16.9 
  5. izm5ehdjw3kru84f0kq7r8z   Ready    master   18h   v1.16.9 
  6. izm5ehdjw3kru84f0kq7r9z   Ready    <none>   18h   v1.16.9 
  7. izm5ehdjw3kru84f0kq7raz   Ready    <none>   18h   v1.16.9 
  8. izm5ehdjw3kru84f0kq7rbz   Ready    <none>   18h   v1.16.9 

查看镜像默认启动配置:

  1. sealer inspect -c registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest 

使用 Clusterfile 拉起一个 k8s 集群

使用已经提供好的官方基础镜像(sealer-io/kubernetes:v1.19.9)就可以快速拉起一个 k8s 集群。

场景 1. 往已经存在的服务器上去安装,provider 类型为 BAREMETAL

Clusterfile 内容:

  1. apiVersion: sealer.aliyun.com/v1alpha1 
  2. kind: Cluster 
  3. metadata: 
  4.   name: my-cluster 
  5. spec: 
  6.   image: registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.9 
  7.   provider: BAREMETAL 
  8.   ssh: 
  9.     passwd: 
  10.     pk: xxx 
  11.     pkPasswd: xxx 
  12.     user: root 
  13.   network: 
  14.     interface: eth0 
  15.     cniName: calico 
  16.     podCIDR: 100.64.0.0/10 
  17.     svcCIDR: 10.96.0.0/22 
  18.     withoutCNI: false 
  19.   certSANS: 
  20.     - aliyun-inc.com 
  21.     - 10.0.0.2 
  22.  
  23.   masters: 
  24.     ipList: 
  25.      - 172.20.125.234 
  26.      - 172.20.126.5 
  27.      - 172.20.126.6 
  28.   nodes: 
  29.     ipList: 
  30.      - 172.20.126.8 
  31.      - 172.20.126.9 
  32.      - 172.20.126.10 

执行如下所示命令:

  1. [root@iZm5e42unzb79kod55hehvZ ~]# sealer apply -f Clusterfile 
  2. [root@iZm5e42unzb79kod55hehvZ ~]# kubectl get node 
  3. NAME                      STATUS   ROLES    AGE   VERSION 
  4. izm5e42unzb79kod55hehvz   Ready    master   18h   v1.16.9 
  5. izm5ehdjw3kru84f0kq7r7z   Ready    master   18h   v1.16.9 
  6. izm5ehdjw3kru84f0kq7r8z   Ready    master   18h   v1.16.9 
  7. izm5ehdjw3kru84f0kq7r9z   Ready    <none>   18h   v1.16.9 
  8. izm5ehdjw3kru84f0kq7raz   Ready    <none>   18h   v1.16.9 
  9. izm5ehdjw3kru84f0kq7rbz   Ready    <none>   18h   v1.16.9 

场景 2. 自动申请阿里云服务器进行安装, provider: ALI_CLOUD

Clusterfile:

  1. apiVersion: sealer.aliyun.com/v1alpha1 
  2. kind: Cluster 
  3. metadata: 
  4.   name: my-cluster 
  5. spec: 
  6.   image: registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.9 
  7.   provider: ALI_CLOUD 
  8.   ssh: 
  9.     passwd: 
  10.     pk: xxx 
  11.     pkPasswd: xxx 
  12.     user: root 
  13.   network: 
  14.     interface: eth0 
  15.     cniName: calico 
  16.     podCIDR: 100.64.0.0/10 
  17.     svcCIDR: 10.96.0.0/22 
  18.     withoutCNI: false 
  19.   certSANS: 
  20.     - aliyun-inc.com 
  21.     - 10.0.0.2 
  22.  
  23.   masters: 
  24.     cpu: 4 
  25.     memory: 4 
  26.     count: 3 
  27.     systemDisk: 100 
  28.     dataDisks: 
  29.     - 100 
  30.   nodes: 
  31.     cpu: 4 
  32.     memory: 4 
  33.     count: 3 
  34.     systemDisk: 100 
  35.     dataDisks: 
  36.     - 100 

准备好阿里云的ak sk

  1. [root@iZm5e42unzb79kod55hehvZ ~]# ACCESSKEYID=xxxxxxx ACCESSKEYSECRET=xxxxxxx sealer apply -f Clusterfile 

基础设置的一些源信息会被写入到 Clusterfile 中,存储在 /root/.sealer/[cluster-name]/Clusterfile 中, 所以可以这样释放集群:

  1. ./sealer delete -f /root/.sealer/my-cluster/Clusterfile 

制作一个自定义的集群镜像, 这里以制作一个 dashboard 镜像为例

新建一个 dashboard 目录,创建一个文件 Kubefile 内容为:

  1. FROM registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.9 
  2. RUN wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml 
  3. CMD kubectl apply -f recommended.yaml 

  1. [root@iZm5e42unzb79kod55hehvZ dashboard]# export ACCESSKEYID=xxxxxxx 
  2. [root@iZm5e42unzb79kod55hehvZ dashboard]# export ACCESSKEYSECRET=xxxxxxx 
  3. [root@iZm5e42unzb79kod55hehvZ dashboard]# sealer build -f Kubefile -t my-kuberentes-cluster-with-dashboard:latest . 

创建一个带有 dashboard 的自定义集群, 操作同上,替换掉 Clusterfile 中的 image 字段即可:

  1. apiVersion: sealer.aliyun.com/v1alpha1 
  2. kind: Cluster 
  3. metadata: 
  4.   name: my-cluster 
  5. spec: 
  6.   image: my-kuberentes-cluster-with-dashboard:latest 
  7.   provider: ALI_CLOUD 
  8.   ssh: 
  9.     passwd: 
  10.     pk: xxx 
  11.     pkPasswd: xxx 
  12.     user: root 
  13.   network: 
  14.     interface: eth0 
  15.     cniName: calico 
  16.     podCIDR: 100.64.0.0/10 
  17.     svcCIDR: 10.96.0.0/22 
  18.     withoutCNI: false 
  19.   certSANS: 
  20.     - aliyun-inc.com 
  21.     - 10.0.0.2 
  22.  
  23.   masters: 
  24.     cpu: 4 
  25.     memory: 4 
  26.     count: 3 
  27.     systemDisk: 100 
  28.     dataDisks: 
  29.     - 100 
  30.   nodes: 
  31.     cpu: 4 
  32.     memory: 4 
  33.     count: 3 
  34.     systemDisk: 100 
  35.     dataDisks: 
  36.     - 100 

  1. # 准备好阿里云的ak sk 
  2. [root@iZm5e42unzb79kod55hehvZ ~]# ACCESSKEYID=xxxxxxx ACCESSKEYSECRET=xxxxxxx sealer apply -f Clusterfile 

把制作好的集群镜像推送到镜像仓库:

  1. sealer tag my-kuberentes-cluster-with-dashboard:latest registry.cn-qingdao.aliyuncs.com/sealer-io/my-kuberentes-cluster-with-dashboard:latest 
  2. sealer push registry.cn-qingdao.aliyuncs.com/sealer-io/my-kuberentes-cluster-with-dashboard:latest 

就可以把镜像复用给别人进行使用。

仓库地址:https://github.com/alibaba/sealer

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/256473.html<

(0)
运维的头像运维
上一篇2025-05-01 07:58
下一篇 2025-05-01 07:59

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注