部署容器
ECSM 支持用户将容器镜像部署在多个计算节点上以服务的形式对容器应用进行管理,并且可以使用相同的配置参数启动容器,方便用户对业务状态进行直观地观察与管理。
前提条件
操作步骤
步骤 1:设置基本信息
在左侧导航栏中,单击部署管理 > 容器部署,进入容器部署页面。
在容器部署页面,单击服务列表左上方的新建,进入新建容器部署页面的基本信息界面。
在基本信息页面,参考表 1 完成相关参数设置。
表 1 基本信息参数说明 参数 描述 示例 服务名称 服务的名称,可以自定义,名称不能重复 example 使用镜像 选择部署容器需要的镜像,包括 Linux 镜像和 SylixOS 镜像。两种镜像对应的节点和资源配置参数不同,Linux 镜像只能部署在 Linux 计算机节点上,SylixOS 镜像只能部署在 SylixOS 计算机节点上 - 镜像拉取策略 预先设置镜像的拉取策略,各策略说明如下: - 总是拉取(Always):总是从 ECSM 镜像仓库拉取镜像
- 若不存在则拉取(If Not Present):如果待部署节点本地有此镜像,则使用本地镜像;如果待部署节点本地没有此镜像,则从 ECSM 镜像仓库拉取
- 从不拉取(Never):只使用待部署节点的本地镜像,从不向 ECSM 仓库拉取镜像
总是拉取(Always) 服务自动更新策略 预先设置服务的自动更新策略,各策略说明如下: - 不自动更新(Never):从不自动更新服务
- 新镜像版本较大时更新(Larger):当与此镜像名称相同的新镜像被上传或推送到 ECSM 镜像仓库时,ECSM 将根据 Semantic Versioning 语义化版本规范对比两个镜像的版本大小,如果新镜像的版本较大,则自动更新服务,并将服务镜像替换为高版本的镜像
- 总是使用新镜像更新 (Always):当与此镜像名称相同的新镜像被上传或推送到 ECSM 镜像仓库时,将自动使用新镜像更新服务
不自动更新(Never) 部署后运行服务 设置部署完服务后是否自动运行服务 - 单击下一步,进入选择节点界面。
步骤 2:选择节点
在选择节点界面,可以通过静态选择或动态选择的方式选择节点。其中动态选择可以通过设置实例数控制服务中部署的容器实例数量,如果是多节点多实例,则系统会根据用户选择的节点和设置的实例数进行资源调度,优先调度节点上运行容器实例少且剩余内存多的节点去处理作业任务。两种方式的具体操作如下:
静态选择:单击静态选择,选择容器要部署的节点,并单击下一步,进入资源配置界面。
动态选择:单击动态选择,选择容器要部署的节点,并设置实例数,然后单击下一步,进入资源配置界面。
步骤 3:设置资源配置参数
在资源配置界面,设置容器的资源配置参数。Linux 和 SylixOS 镜像的配置参数各不相同,请参考 Linux 镜像资源配置 或 SylixOS 镜像资源配置 完成参数设置,并单击部署,进入完成界面,并跳转至容器部署详情页。
Linux 镜像资源配置
基础配置
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
- | 容器名称(必填) | 容器的名称,由大小写字母、数字及特殊字符 “/” “-”“_”“.”组成,且不能以特殊字符“-”“_”“.”开头,如果包含“/”,则必须以“/”开头,且不能出现 2 个“/”。同一节点的容器名称不能重复 | example |
- | 主机名称(必填) | 容器显示的主机名 | example |
- | 启动参数 (必填) | 镜像文件中“config.json”中指定的“cmd”的值,如果没有“cmd”,需自定义 | ["/usr/sbin/nginx","-g","daemon off;"] 或 /bin/echo "hello ecsm" |
- | 环境变量(必填) | 容器启动时需要设置的环境变量,以 Key 和 Value 形式输入,用分号间隔 | PATH=/usr/local/sbin: /usr/local/bin:/usr/sbin: /usr/bin:/sbin:/bin;NGINX _VERSION=1.21.5;NJS_VE RSION=0.7.1;PKG_RELEAS E=1~bullseye |
重启策略(必填) | no | 当容器停止运行时,不重启 | no |
on-failure | 当容器非正常停止运行时,自动重启 | on-failure | |
always | 当容器停止运行时,自动重启 | always | |
unless-stopped | 当容器停止运行时,自动重启,除了在 Docker 守护进程启动时就已经停止的容器 | unless-stopped |
网络设置
- 当网络类型选择 bridge 时,参数配置如下表:
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
网络类型(必填) | bridge | 使用 bridge 模式,会为每一个容器分配、设置 IP 地址,并将容器连接到一个 docker0 虚拟网桥,通过 docker0 网桥以及 Iptables nat 表配置与宿主机通信 | bridge |
端口映射(可选) | 协议(必填) | 选择容器的网络传输协议,可选择 TCP 或 UDP,TCP 传输准确性较高,UDP 传输实时性更优 | TCP |
主机端口(必填) | 从容器映射到主机的端口,可通过访问主机端口访问容器 | 80 | |
容器端口(必填) | 路由服务建立的 TCP 或 UDP 代理,用于容器间路由通信 | 80 | |
- | DNS(可选) | 指定 DNS 服务器地址 | - |
- | DNS 搜索域名(可选) | 当容器访问一个不包括完全域名的主机名时,在该主机名后面添加 dns-search 指定的域名后缀,例如容器访问 centos-1,dns-search 配置的是 example.com,则会解析成 centos-1.example.com | example.com |
- 当网络类型选择 host 时,参数配置如下表:
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
网络类型(必填) | host | 使用 host 模式,容器会使用宿主机的 IP 和端口 | host |
- | DNS(可选) | 指定 DNS 服务器地址 | - |
- | DNS 搜索域名(可选) | 当容器访问一个不包括完全域名的主机名时,在该主机名后面添加 dns-search 指定的域名后缀,例如容器访问 centos-1,dns-search 配置的是 example.com,则会解析成 centos-1.example.com | example.com |
- 当网络类型选择 container 时,参数配置如下表:
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
网络类型(必填) | container | 使用 container 模式,创建的容器不会创建网卡,配置 IP,而是和一个指定的容器共享 IP 和端口范围 | container |
- | 目标容器(必填) | 目标容器的名称,此容器会使用目标容器的网络配置 | example |
- | DNS(可选) | 指定 DNS 服务器地址 | - |
- | DNS 搜索域名(可选) | 当容器访问一个不包括完全域名的主机名时,在该主机名后面添加 dns-search 指定的域名后缀,例如容器访问 centos-1,dns-search 配置的是 example.com,则会解析成 centos-1.example.com | example.com |
- 当网络类型选择 none 时,参数配置如下表:
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
网络类型(必填) | none | 使用 none 模式,则关闭了容器的网络功能,与宿主机和其他容器不通信 | none |
VSOA(可选)
当开启 VSOA 时,VSOA 参数配置如下:
参数 | 描述 | 示例 |
---|---|---|
服务密码(选填) | VSOA 服务的密码 | - |
自动映射端口(必填) | 设置是否开启自动映射端口。打开自动映射端口开关,则服务会自动识别节点上的可用端口并动态分配映射端口;关闭自动映射端口开关,则需要手动填写固定的映射端口 | - |
健康检查地址(选填) | VSOA 健康检查地址 | /health |
健康检查超时时间(选填) | 启动健康检查最大超时时间 | 3000 毫秒 |
重试次数(选填) | 启动健康检查最大重试次数 | 3 |
启动时间(选填) | 健康检查启动时间 | 5000 毫秒 |
间隔时间(选填) | 每次健康检查间隔时间 | 5000 毫秒 |
开启存活探针(选填) | 设置是否开启容器存活探针策略。如果开启,当容器健康时,若系统检测到容器内的 VSOA 服务不健康,则自动重启容器 | - |
资源配置
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
CPU | CPU 数(选填) | 为容器配置最大使用限制的 CPU 核数 | 1 |
允许执行的 CPU(选填) | 为容器配置可使用的 CPU,可以指定范围区间,如 1-3 表示允许核数为 1 到 3 区间的所有 CPU;也可以列举,如 1,2,3 表示允许核数为 1、2、3 的 CPU | 1-3 或 1,2,3 | |
CPU 份额(选填) | 容器所占总 CPU 核数的比例 | 10 | |
- | 内存(选填) | 容器可用内存 | 1 |
文件系统(可选) | 容器内的路径(必填) | 容器的虚拟路径 | /qt |
宿主机的路径(必填) | 宿主系统的真实物理路径 | /qt | |
权限(必填) | 挂载时的权限,包括:只读挂载,读、可执行挂载,读写挂载 | 只读 | |
设备(可选) | 主机地址(必填) | 宿主系统的设备地址(增加主机的一个设备到容器,即让容器拥有访问这个设备的权限) | - |
容器地址(必填) | 容器内设备挂载的地址 | - | |
权限(必填) | 容器内该设备的读写权限,read 代表只读,write 代表可写,mknod 代表创建块或字符设备等特殊文件的权限 | read |
容器健康检查
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
健康检查 | 检查命令(选填) | 健康检查命令 | HEALTHCHECK [选项] CMD [命令] 或 HEALTHCHECK NONE |
间隔时间(选填) | 健康检查间隔时间 | 30 秒 | |
重试次数(选填) | 健康检查重试次数 | 3 次 | |
启动时间(选填) | 健康检查启动时间 | 30 秒 | |
超时时间(选填) | 健康检查超时时间 | 30 秒 |
特权设置
参数 | 描述 | 示例 |
---|---|---|
特权运行(选填) | 打开特权运行,会直接赋予容器全部权限 | - |
SylixOS 镜像资源配置
参数 | 描述 | 示例 |
---|---|---|
启动参数(选填) | 为容器支持的默认启动参数配置,其格式如 spawnl 函数的参数列表 | /apps/ecs_demo |
主机名称(必填) | 容器显示的主机名 | sylixos_ecs |
基础资源
参数类型 | 参数 | 描述 | 示例 |
---|---|---|---|
CPU | 最高线程优先级(必填) | 容器内允许的线程最高优先级,当容器内期望创建的线程优先级高于 highestPrio 时,实际创建的线程优先级会被设定为 highestPrio | 160 |
最低线程优先级(必填) | 容器内允许的线程最低优先级,当容器内期望创建的线程优先级低于 lowestPrio 时,实际创建的线程优先级会被设定为 lowestPrio | 250 | |
内存 | 内存堆限制(必填) | 容器内的内存堆占用字节数 | 2097152 |
物理内存限制(必填) | 容器内的物理内存占用字节数 | 2097152 | |
磁盘 | 用量限制(必填) | 容器允许使用的磁盘空间最大用量,单位 MB | 2048 |
网络(必填) | TELNETD 服务 | TELNETD 端口 | 开启 |
FTPD 服务 | FTPD 端口 | 开启 | |
- | 环境变量(选填) | 容器启动时需要设置的环境变量,以 Key 和 Value 形式输入,用分号间隔 | PATH=/usr/bin:/bin:/usr /pkg/sbin:/sbin:/usr/ local/bin;TERM=vt100 |
文件系统(可选) | 容器内的路径(必填) | 容器的虚拟路径,当宿主环境的真实路径不存在时,容器内的路径会显示为无权限访问状态 | /qt |
宿主机的路径(必填) | 宿主系统的真实物理路径 | /qt | |
权限(必填) | 挂载时的权限,包括:只读挂载,读、可执行挂载,读写挂载 | 只读 | |
设备(可选) | 路径(必填) | 宿主系统的设备路径 | /dev/fb0 |
权限(必填) | 读、写和执行权限,可多选。容器设备的权限配置遵循“最后有效”原则,即若多条规则覆盖到同一设备,则以最后一条规则为有效规则 | 读 |
VSOA(可选)
当开启 VSOA 时,VSOA 参数配置如下:
参数 | 描述 | 示例 |
---|---|---|
服务密码(选填) | VSOA 服务的密码 | - |
自动映射端口(必填) | 设置是否开启自动映射端口。打开自动映射端口开关,则服务会自动识别节点上的可用端口并动态分配映射端口;关闭自动映射端口开关,则需要手动填写固定的映射端口 | - |
健康检查地址(选填) | VSOA 健康检查地址 | /health |
健康检查超时时间(选填) | 启动健康检查最大超时时间 | 3000 毫秒 |
重试次数(选填) | 启动健康检查最大重试次数 | 3 |
启动时间(选填) | 健康检查启动时间 | 5000 毫秒 |
间隔时间(选填) | 每次健康检查间隔时间 | 5000 毫秒 |
开启存活探针(选填) | 设置是否开启容器存活探针策略。如果开启,当容器健康时,若系统检测到容器内的 VSOA 服务不健康,则自动重启容器 | - |
内核对象
参数 | 描述 | 示例 |
---|---|---|
线程数量(必填) | 容器内允许的最大线程数量 | 300 |
线程池数量(必填) | 容器内允许的最大线程池数量 | 1 |
事件数量(必填) | 容器内允许的最大事件数量 | 800 |
事件集数量(必填) | 容器内允许的最大事件集数量 | 50 |
定长内存分区数量(必填) | 容器内允许的最大定长分区数量 | 5 |
变量内存区数量(必填) | 容器内允许的最大变长分区数量 | 5 |
消息队列数量(必填) | 容器内允许的最大消息队列数量 | 50 |
定时器数量(必填) | 容器内允许的最大定时器数量 | 5 |
步骤 4:完成容器部署
在容器部署详情页,可以查看此次容器部署的详细信息,并对整个服务或单个容器实例进行启动、停止、暂停、继续和销毁等操作。
单击顶部导航栏中的容器部署,返回容器部署主界面,新部署的服务会显示在服务列表中。