在运行中始终不保存任何数据或状态的工作负载称为无状态负载,对应 Kubernetes 中的 Deployment。您可以在镜像在集群中创建一个无状态负载。本文描述了如何创建无状态负载。
在基本信息页面,参照以下说明配置负载的基本信息,然后单击下一步:容器配置。
配置项 | 描述 |
---|---|
名称 | 配置无状态负载的名称。在同一命名空间下,工作负载的名称须唯一。命名规则如下:
|
命名空间 | 选择无状态负载部署的命名空间。可以选择已创建的命名空间或集群默认创建的命名空间。命名空间详情,请参见命名空间概述。 |
实例个数 | 输入无状态负载的 Pod 实例的个数。 |
标签 | 可选。设置无状态负载的标签,包含标签的键和值。标签对应 Kubernetes 中的 Label,用于标识该无状态负载的特点,便于 Kubernetes 筛选目标无状态负载。 |
注解 | 可选。设置无状态负载的注解,包含注解的键和值。注解对应 Kubernetes 中的 Annotation,主要记录应用部署、安全策略、调度策略等相关的附加信息,不用于标识和区分资源。 |
在容器配置页面,参照以下说明配置容器参数,然后单击下一步:高级配置。
说明
说明:如需添加多个容器,请单击页面上方的添加容器。
配置项 | 描述 | |
---|---|---|
基本信息 | 容器名称 | 输入容器名称。同一个工作负载下,容器名称须唯一。命名规则如下:
|
镜像 | 选择容器使用的镜像。支持使用镜像仓库(CR) 中的镜像。 | |
镜像版本 | 选择镜像的版本。如不选择,则默认拉取 说明 注意: | |
镜像仓库密钥 | 选择镜像仓库密钥。 说明 注意:
如无可用镜像仓库密钥,单击创建仓库密钥、参照以下说明配置仓库密钥:
| |
资源配额 | 可选。您可以按照业务需求,在容器维度配置 CPU 和内存的上下限,保障容器的健康运行。若不设置,则表示容器资源配额无限制。
说明 若您有 GPU 资源使用需求,请提交工单或联系客服。 | |
添加存储卷 | 单击 添加卷,添加数据卷。卷(Volume)是容器中存储数据的位置。为一类数据分配存储资源前,需要先在容器中指定待存储数据的目录。对不同类型的存储卷说明如下: | |
挂载存储卷 | 单击添加挂载卷,为已创建的卷分配存储资源,并分配读写权限。其中,支持通过 subPath 方式挂载卷的子目录;支持通过 subPathExpr 方式挂载卷的扩展路径。 | |
特权级容器 | 默认不开启。开启后,该容器被设置为特权级容器。特权级容器可以访问宿主上的所有设备以及访问宿主上运行的所有进程。支持部署在 Linux 系统上的容器控制网络堆栈或访问设备。 | |
Init容器 | 默认不开启。开启后,该容器被设置为 Init 容器。Init 容器是 Pod 中的一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括仅在安装过程中使用的工具(例如 python、dig)和代码,避免在应用容器中的重复部署,提升应用镜像的安全性。 说明 说明:Init 容器不支持设置生命周期管理中的启动后处理、停止前处理,不支持开启健康检查。 | |
容器端口 | 端口 | 单击添加端口,配置容器中应用对容器外服务的连接端口,包括支持的协议(TCP、UDP)和端口号。 |
环境变量 | 环境变量 | 单击添加环境变量,配置环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。各类型的环境变量说明如下:
|
生命周期 | 启动命令 | 启动命令:输入容器启动前运行的命令。 |
容器启动后操作 | 选择容器启动后的操作。可选择执行命令和不操作。 | |
容器停止前操作 | 选择容器停止前的操作。可选择执行命令和不操作。 | |
健康检查 | 健康检查 | 选择是否开启健康检查功能。支持存活检查、就绪检查、启动检查。支持以下几种检查方式:
|
在高级配置页面,参照以下说明,配置相关参数,然后单击确定。
配置项 | 描述 | |
---|---|---|
实例配置 | 优雅退出 | 设置 Pod 实例终止前的缓冲时间,默认为 30 秒。当时间设置为 0 秒时,表示立即删除实例。 |
更新策略 | 配置 Pod 实例的更新策略。支持以下策略:
| |
最大不可用 | 指定滚动更新缩容过程中,无状态负载中可用的 Pod 实例的数量的下限。更新策略设置为滚动更新时,需配置该参数。支持基于百分比或具体数值配置实例的最大不可用数量。使用百分比时,会将计算结果转换成绝对值并去除小数部分。最大不可用 和 最大超量 不能同时为 0。 | |
最大超量 | 指定滚动更新扩容过程中,无状态负载中可用的 Pod 实例的数量的上限。更新策略设置为滚动更新时,需配置该参数。支持基于百分比或具体数值配置实例的最大超量。使用百分比时,会将计算结果转换成绝对值并去除小数部分。最大不可用 和 最大超量 不能同时为 0。 | |
DNS 策略 | 配置实例的DNS策略。支持以下DNS策略:
| |
调度策略 | 节点亲和调度 | 配置工作负载和节点的亲和性调度。包括:强制调度和优先调度。
|
实例亲和调度 | 配置工作负载和其他实例的亲和性调度。包括:强制调度和优先调度。
| |
实例反亲和调度 | 配置工作负载和其他实例的反亲和性调度。包括:强制调度和优先调度。
| |
节点污点调度 | 配置节点污点调度。通过匹配标签进行调度选择,可以设置 2 种匹配关系(equal, exists)。 | |
实例标签和注解 | 实例标签 | 设置 Pod 实例的标签,包含标签的键和值。标签对应 Kubernetes 中的 Label,用于标识 Pod 实例的特点,便于 Kubernetes 筛选目标 Pod 实例。您可以为 Pod 实例添加多个标签。 |
实例注解 | 设置 Pod 实例的注解,包含注解的键和值。注解对应 Kubernetes 中的 Annotation,主要记录应用部署、安全策略、调度策略等相关的附加信息,不用于标识和区分资源。您可以为 Pod 实例添加多个注解。 |
说明
通过 kubectl 命令行创建无状态负载前请确保:
已安装 kubectl 工具到本地。具体操作说明,请参见 安装和设置 kubectl。
已通过 kubectl 连接目标集群。具体操作说明,请参见 连接边缘集群。
创建一个工作负载的YAML文件。本节以nginx工作负载为例,示例文件nginx-deployment.yaml
代码如下:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment # 无状态负载名称 namespace: users-namespace # 无状态负载所在的命名空间 spec: replicas: 2 # 无状态负载的副本数 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx # 容器名称 image: nginx:1.14.2 # 容器镜像的名称和tag ports: - containerPort: 80 # 容器开放的端口
执行以下命令,创建工作负载。
kubectl apply -f nginx-deployment.yaml