[docker]Sealer简介

news2024/12/23 17:15:21

文章目录

    • 安装
      • 创建集群
      • 清理集群
      • 本机免密登录
    • 镜像构建与运行
      • Kubefile
      • Sealer Image
      • Clusterfile

sealer是阿里开源的一款分布式应用打包交付运行的解决方案;通过把分布式应用及其所依赖的数据库、中间件等一起打包成一个集群镜像,解决复杂应用的交付问题。

安装

安装非常简单,只需下载解压即可:

wget https://github.com/sealerio/sealer/releases/download/v0.9.0/sealer-v0.9.0-linux-amd64.tar.gz

tar xzvf sealer-v0.9.0-linux-amd64.tar.gz

mv sealer /usr/bin/

sealer要求docker的storage driver为Overlay2类型;在xfs文件系统上,需要d_type=true才支持:

xfs_info /data # 查看data文件所在分区ftype(ftype=1)才会支持overlay

创建集群

通过sealer run可快速创建集群:

  • 集群元数据信息Clusterfile默认存储在:/root/.sealer/[cluster-name]/Clusterfile
sealer run sealerio/kubernetes:v1.20.4 --masters {host-ip} --pk /root/.ssh/id_rsa 
# --masters:指定主节点IP,多个用逗号分割
# --node:指定备节点IP,多个用逗号分割 
# --pk:指定登录节点SSH(默认端口22,用户root)的密钥;
# --passwd:指定登录节点SSH的密码;(与pk二选一)

# 创建只有一个主节点的集群
sealer run docker.io/sealerio/kubernetes:v1.20.4 --masters 192.168.0.2 --pk /root/.ssh/id_rsa

指定yaml文件:sealer run -f Clusterfile

apiVersion: sealer.cloud/v2
kind: Cluster
metadata:
  name: my-cluster
spec:
  image: sealerio/kubernetes:v1.20.4
  env:
  - DOCKER_REGISTRY_HOME=/data/registry
  - ROOTFS_DIR=/data/sealer
  - DOCKER_DATA_ROOT=/data/docker
  hosts:
  - ips:
    - 192.168.0.2
    roles:
    - master
  registry:
    localRegistry:
      domain: sea.hub
      port: 5000
  ssh:
    pk: /root/.ssh/id_rsa
    port: "22"
    user: root
status: {}

清理集群

可删除集群元数据文件或直接删除全部:

sealer delete -a
# 或
sealer delete -f /root/.sealer/my-cluster/Clusterfile

本机免密登录

使用pk创建集群时,需要设定本机免密登录:

ssh-keygen -t rsa # 全部默认(一路回车)

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

镜像构建与运行

可编写一个Kubefile,然后生成一个Sealer Image,最后通过一个Clusterfile来执行:

Kubefile: a file that describes how to build a Sealer Image.

Sealer Image: like docker image, and it contains all the dependencies you need to deploy a cluster or applications(like container images, yaml files or helm chart).

Clusterfile: a file that describes how to run a Sealer Image.

在这里插入图片描述

Kubefile

