Creating applications from Image

目录

Prerequisites

获取镜像地址。镜像来源可以是平台管理员通过工具链集成的镜像仓库,也可以是第三方平台的镜像仓库。

  • 对于前者,管理员通常会将镜像仓库分配给您的项目,您可以使用其中的镜像。如果找不到所需的镜像仓库,请联系管理员进行分配。

  • 如果是第三方平台的镜像仓库,请确保当前集群可以直接拉取该镜像。

Procedure 1 - Workloads

  1. Container Platform 中,左侧导航栏进入 Applications > Applications

  2. 点击 Create

  3. 选择 Create from Image 作为创建方式。

  4. 选择输入镜像,点击 Confirm

INFO

注意:使用集成到 Web 控制台的镜像仓库中的镜像时,可以通过 Already Integrated 进行筛选。Integration Project Name 例如 images (docker-registry-projectname),其中包含该 Web 控制台中的项目名 projectname 以及镜像仓库中的项目名 containers。

  1. 按照以下说明配置相关参数。

Workload 1 - 配置基础信息

Workload > Basic Info 部分,配置工作负载的声明式参数

参数说明
Model根据需求选择工作负载类型:
Replicas定义 Deployment 中 Pod 副本的期望数量(默认:1)。根据工作负载需求调整。
More > Update Strategy配置 rollingUpdate 策略以实现零停机部署:
Max surge (maxSurge):
  • 更新期间允许超过期望副本数的最大 Pod 数量。
  • 支持绝对值(如 2)或百分比(如 20%)。
  • 百分比计算方式:ceil(current_replicas × percentage)
  • 示例:10 个副本时,4.1 → 5
Max unavailable (maxUnavailable):
  • 更新期间允许不可用的最大 Pod 数量。
  • 百分比值不可超过 100%
  • 百分比计算方式:floor(current_replicas × percentage)
  • 示例:10 个副本时,4.9 → 4
注意事项
1. 默认值:若未显式设置,maxSurge=1maxUnavailable=1
2. 非运行状态的 Pod(如 Pending/CrashLoopBackOff)视为不可用。
3. 同时约束
  • maxSurgemaxUnavailable 不能同时为 00%
  • 若两者百分比均计算为 0,Kubernetes 会强制设置 maxUnavailable=1 以保证更新进度。
示例
对于 10 个副本的 Deployment:
  • maxSurge=2 → 更新期间总 Pod 数量为 10 + 2 = 12
  • maxUnavailable=3 → 最小可用 Pod 数量为 10 - 3 = 7
  • 确保在允许受控滚动的同时保持可用性。

Workload 2 - 配置 Pod

注意:在混合架构集群中部署单架构镜像时,请确保为 Pod 调度配置正确的节点亲和规则

  1. Pod 部分,配置容器运行时参数及生命周期管理:

    参数说明
    Volumes挂载持久卷到容器。支持的卷类型包括 PVCConfigMapSecretemptyDirhostPath 等。具体实现细节请参见存储卷挂载说明
    Image Credential仅在从第三方镜像仓库拉取镜像(通过手动输入镜像 URL)时必填。
    注意:平台集成的镜像仓库中的镜像会自动继承关联的 Secret。
    More > Close Grace PeriodPod 接收到终止信号后允许的优雅关闭时间(默认:30s)。
    - 在此期间,Pod 会完成正在处理的请求并释放资源。
    - 设置为 0 会强制立即删除(SIGKILL),可能导致请求中断。
  1. 节点亲和规则
参数说明
More > Node Selector限制 Pod 调度到具有特定标签的节点(例如 kubernetes.io/os: linux)。
节点操作系统选择器
More > Affinity基于已有 Pod 定义细粒度调度规则。

Pod 亲和类型
  • Pod 亲和:将新 Pod 调度到运行特定 Pod 的节点(同拓扑域)。
  • Pod 反亲和:避免新 Pod 与特定 Pod 共置于同一节点。

执行模式
  • RequiredDuringSchedulingIgnoredDuringExecution:仅当规则满足时才调度 Pod。
  • PreferredDuringSchedulingIgnoredDuringExecution:优先选择满足规则的节点,但允许例外。

配置字段
  • topologyKey:定义拓扑域的节点标签(默认:kubernetes.io/hostname)。
  • labelSelector:通过标签查询筛选目标 Pod。
  1. 网络配置
    • Kube-OVN
      参数说明
      Bandwidth Limits对 Pod 网络流量实施 QoS:
      • 出站速率限制:最大出站流量速率(例如 10Mbps)。
      • 入站速率限制:最大入站流量速率。
      Subnet从预定义子网池分配 IP。若未指定,使用命名空间默认子网。
      Static IP Address绑定持久 IP 地址到 Pod:
      • 多个 Deployment 中的 Pod 可申领相同 IP,但同一时间仅允许一个 Pod 使用。
      • 关键:静态 IP 数量必须大于等于 Pod 副本数。
    • Calico
      参数说明
      Static IP Address分配固定 IP,严格唯一:
      • 每个 IP 在集群中只能绑定到一个 Pod
      • 关键:静态 IP 数量必须大于等于 Pod 副本数。

Workload 3 - 配置容器

  1. Container 部分,参照以下说明配置相关信息。

    参数说明
    Resource Requests & Limits
    • Requests:容器运行所需的最小 CPU/内存。
    • Limits:容器运行时允许的最大 CPU/内存。单位定义详见资源单位
    命名空间超售比
    • 无超售比
      若存在命名空间资源配额,容器请求/限制继承命名空间默认值(可修改)。
      无命名空间配额时,无默认值,自定义请求。
    • 有超售比
      请求自动计算为 Limits / Overcommit ratio(不可修改)。
    约束条件
    • 请求 ≤ 限制 ≤ 命名空间配额最大值。
    • 超售比变更需重建 Pod 生效。
    • 超售比启用时禁用手动请求配置。
    • 无命名空间配额则无容器资源限制。
    Extended Resources配置集群可用的扩展资源(如 vGPU、pGPU)。
    Volume Mount持久存储配置。详见存储卷挂载说明
    操作
    • 已有 Pod 卷:点击 Add
    • 无 Pod 卷:点击 Add & Mount
    参数
    • mountPath:容器文件系统路径(如 /data
    • subPath:卷内相对文件/目录路径。
      对于 ConfigMap/Secret:选择具体键
    • readOnly:只读挂载(默认读写)
    参考 Kubernetes 卷
    Port暴露容器端口。
    示例:暴露 TCP 端口 6379,名称为 redis
    字段
    • protocol:TCP/UDP
    • Port:暴露端口(如 6379
    • name:符合 DNS 规范的标识符(如 redis
    Startup Commands & Arguments覆盖默认 ENTRYPOINT/CMD:
    示例 1:执行 top -b
    - Command["top", "-b"]
    - Command:["top"],Args:["-b"]
    示例 2:输出 $MESSAGE
    /bin/sh -c "while true; do echo $(MESSAGE); sleep 10; done"
    详见 定义命令
    More > Environment Variables
    • 静态值:直接键值对
    • 动态值:引用 ConfigMap/Secret 键,Pod 字段(fieldRef),资源指标(resourceFieldRef
    注意:环境变量会覆盖镜像或配置文件中的设置。
    More > Referenced ConfigMap注入整个 ConfigMap/Secret 作为环境变量。支持的 Secret 类型:Opaquekubernetes.io/basic-auth
    More > Health Checks
    • Liveness Probe:检测容器健康状态(失败则重启)
    • Readiness Probe:检测服务可用性(失败则从 Endpoints 移除)
    详见健康检查参数
    More > Log File配置日志路径:
    - 默认收集 stdout
    - 文件模式:如 /var/log/*.log
    要求
    • 存储驱动 overlay2:默认支持
    • devicemapper:需手动挂载 EmptyDir 到日志目录
    • Windows 节点:确保父目录已挂载(如 c:/a 对应 c:/a/b/c/*.log
    More > Exclude Log File排除特定日志收集(如 /var/log/aaa.log)。
    More > Execute before Stopping容器终止前执行命令。
    示例echo "stop"
    注意:命令执行时间须短于 Pod 的 terminationGracePeriodSeconds
  2. 点击右上角 Add ContainerAdd Init Container

    参见 Init Containers。 Init Container:

    1. 在应用容器之前启动(顺序执行)。
    2. 完成后释放资源。
    3. 允许删除条件:
      • Pod 有多个应用容器且至少一个 Init Container。
      • 单应用容器 Pod 不允许删除 Init Container。
  3. 点击 Create

Procedure 2 - Services

参数说明
ServiceKubernetes Service,为集群中运行的应用暴露单一外部访问端点,即使工作负载分布在多个后端。具体参数说明请参见创建 Service

注意:应用下创建的内部路由默认名称前缀为计算组件名称。如果计算组件类型(部署模式)为 StatefulSet,建议不要更改内部路由(工作负载名称)的默认名称,否则可能导致工作负载访问异常。

Procedure 3 - Ingress

参数说明
IngressKubernetes Ingress,通过协议感知的配置机制,使 HTTP(或 HTTPS)网络服务可用,支持 URI、主机名、路径等 Web 概念。Ingress 允许基于 Kubernetes API 定义的规则,将流量映射到不同后端。详细参数说明请参见创建 Ingress

注意:应用下创建 Ingress 时使用的 Service 必须是当前应用下创建的资源,且确保该 Service 关联应用下的工作负载,否则工作负载的服务发现和访问将失败。
  1. 点击 Create

Application Management Operations

修改应用配置时,可使用以下任一方式:

  1. 点击应用列表右侧的竖向省略号(⋮)。
  2. 在应用详情页面右上角选择 Actions
操作说明
Update
  • 更新:仅修改目标工作负载,使用其定义的更新策略(以 Deployment 策略为例)。保留现有副本数和滚动配置。
  • 强制更新:触发应用全量滚动,使用各组件的更新策略。
    1. 适用场景
    • 批量配置变更需立即全局生效(如作为环境变量引用的 ConfigMap/Secret 更新)。
    • 关键安全更新需协调组件重启。
    2. 警告注意
    • 大规模重启可能导致短暂服务降级。
    • 生产环境使用前需验证业务连续性。
  • 网络影响
    • Ingress 规则删除:若 LoadBalancer Service 使用默认端口,且存活路由规则引用应用组件,外部访问仍可通过 LB_IP:NodePort 访问。
      完全终止外部访问需删除 Service。
    • Service 删除:不可逆,导致应用组件网络连接丢失。相关 Ingress 规则失效,尽管 API 对象仍存在。
Delete
  • 级联删除
    1. 删除所有子资源,包括 Deployment、Service 和 Ingress 规则。
    2. Persistent Volume Claim(PVC)遵循 StorageClass 中定义的保留策略。
  • 删除前检查清单
    1. 确认关联 Service 无活跃流量。
    2. 确认有状态组件数据已备份。
    3. 使用 kubectl describe ownerReferences 检查依赖资源关系。

Reference Information​

存储卷挂载说明

类型用途
Persistent Volume Claim绑定已有的 PVC 以请求持久存储。

注意:仅可选择已绑定(关联 PV)的 PVC。未绑定 PVC 会导致 Pod 创建失败。
ConfigMap挂载完整或部分 ConfigMap 数据为文件:
  • 完整 ConfigMap:在挂载路径下创建以键名命名的文件
  • 子路径选择:挂载特定键(如 my.cnf
Secret挂载完整或部分 Secret 数据为文件:
  • 完整 Secret:在挂载路径下创建以键名命名的文件
  • 子路径选择:挂载特定键(如 tls.crt
Ephemeral Volumes集群动态提供的临时卷,具备:
  • 动态配置
  • 生命周期与 Pod 绑定
  • 支持声明式配置

使用场景:临时数据存储。详见临时卷
Empty DirectoryPod 内容器间共享的临时存储:
- Pod 启动时在节点创建
- Pod 删除时删除

使用场景:容器间文件共享、临时数据存储。详见EmptyDir
Host Path挂载宿主机目录(必须以 / 开头,如 /volumepath)。

健康检查参数

通用参数

参数说明
Initial Delay启动探针前的宽限时间(秒)。默认:300
Period探针间隔时间(1-120秒)。默认:60
Timeout探针超时时间(1-300秒)。默认:30
Success Threshold标记健康所需的最小连续成功次数。默认:0
Failure Threshold触发动作的最大连续失败次数:
- 0:禁用失败触发动作
- 默认:连续 5 次失败触发容器重启。

协议特定参数

参数适用协议说明
ProtocolHTTP/HTTPS健康检查协议
PortHTTP/HTTPS/TCP探测目标容器端口。
PathHTTP/HTTPS端点路径(如 /healthz)。
HTTP HeadersHTTP/HTTPS自定义请求头(添加键值对)。
CommandEXEC容器内可执行的检查命令(如 sh -c "curl -I localhost:8080 | grep OK")。
注意:需转义特殊字符并测试命令有效性。