通过 Image 创建应用

前提条件

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

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

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

  • 通过 OCI Connector 选择镜像时,还需要为 Connector 代理选择一个镜像拉取 Secret,或者确认工作负载的 ServiceAccount 已经引用了该 Secret。请参阅 在 OCI Connector 中使用 ImagePullSecret

操作步骤 1 - 工作负载

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

  2. 单击 Create

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

  4. SelectInput 一个镜像,然后单击 Confirm

INFO

Note:当使用 web 控制台中集成的镜像仓库镜像时,可以通过 Already Integrated 进行筛选。Integration Project Name,例如镜像(registry-projectname),其中包含了此 web 控制台中的项目名称 projectname,以及镜像仓库中的项目名称 containers。

当使用私有镜像仓库中的镜像时,需要配置相应的镜像拉取 secret。更多信息,请参阅 向 ServiceAccount 添加 ImagePullSecrets

当使用 OCI Connector 时,可直接在 Pod 模板中使用 Connector 代理镜像拉取 Secret,或通过工作负载的 ServiceAccount 使用。该 Secret 必须用于对代理进行身份验证,而不是原始镜像仓库。

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

工作负载 1 - 配置基本信息

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

参数描述
Model按需选择工作负载:
Replicas定义 Deployment 中期望的 Pod 副本数(默认值:1)。可根据工作负载需求进行调整。
More > Update Strategy配置用于零停机发布的 rollingUpdate 策略:
Max surgemaxSurge):
  • 更新期间允许超过期望副本数的 Pod 最大数量。
  • 可接受绝对值(例如 2)或百分比(例如 20%)。
  • 百分比计算:ceil(current_replicas × percentage)
  • 示例:基于 10 个副本计算时,4.1 → 5
Max unavailablemaxUnavailable):
  • 更新期间允许临时不可用的 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
  • 这样既能保证可用性,又能实现受控发布。

工作负载 2 - 配置 Pod

Note:在混合架构集群中部署单架构镜像时,请确保已正确配置 节点亲和性规则 以用于 Pod 调度。

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

    参数描述
    Volumes将持久化卷挂载到容器。支持的卷类型包括 PVCConfigMapSecretemptyDirhostPath 等。有关实现细节,请参阅 存储卷挂载说明
    Image Credential对于私有镜像仓库中的镜像,请使用包含该仓库凭证的 Secret。对于 OCI Connector 镜像,请选择 Connector 代理镜像拉取 Secret,或使用已经引用该 Secret 的 ServiceAccount。来自平台集成镜像仓库的镜像仍会继承相关凭证。请参阅 在 OCI Connector 中使用 ImagePullSecret
    More > Close Grace PeriodPod 在收到终止信号后用于完成优雅关闭的时长(默认值:30s)。
    - 在此期间,Pod 会完成正在处理中的请求并释放资源。
    - 设置为 0 会强制立即删除(SIGKILL),这可能导致请求中断。
  1. 节点亲和性规则
参数描述
More > Node Selector将 Pod 约束到具有特定标签的节点上(例如 kubernetes.io/os: linux)。
节点 OS 选择器
More > Affinity基于现有 Pod 定义细粒度调度规则。

Pod 亲和性类型
  • Inter-Pod Affinity:将新 Pod 调度到承载特定 Pod 的节点上(同一拓扑域)。
  • Inter-Pod Anti-affinity:禁止新 Pod 与特定 Pod 共置。

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

配置字段
  • topologyKey:定义拓扑域的节点标签(默认值:kubernetes.io/hostname)。
  • labelSelector:使用标签查询筛选目标 Pod。
  1. 网络配置
    • Kube-OVN
      参数描述
      Bandwidth Limits为 Pod 网络流量实施 QoS:
      • Egress rate limit:最大出站流量速率(例如 10Mbps)。
      • Ingress rate limit:最大入站流量速率。
      Subnet从预定义的子网池中分配 IP。如果未指定,则使用命名空间的默认子网。
      Static IP Address为 Pod 绑定持久化 IP 地址:
      • 跨多个 Deployment 的多个 Pod 可以申请同一个 IP,但同一时刻只能有一个 Pod 使用它。
      • 重要:静态 IP 数量必须 ≥ Pod 副本数。
    • Calico
      参数描述
      Static IP Address分配固定 IP,且要求严格唯一:
      • 每个 IP 在集群中只能绑定到一个 Pod。
      • 重要:静态 IP 数量必须 ≥ Pod 副本数。