Kubefile类似Dockerfile,包含一系列构建cluster镜像的指令。

  • FROM {img-name}:指定基础镜像,且是Kubefile中的第一条指令;
  • COPY {SRC} {DST}:复制内容(文件、文件夹)到rootfs下;
    # copy mysql.yamltorootfs/mysql.yaml
    COPY mysql.yaml .
    # copy directory apollo to rootfs/charts/apollo
    COPY apollo charts
    
  • LAUNCH {command args ...}:指定在sealer run时启动的app列表;
  • CMDS {command args ...}:命令会在sealer run时执行,常用于启动程序或配置集群;
    • 有多条时,只有最后一条生效;
    • 与LAUNCH冲突,推荐用LAUNCH;
    • CMDS ["kubectl apply -f recommended.yaml","echo success"]
  • APP APP_NAME scheme:path1 scheme:path2:定义一个App,后面通过Launch来运行;
    # define a business app which contains a local shell file install.sh
    APP business local://install.sh
    
  • APPCMDS APP_NAME ["executable","param1","param2"]:为应用指定命令,其context是指定app的目录;
    • 为某个应用指定多个APPCMDS时,只有最后一条生效;
    • 只有在LAUNCH指令有此应用时,此应用的APPCMDS才生效;
    • 没有为应用指定APPCMDS,会有缺省的命令行为:
      • Helm Chart
      • K8S YAML
      • Linux Shell
  • LABEL <key>=<value> <key>=<value> <key>=<value> ...:添加标签;
    • 标签会被子image继承;
  • CNI CNI_NAME scheme:path1 scheme:path2:网络接口CNI插件;
  • CSI CSI_NAME scheme:path1 scheme:path2:容器存储接口CSI插件;

APP的schema支持:

  • local://{relative-path}:相对编译上下文(目录)的相对路径;Path支持的类型:
    • .sh:shell脚本;
    • .yml/.yaml:kubernetes YAML文件;
    • Helm Chart目录
  • http(s)://{file-url}:远程地址,build时会自动下载;
APP nginx local://nginx.yaml
APPCMDS nginx ["kubectl apply -f nginx.yaml -n nginx-namespace"]
LAUNCH ["nginx"]

sealer build -f kubefile -t my-snap:1.0.0 .

Sealer Image

通过sealer images可查看本地镜像;sealer rmi {img}可删除镜像;

Sealer Image是包含应用运行与发行所必须依赖的只读文件。
sealer build -f Kubefile -t my-app:1.0.0 --type=app-installer .

  • --type=kube-installer:为默认值,包中包含集群信息;
  • --type=app-installer:包中只包含APP信息(安装时若集群不存在,则失败);

构建一个包的流程:

  • 创建kubefile,如下
    FROM sealerio/kubernetes:v1.20.4
    #APP myApp local://myApp.yaml
    #LAUNCH ["myApp"]
    COPY myApp.yaml manifest
    CMDS ["kubectl apply -f manifest/myApp.yaml"]
    
  • 构建:sealer build -f kubefile -t my-app:1.0.0 .
  • 打包:sealer save -o myapp.tar my-app:1.0.0
  • 加载:sealer load -i myapp.tar

特殊目录:

  • manifests目录: sealer build的时候会解析这个目录下面的所有yaml文件并把里面的容器镜像地址提取出来,然后拉取。用户标准的kubernetes yaml不放在这个目录的话不会处理;
  • charts目录: sealer会执行helm template的能力,然后提取chart中的容器镜像地址,拉取并存储到集群镜像中。chart不拷贝到这个目录下不处理;
  • manifests/imageList: 文件里面是其它需要拉取的镜像地址列表,比如镜像地址在CRD中sealer解析不到,那就需要手动配置到这个文件中。

