部署组管理(容器)

最近更新时间: 2024-09-05 15:09:00

操作场景

该任务指导您通过 TSF 控制台对容器应用部署组进行操作,包括:创建部署组、删除部署组、部署应用、启动应用、应用扩缩容等。

操作步骤

创建部署组

  1. 登录 [TSF 控制台]。

  2. 单击左侧导航栏中的 【部署组】。

  3. 在页面顶部选择集群。

  4. 单击部署组列表上方的【新建部署组】。

  5. 设置部署组相关信息,单击【提交】。

  • 部署组名称:部署组的名称,不超过60个字符。

  • 命名空间:选择命名空间。

  • 关联应用:选择部署组关联的应用。关联应用字段决定了后续镜像来源和应用配置来源。

  • 日志配置项:选择日志配置项,用于采集应用的业务日志数据。

  • 日志投递:指定日志的转储方式,将规则指定路径中的日志内容投递到指定的接收端。如果配置为"无",将不投递业务日志。更多关于日志投递的功能说明请参考 [日志投递]。

  1. 单击【下一步】,按照 部署应用 进行操作。

部署应用

前提条件:已经将镜像推送到应用的镜像仓库中,参考 [制作镜像] 和 [镜像仓库]。

部署流程

  1. 在部署组列表页,单击目标部署组操作栏的【部署应用】。

  2. 设置部署信息。

  • 选择镜像:选择要部署的镜像。

  • JVM 启动参数(选填,仅适用普通应用):设置 Java 应用的启动参数。参数会通过JAVA_OPTS环境变量带到容器运行环境中,参考 [制作镜像] 中的使用方式。

在java启动环境变量中应用容器参数应采用 $(var_name)的形式

  • 环境变量:设置应用容器中的变量。
  • 自定义:您可以自定义环境变量

  • Field:容器路径,包含metadata.name, metadata.namespace, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP

  • ResourceField:容器资源,通常支持资源限制和请求,例如limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory 和 requests.ephemeral-storage。

  1. (可选)设置高级参数。
参数 说明
更新方式 - 快速更新:直接关闭所有实例,启动相同数量的新实例。
- 滚动更新(推荐):对实例进行逐个更新,这种方式可以让您不中断业务实现对服务的更新。
更新间隔 滚动更新的更新时间间隔。
更新策略 - 滚动更新方式可以设置更新策略。
- 启动新的Pod, 停止旧的Pod(默认):需确认集群有足够的CPU和内存用于启动新的Pod,否则可能导致集群崩溃。
- 停止旧的Pod, 启动新的Pod :适用于需要同时部署多个容器部署组,且集群内剩余资源不够时。
- 自定义:需要设置允许超出所需规模的最大Pod数量和允许最大不可用的Pod数量。
策略配置 可以设置批量启动或停止的 Pod 数量,可以设置百分比或正整数。详情请参考 【Kubernetes Deployment 滚动更新策略】和 【容器服务实例优雅下线】最佳实践进行配置。
健康检查 - 关于健康检查的作用和配置详情参考 【健康检查】。
- 存活检查:用于判断何时重启实例。
- 就绪检查:用于判断 Pod 何时变为 Ready 状态,会影响滚动更新。【默认检查】无须用户设置检查规则,会根据服务实例是否注册到注册中心来决定 Pod 变为 ready 状态。
Pod 调度策略 - 默认调度:优先保留yaml模版中设置的调度策略,如果未设置则按照集群资源调度,可能调度到某一可用区。
- 尽可能多可用区调度:尽可能调度到集群内不同可用区的主机上,可用性高。
  1. 设置资源配置信息。