工作负载 3 - 配置容器

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

    参数描述
    Resource Requests & Limits
    • Requests:容器运行所需的最低 CPU/内存。
    • Limits:容器运行期间允许使用的最大 CPU/内存。有关单位定义,请参阅 资源单位
    命名空间超售比
    • 未设置超售比
      如果命名空间存在资源配额:容器 requests/limits 继承命名空间默认值(可修改)。
      未设置命名空间配额:无默认值;使用自定义 Request。
    • 设置超售比:Requests 自动计算为 Limits / Overcommit ratio(不可修改)。
    约束
    • Request ≤ Limit ≤ 命名空间配额最大值。
    • 超售比变更后需要重建 Pod 才会生效。
    • 设置超售比后将禁用手动配置 request。
    • 未设置命名空间配额 → 不对容器资源进行限制。
    Extended Resources配置集群中可用的扩展资源(例如 vGPU、pGPU)。
    Volume Mount持久化存储配置。请参阅 存储卷挂载说明
    操作
    • 已有 Pod 卷:单击 Add
    • 没有 Pod 卷:单击 Add & Mount
    参数
    • mountPath:容器文件系统路径(例如 /data
    • subPath:卷内的相对文件/目录路径。
      对于 ConfigMap/Secret:选择特定 key
    • readOnly:以只读方式挂载(默认:读写)
    请参阅 Kubernetes Volumes
    Port暴露容器端口。
    示例:暴露名为 redis 的 TCP 端口 6379
    字段
    • 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 key、pod 字段(fieldRef)、资源指标(resourceFieldRef
    Note:环境变量会覆盖镜像/配置文件中的设置。
    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/b/c/*.log 对应 c:/a
    More > Exclude Log File排除特定日志不进行采集(例如 /var/log/aaa.log)。
    More > Execute before Stopping在容器终止前执行命令。
    示例echo "stop"
    Note:命令执行时间必须短于 Pod 的 terminationGracePeriodSeconds
  2. 单击右上角的 Add ContainerAdd Init Container

    请参阅 Init Containers。 Init Container:

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

操作步骤 2 - 服务

参数描述
ServiceKubernetes Service,即使工作负载分布在多个后端上,也可以通过单个对外端点暴露集群中运行的应用。有关具体参数说明,请参阅 创建 Service

Note:在应用下创建的内部路由,其默认名称前缀为计算组件的名称。如果计算组件类型(部署模式)是 StatefulSet,建议不要修改内部路由的默认名称(即工作负载名称);否则可能会导致该工作负载出现访问问题。

操作步骤 3 - Ingress

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

Note:在应用下创建 Ingress 时使用的 Service 必须是当前应用下创建的资源。不过,请确保该 Service 已关联到应用中的工作负载;否则,工作负载的服务发现和访问将失败。
  1. 单击 Create

应用管理操作

如需修改应用配置,请使用以下任一方式:

  1. 单击应用列表右侧的竖向省略号(⋮)。
  2. 在应用详情页右上角选择 Actions
操作描述
Update
  • Update:仅使用其定义的 更新策略 修改目标工作负载(以 Deployment 策略为例)。保留现有副本数和发布配置。
  • Force Update:使用各组件的更新策略触发整个应用的全量发布。
    1. 适用场景
    • 需要立即在全局生效的批量配置变更(例如作为环境变量引用的 ConfigMap/Secret 更新)。
    • 为关键安全需求进行的组件协同重启。
    2. 警告/注意
    • 大规模重启期间可能导致服务短暂降级。
    • 在未验证业务连续性的生产环境中不建议使用。
  • 网络影响
    • 删除 Ingress 规则:如果满足以下条件,外部访问仍可通过 LB_IP:NodePort 维持:
      1)LoadBalancer Service 使用默认端口。
      2)保留的路由规则引用了应用组件。
      如需完全终止外部访问,必须删除 Service。
    • 删除 Service:将不可恢复地失去对应用组件的网络连接。即使 API 对象仍然存在,关联的 Ingress 规则也将失效。
Delete
  • 级联删除
    1. 删除所有子资源,包括 Deployments、Services 和 Ingress 规则。
    2. Persistent Volume Claims(PVCs)遵循 StorageClass 中定义的保留策略。
  • 删除前检查清单
    1. 确认关联的 Services 下没有活跃流量。
    2. 确认有状态组件的数据已完成备份。
    3. 使用 kubectl describe ownerReferences 检查依赖资源关系。

在更新组件镜像或 OCI Connector 时,还应检查该组件 Pod 模板的镜像拉取 Secret 或 ServiceAccount,以及令牌有效性。更新后请验证 Connector 注解、实际重写后的代理镜像、Pod 发布状态和 Events。

参考信息

存储卷挂载说明

类型用途
Persistent Volume Claim将现有 PVC 绑定到请求持久化存储。

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

Use Case:临时数据存储。请参阅 Ephemeral Volumes
Empty Directory在同一 pod 内容器之间共享的临时存储:
- pod 启动时在节点上创建
- pod 删除时一并删除

Use Case:容器间文件共享、临时数据存储。请参阅 EmptyDir
Host Path挂载主机机器目录(必须以 / 开头,例如 /volumepath)。

健康检查参数

通用参数

参数描述
Initial Delay开始探测前的等待时间(秒)。默认值:300
Period探测间隔(1-120s)。默认值:60
Timeout探测超时时长(1-300s)。默认值: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")。
Note:请转义特殊字符并测试命令可用性。