Sealer会把用户自定义的kubeadm配置文件(与默认文件($Rootfs/etc/kubeadm.yml)合并(只覆盖对应字段):

  • merge规则:Clusterfile中的配置 > 集群镜像中的配置 > 默认kubeadm配置(硬编码在代码中);
  • 自定义文件放置:COPY kubeadm.yml etc

Clusterfile

Clusterfile用于描述集群状态,如节点信息、配置,以及一些列启动配置参数。

apiVersion: sealer.cloud/v2
kind: Cluster
metadata:
  name: default-kubernetes-cluster
spec:
  image: docker.io/sealerio/kubernetes:v1.22.15
  ssh:
    passwd: xxx
    port: "2222"
  hosts:
    - ips: [ 192.168.0.2 ] # this master ssh port is different with others.
      roles: [ master ]
      ssh:
        passwd: yyy
        port: "22"
    - ips: [ 192.168.0.3,192.168.0.4 ]
      roles: [ master ]
    - ips: [ 192.168.0.5 ]
      roles: [ node ]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器部署SpringBoot+Vue项目(宝塔面板傻瓜式操作)

准备工作 一台服务器(我用的是阿里云)SpringBoot项目的jar包Vue项目的dist包 一、购买服务器 然后重置实例密码。 远程连接 登陆成功后安装宝塔面板 二、安装宝塔面板(无账号的注册一个账号) 地址&#xff1a;https://www.bt.cn/new/download.html 选择对应的镜像、不知道…

简易项目:servlet实现个人博客(超级详细)

成品展示博客登录页2.博客预览页博客详情页4.博客编写发布页5.可访问网址http://43.143.248.172:8080/blog_system/login.html用户名:zhangsan密码:123确认需求1.1核心功能1.1.1用户登陆和注销这一部分需要满足用户的登入和注销操作&#xff0c;同时需要判断用户名和密码的正确…

【ArcGIS Pro二次开发】(8):图层(Layer)的基本操作

在ArcGIS中&#xff0c;图层(Layer)是地理数据的集合。可以在 ArcGIS Pro中将很多不同类型的数据表示为图层。 图层通常包含矢量&#xff08;要素&#xff09;或栅格数据。 图层的类型取决于您拥有的数据类型、其基础结构以及其他一些变量。 一、图层(Layer)的基本操作示例 以…

华为OD机试题,用 Java 解【矩阵最大值】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

python-在macOS上安装python库 xlwings失败的解决方式

问题&#xff1a;python库 xlwings安装失败 今天&#xff0c;看到网上有wlwings库&#xff0c;可以用来处理excel表格&#xff0c;立刻想试一试。结果&#xff0c;安装这个python库失败了。经过排查&#xff0c;问题解决。 安装过程和错误提示&#xff1a; 我用最简单直接的…

【linux】进程间通信——system V

system V一、system V介绍二 、共享内存2.1 共享内存的原理2.2 共享内存接口2.2.1 创建共享内存shmget2.2.2 查看IPC资源2.2.3 共享内存的控制shmctl2.2.4 共享内存的关联shmat2.2.5 共享内存的去关联shmdt2.3 进程间通信2.4 共享内存的特性2.5 共享内存的大小三、消息队列3.1 …

【Virtualization】Windows11安装VMware Workstation后异常处置

安装环境 Windows 11 专业版 22H2 build 22621.1265 VMware Workstation 17 Pro 17.0.0 build-20800274 存在问题 原因分析 1、BIOS未开启虚拟化。 2、操作系统启用的虚拟化与Workstation冲突。 3、操作系统启用内核隔离-内存完整性保护。 处置思路 1、打开“资源管理器”…

MyBatis学习笔记(六) —— MyBatis的各种查询功能

6、MyBatis的各种查询功能 6.1、查询一个实体类对象 SelectMapper.java接口 /*** 根据用户id查询用户信息* param id* return*/ User getUserById(Param("id") int id);SelectMapper.xml <!--User getUserById(Param("id") int id)--> <selec…

第十三届蓝桥杯国赛 C++ B 组 J 题——搬砖(AC)

目录1.搬砖1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3.Ac_code1.搬砖 1.题目描述 这天&#xff0c;小明在搬砖。 他一共有 nnn 块砖, 他发现第 iii 砖的重量为 wiw_{i}wi​, 价值为 viv_{i}vi​ 。他突然想从这些 砖中选一些出来从…

JVM的内存结构

一.引言 1.什么是 JVM &#xff1f; 1&#xff09;定义&#xff1a; Java Virtual Machine - java 程序的运行环境&#xff08;java 二进制字节码的运行环境&#xff09; 2&#xff09;好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能…

在服务器上指定GPU跑代码

一、准备工作 查看GPU状态和信息&#xff0c;找到空闲的GPU&#xff1a; nvidia-smi 二、指定单GPU 从图中 Processes 表格我们可以发现0、1、2号GPU均是可以利用的。于是我们可以在python文件中加入以下代码&#xff0c;表示使用0号GPU&#xff1a; import os os.environ…

【数通网络交换基础梳理2】三层设备、网关、ARP表、VLAN、路由表及跨网段路由下一跳转发原理

一、不同网段如何通讯 同网段可以依靠二层交换机通讯&#xff0c;网络中存在多个网段192.168.1.1/24 172.16.1.1/24 173.73.1.1/24情况下如何互相通讯&#xff1f;上节留一下的问题&#xff0c;这节继续讲解。 1、这里以Ping命令讲解&#xff0c;PC1 ping173.73.1.2&#xf…

2023中职组网络安全技能竞赛——代码审计解析(超级详细)

代码审计:需求环境可私信博主 任务环境说明: 服务器场景:PYsystem0035服务器场景操作系统:未知服务器场景用户名:未知 密码:未知在渗透机Kali Linux中访问靶机服务器Web页面,注册账号并登陆,找到存在XSS执行漏洞的页面,将该页面中存在XSS执行漏洞的对象名作为FLAG提…

关于永中Office(永中办公软件)不认Windows系统安装的字体的解决办法

一位网友的电脑最近安装了永中Office软件&#xff0c;在使用过程中发现无法使用方正小标宋简体、仿宋GB2312等字体&#xff0c;这些字体在之前所用的微软Office中可以正常使用。他根据网上查到的一些的资料&#xff0c;将这些字体文件复制到C:\Program Files\Yozosoft\Yozo_Off…

【Java】CAS锁

一、什么是CAS机制&#xff08;compare and swap&#xff09; 1.概述 CAS的全称为Compare-And-Swap&#xff0c;直译就是对比交换。是一条CPU的原子指令&#xff0c;其作用是让CPU先进行比较两个值是否相等&#xff0c;然后原子地更新某个位置的值。经过调查发现&#xff0c;…

测试——基本概念

概念 测试和调试有以下几点区别&#xff1a; 测试是测试人员进行的工作&#xff0c;调试是开发人员调试是发现并解决问题&#xff0c;测试只是发现问题测试贯穿于整个项目的生命周期&#xff0c;而调试主要在编码阶段 测试人员一般有如下的工作&#xff1a; 需求分析&#x…

Spring MVC 源码- ViewResolver 组件

ViewResolver 组件ViewResolver 组件&#xff0c;视图解析器&#xff0c;根据视图名和国际化&#xff0c;获得最终的视图 View 对象回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 ViewResolver 组件&#xff0c;可以回到《一个请求响应的旅行过程》中的 …

进程地址空间(虚拟地址空间)

目录 引入问题 测试代码 引入地址空间 故事1&#xff1a; 故事二&#xff1a; 解决问题 为什么有虚拟地址空间 扩展 扩展1&#xff08;没有地址空间&#xff0c;OS如何工作&#xff09; 扩展2 &#xff08;代码只读深入了解&#xff09; 扩展3&#xff08;malloc本质…

0 初识Kotlin

0 基本介绍 相信很多开发者对Kotlin还是比较陌生的。 Kotlin是一种新型的编程语言&#xff0c;由JetBrains公司开发与设计&#xff0c;在2012年开源&#xff0c; 但没引起什么注意。 直到2017年google宣布将Kotlin作为Android开发的首选语言&#xff0c;Kotlin才开始大放异彩。…

基于MATLAB的MIMO预编码设计:优化迫零算法(附完整代码与分析)

目录 一.介绍 二. 对比本方案优化后的迫零算法与原始的迫零算法 三. 源代码 四. 运行结果及分析 4.1 天线数为8 4.2 天线数为128 一.介绍 图中“RF Chain” 全称为Radio Frequency Chain&#xff0c;代表射频链路。 此MIMO预编码包含了基带预编码W&#xff08;改变幅度和…