查看目录

使用 Kubernetes 部署应用

本教程将引导您通过平台控制台,在已有的 Kubernetes 集群中创建一个 Deployment 并部署应用。

使用 Kubernetes 部署应用

本教程将引导您通过平台控制台,在已有的 Kubernetes 集群中创建一个 Deployment 并部署应用。

前置条件

  • 已拥有一个处于运行中状态的 Kubernetes 集群。若尚未创建,请参考相关文档先创建集群。

进入集群面板

  1. 登录控制台后,在顶部导航栏选择 -> Kubernetes

  2. 在 Kubernetes 集群列表中,找到您已创建好的集群,点击集群名称进入详情。

    进入集群列表并选择集群

  3. 进入集群面板页面,您将看到集群概览、节点状态、资源用量等信息。

    集群面板概览


创建 Deployment

Deployment 是 Kubernetes 中用于管理无状态应用的核心资源,它负责维护指定数量的 Pod 副本,并支持滚动更新等发布策略。

进入部署页面

  1. 在集群面板左侧菜单中点击 部署

  2. 点击右上角的 创建 Deployment 按钮。

    部署列表页面

填写基础信息

在创建页面中,首先配置 Deployment 的基础信息。

  1. Deployment 名称:输入一个唯一名称,用于标识该 Deployment。只能包含小写字母、数字和中划线。

  2. 命名空间:选择刚才创建的 TestNameSpace

    参数说明示例值
    Deployment 名称资源的唯一标识nginx-deployment
    命名空间所属命名空间TestNameSpace

    填写 Deployment 基础信息

配置副本与重启策略

  • 副本数:指定该 Deployment 需要维持的 Pod 副本数量。平台会根据此数值自动创建或回收 Pod,确保始终有指定数量的副本在运行。

  • 重启策略:定义容器中进程退出时 Pod 的行为。

    • Always:无论退出码是什么,始终重启容器(默认值,适合长期运行的服务)。
    • OnFailure:仅在进程异常退出(非 0 状态码)时重启(适合批处理任务)。
    • Never:不自动重启(适合一次性任务)。
    参数说明推荐值
    副本数期望的 Pod 副本数量3
    重启策略容器退出时的行为Always

    配置副本数与重启策略

配置 Selector 标签

Selector 标签用于让 Deployment 识别并管理属于它的 Pod。您需要定义一组键值对,后续创建的 Pod 模板中必须包含相同的标签,Deployment 才能正确关联到这些 Pod。

注意
Selector 标签在创建后不可修改。如需更改,必须删除并重新创建 Deployment。

配置更新策略

更新策略决定了当 Deployment 发生变更时(如镜像版本升级),旧版本 Pod 如何被替换为新版本。

  • 滚动更新(Rolling Update):逐步用新 Pod 替换旧 Pod,升级过程中服务不中断。推荐用于生产环境。

    • 最大激增(Max Surge):升级过程中允许超出副本数的最大 Pod 数量,可以是具体数值或百分比。例如设置为 25%,若副本数为 4,则最多可同时存在 5 个 Pod(4 旧 + 1 新)。
    • 最大不可用(Max Unavailable):升级过程中允许不可用的最大 Pod 数量,可以是具体数值或百分比。例如设置为 25%,若副本数为 4,则最多允许 1 个 Pod 不可用。
  • 重新创建(Recreate):先删除所有旧 Pod,再创建新 Pod。升级过程中会出现短暂的服务中断,但资源占用最少。

    参数说明推荐值
    策略类型滚动更新或重新创建滚动更新
    最大激增升级时允许超出的 Pod 数量/比例25%
    最大不可用升级时允许不可用的 Pod 数量/比例25%

    配置更新策略

配置 Deployment 标签

为 Deployment 资源本身添加标签,方便后续通过标签进行筛选或组织资源。标签为键值对形式,例如 app: nginxenv: test

配置 Deployment 标签


配置 Pod 模板

Pod 模板定义了 Deployment 所创建 Pod 的规格,包括容器、存储、网络等配置。

注解与节点选择器

  • 注解(Annotations):为 Pod 添加非标识性的元数据,通常用于工具或插件读取。例如记录构建版本号、CI/CD 流水线信息等。键值对形式,如 build-version: v1.2.3

  • 节点选择器(Node Selector):通过标签约束 Pod 只能调度到匹配的节点上。例如设置 disktype: ssd,则 Pod 只会被部署到带有 disktype=ssd 标签的节点。

    配置注解与节点选择器

配置卷挂载(Pod 级别)

在 Pod 级别预先声明卷(Volume),后续可在容器配置中将其挂载到指定路径。支持的卷类型通常包括:

  • 临时目录(EmptyDir):Pod 创建时自动创建,Pod 删除时自动清理,适合临时缓存。

  • 持久卷声明(PVC):引用已创建的持久化存储,数据可跨 Pod 生命周期保留。

  • 配置项(ConfigMap):将配置数据作为文件挂载到容器内。

  • 密钥(Secret):将敏感数据(如密码、证书)作为文件挂载。

    卷类型适用场景
    EmptyDir临时文件、缓存
    PVC需要持久化的数据
    ConfigMap配置文件
    Secret敏感信息

    配置 Pod 卷挂载


配置容器

容器是 Pod 中实际运行应用进程的单元。一个 Pod 可以包含一个或多个容器,本教程以单容器为例。

基础信息

  1. 容器名称:输入容器的标识名称,在同一 Pod 内必须唯一。例如 nginx

  2. 镜像名称:填写容器镜像地址。支持 Docker Hub 官方镜像(如 nginx:latest)或私有镜像仓库地址(如 registry.example.com/myapp:v1.0)。

  3. 启动命令(Command):覆盖镜像默认的启动命令。若留空,则使用镜像 Dockerfile 中定义的 ENTRYPOINT

  4. 启动参数(Args):传递给启动命令的参数。例如命令为 nginx,参数可填 -g daemon off;

    参数说明示例值
    容器名称Pod 内唯一标识nginx
    镜像名称容器镜像地址nginx:alpine
    启动命令覆盖默认入口(留空使用默认值)
    启动参数传递给命令的参数-g daemon off;

    配置容器基础信息

端口映射

声明容器需要暴露的端口,供集群内其他服务或外部流量访问。

  • 名称:端口的标识,方便在其他资源中引用。

  • 容器端口:容器进程实际监听的端口。

  • 协议:TCP 或 UDP。

    参数说明示例值
    名称端口标识http
    容器端口进程监听端口80
    协议通信协议TCP

资源配置

为容器指定 CPU 和内存的请求值(Request)限制值(Limit),确保 Pod 能够获得足够的资源,同时防止单个容器耗尽节点资源。

  • 请求值:Pod 调度时,Kubernetes 会确保节点上有至少这么多资源可用。也是 HPA(自动扩缩容)计算的基础。

  • 限制值:容器实际运行时可使用的资源上限。超过 CPU 限制会被节流,超过内存限制会被系统 OOM Kill。

    参数说明示例值
    CPU 请求最低保证的 CPU 核心数100m(0.1 核)
    CPU 限制最大可使用的 CPU 核心数500m(0.5 核)
    内存请求最低保证的内存128Mi
    内存限制最大可使用的内存512Mi

配置健康检查

健康检查用于判断容器是否正常运行,以及是否已准备好接收流量。

  • 存活探针(Liveness Probe):检测容器是否处于健康状态。若检查失败,Kubernetes 会自动重启容器。适合用于发现死锁或无法恢复的应用状态。
  • 就绪探针(Readiness Probe):检测容器是否已准备好接收请求。若检查失败,Pod 会从 Service 的端点列表中移除,不再接收流量。适合用于应用启动耗时较长或依赖外部服务的场景。

两种探针均支持 HTTP 请求TCP 端口检测执行命令三种方式。以 HTTP 方式为例,常用参数如下:

参数说明推荐值
路径HTTP 请求的路径/healthz
初始延迟容器启动后等待多久开始探测10
周期探测间隔10
超时时间每次探测的最大等待时间5
失败阈值连续失败多少次才判定为不健康3

服务账户与镜像拉取密钥

服务账户

服务账户(Service Account)为 Pod 提供一个身份标识,用于与 Kubernetes API Server 或其他外部服务进行身份认证。如果不指定,Pod 将自动使用所在命名空间的 default 服务账户。

  • 您可以选择 创建一个新服务账户,或从下拉列表中 选择已有的服务账户

  • 有关服务账户的详细管理,请访问 服务账户管理页面

    参数说明示例值
    服务账户Pod 使用的身份标识default 或自定义账户

镜像拉取密钥

镜像拉取密钥(Image Pull Secret)用于拉取私有镜像仓库中的镜像。当您的镜像仓库需要认证时,必须添加对应的 Secret。

  • 在此填写用于拉取私有镜像的 Secret 名称列表

  • 如需创建新的 Secret,请前往 密钥管理页面

    参数说明
    镜像拉取密钥填写用于拉取私有镜像的 Secret 名称

高级配置

本节包含安全上下文、容忍度等高级选项,可根据实际需求进行配置。

高级配置

Pod 安全上下文

Pod 安全上下文定义了 Pod 级别的运行权限,影响 Pod 内所有容器。

参数说明示例值
运行用户(Run As User)指定容器内进程运行的 UID1000
运行组(Run As Group)指定容器内进程运行所属的 GID1000
文件系统组(FS Group)指定挂载卷的所有者 GID,卷内文件会自动修改组权限1000
以非 root 用户运行强制容器内进程以非 root 用户身份运行,提升安全性勾选
  • 以非根用户运行:启用后,容器必须以非 root 用户运行。如果镜像默认使用 root 启动,将因权限不足而失败。建议优先选择自带非 root 用户的镜像。

容器安全上下文

容器安全上下文定义了单个容器的运行权限,可以覆盖 Pod 级别的设置。

参数说明示例值
运行用户指定该容器内进程运行的 UID1000
运行组指定该容器内进程运行所属的 GID1000
特权模式授予容器对主机设备的完全访问权限(等同于 host 上的 root 权限),生产环境不建议开启关闭
允许特权提升允许进程获取更多权限(允许 setuid 等系统调用),按需启用关闭
只读根文件系统以只读方式挂载容器的根文件系统,防止容器修改自身文件勾选
以非 root 用户运行强制该容器必须以非 root 用户身份启动勾选

注意
特权模式允许特权提升会显著降低容器的安全隔离级别,仅在确实需要直接访问宿主机硬件或特定设备时启用(如网络插件、存储驱动)。

容忍度

容忍度(Tolerations)用于让 Pod 能够调度到带有**污点(Taint)**的节点上。污点会阻止普通 Pod 调度到该节点,除非 Pod 带有匹配的容忍度。

典型的场景是允许 Pod 调度到 master 节点(通常 master 节点带有 node-role.kubernetes.io/master:NoSchedule 污点,禁止业务 Pod 运行)。

参数说明示例值
污点的 Keynode-role.kubernetes.io/master
操作符匹配方式:Equal(完全匹配)或 Exists(只要键存在即可)Equal
污点的值true
效果污点的效果:NoSchedule(不调度)、PreferNoSchedule(尽量不调度)、NoExecute(驱逐已有 Pod)NoSchedule

提示
通常情况下,您不需要配置容忍度。平台会自动将 Pod 调度到合适的 worker 节点。如需特殊调度需求,请先在节点页面查看节点的污点配置。


提交创建

完成以上配置后,点击页面底部的 创建 按钮。平台将根据您填写的配置生成 Deployment YAML 并在集群中部署。创建成功后,您可以在部署列表中查看该 Deployment 的运行状态,并通过 命名空间 页面查看关联的 Pod。

下一步

本文档更新于 2026-04-25 09:00