参数 说明
应用容器 运行用户指定的应用镜像,根据应用负载指定 CPU 和内存的资源限制。应用容器的资源配置参考[容器部署组资源限制]。
  • request 用于预分配资源,当集群中的节点没有 request 所要求的资源数量时,会导致无法创建容器。

  • limit 用于设置容器使用资源的最大上限,避免异常情况下节点资源消耗过多。
  • agent 容器 负责日志、JVM监控、调用链数据的采集,如果不部署 agent 容器将影响这些功能的使用。agent 容器的内存 limit 和日志量有关,通常使用默认值 400MiB 即可,如果出现 OOM 可适当增加 limit 值。
    istio_proxy 容器 负责 Mesh 服务注册、流量转发等任务,通常使用默认的资源限制即可。
    实例数量 实例数和实例资源限制的乘积不能超过集群剩余的可用资源。
    1. 设置访问配置信息。
    参数 说明
    Service 负责 Mesh 服务注册、流量转发等任务,通常使用默认的资源限制即可。默认开启,关闭Service后,该Service下的负载均衡将一并销毁,销毁后不可恢复,请谨慎操作。
    网络访问方式 参考 [网络访问方式] 了解不同访问方式的区别。
    端口映射 容器端口与服务端口的映射关系。

    通过直接编辑 YAML 更新部署组

    容器部署组对应的 Kubernetes 里面的DeploymentService对象,如果您希望直接修改 YAML 实现更能灵活地配置,可以按照下述步骤操作:

    1. 单击部署组 ID 进入详情页,单击【基本信息】标签页。

    2. 在基本信息卡片中找到 YAML 字段,单击【查看与编辑】,显示DeploymentService的 YAML。

    3. 单击【编辑】按钮,进入 YAML 编辑页面,编辑 YAML。

    4. 单击【提交】按钮,容器部署组会以更新后的 YAML 进行重新部署。

    通过 Webshell 登录容器

    1. 单击“部署组 ID ”进入服务实例列表。

    2. 单击操作栏的【登录】通过 Webshell 登录容器。 登录后界面如下:

    应用扩缩

    1. 单击部署组右侧的【更多】>【应用扩缩】。

    2. 选择扩缩的实例数量后,单击【提交】。

    删除部署组

    1. 单击部署组列表页右侧的【删除】。

    2. 弹出提示页面,单击【确定】删除部署组。

    网络访问方式

    容器部署组的访问方式定义访问后端 Pod 的访问方式,并提供固定的虚拟访问 IP。您可以在 Service 中通过设置来访问后端的 Pod,不同访问方式的服务可提供不同网络能力。

    TSF 目前提供以下四种服务访问方式:

    • 提供公网访问

    使用 Service 的 Loadbalance 模式,公网 IP 可直接访问到后端的 Pod,适用于 Web 前台类的服务。

    创建完成后的服务在集群外可通过负载均衡域名或 IP + 服务端口访问服务,集群内可通过部署组名称 + 服务端口访问服务。

    • 仅在集群内访问

    Headless Service:不创建用于集群内访问的ClusterIP,访问Service名称时返回后端Pods IP地址,用于适配自有的服务发现机制。

    使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离。

    创建完成后的服务,要在同一个命名空间的容器内,通过部署组名称 + 服务端口访问服务。

    • VPC 内网访问

    使用 Service 的 Loadbalance 模式,指定 annotations:service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx,即可通过内网 IP 直接访问到后端的 Pod。

    创建完成后的服务在集群外可通过负载均衡域名或 IP + 服务端口访问服务,集群内可通过部署组名 + 服务端口访问服务。

    • 主机端口(NodePort)访问

    提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node。

    创建完成后的服务可以通过云服务器 IP + 主机端口或部署组名称 + 服务端口访问服务。

    注意:

    一个账号在单地域创建的公网负载均衡 LB 实例有数量限制,参考负载均衡 【使用约束】 。如需要扩大负载均衡实例限额,请 【提交工单】处理。

    TSF 和 TKE 容器部署的区别

    TSF 简化了容器应用部署的参数配置,能做到自动处理,对比 TKE(容器服务)区别如下:

    挂载点和数据卷

    TSF 将应用配置日志项路径设置为挂载点,并自动创建数据卷并映射(本地硬盘)。

    TSF 应用关联日志配置项路径:

    TKE 界面如下: