部署组管理(容器)
最近更新时间: 2024-10-17 17:10:00
操作场景
该任务指导您通过 TSF 控制台对容器应用部署组进行操作,包括:创建部署组、删除部署组、部署应用、启动应用、应用扩缩容等。
操作步骤
创建部署组
登录 [TSF 控制台]。
单击左侧导航栏中的 【部署组】。
在页面顶部选择集群。
单击部署组列表上方的【新建部署组】。
设置部署组相关信息,单击【提交】。
部署组名称:部署组的名称,不超过60个字符。
命名空间:选择命名空间。
关联应用:选择部署组关联的应用。关联应用字段决定了后续镜像来源和应用配置来源。
日志配置项:选择日志配置项,用于采集应用的业务日志数据。
日志投递:指定日志的转储方式,将规则指定路径中的日志内容投递到指定的接收端。如果配置为"无",将不投递业务日志。更多关于日志投递的功能说明请参考 [日志投递]。
- 单击【下一步】,按照 部署应用 进行操作。
部署应用
前提条件:已经将镜像推送到应用的镜像仓库中,参考 [制作镜像] 和 [镜像仓库]。
部署流程:
在部署组列表页,单击目标部署组操作栏的【部署应用】。
设置部署信息。
选择镜像:选择要部署的镜像。
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。
- (可选)设置高级参数。
参数 | 说明 |
---|---|
更新方式 | - 快速更新:直接关闭所有实例,启动相同数量的新实例。 - 滚动更新(推荐):对实例进行逐个更新,这种方式可以让您不中断业务实现对服务的更新。 |
更新间隔 | 滚动更新的更新时间间隔。 |
更新策略 | - 滚动更新方式可以设置更新策略。 - 启动新的Pod, 停止旧的Pod(默认):需确认集群有足够的CPU和内存用于启动新的Pod,否则可能导致集群崩溃。 - 停止旧的Pod, 启动新的Pod :适用于需要同时部署多个容器部署组,且集群内剩余资源不够时。 - 自定义:需要设置允许超出所需规模的最大Pod数量和允许最大不可用的Pod数量。 |
策略配置 | 可以设置批量启动或停止的 Pod 数量,可以设置百分比或正整数。详情请参考 【Kubernetes Deployment 滚动更新策略】和 【容器服务实例优雅下线】最佳实践进行配置。 |
健康检查 | - 关于健康检查的作用和配置详情参考 【健康检查】。 - 存活检查:用于判断何时重启实例。 - 就绪检查:用于判断 Pod 何时变为 Ready 状态,会影响滚动更新。【默认检查】无须用户设置检查规则,会根据服务实例是否注册到注册中心来决定 Pod 变为 ready 状态。 |
Pod 调度策略 | - 默认调度:优先保留yaml模版中设置的调度策略,如果未设置则按照集群资源调度,可能调度到某一可用区。 - 尽可能多可用区调度:尽可能调度到集群内不同可用区的主机上,可用性高。 |
- 设置资源配置信息。
参数 | 说明 |
---|---|
应用容器 | 运行用户指定的应用镜像,根据应用负载指定 CPU 和内存的资源限制。应用容器的资源配置参考[容器部署组资源限制]。 |
agent 容器 | 负责日志、JVM监控、调用链数据的采集,如果不部署 agent 容器将影响这些功能的使用。agent 容器的内存 limit 和日志量有关,通常使用默认值 400MiB 即可,如果出现 OOM 可适当增加 limit 值。 |
istio_proxy 容器 | 负责 Mesh 服务注册、流量转发等任务,通常使用默认的资源限制即可。 |
实例数量 | 实例数和实例资源限制的乘积不能超过集群剩余的可用资源。 |
- 设置访问配置信息。
参数 | 说明 |
---|---|
Service | 负责 Mesh 服务注册、流量转发等任务,通常使用默认的资源限制即可。默认开启,关闭Service后,该Service下的负载均衡将一并销毁,销毁后不可恢复,请谨慎操作。 |
网络访问方式 | 参考 [网络访问方式] 了解不同访问方式的区别。 |
端口映射 | 容器端口与服务端口的映射关系。 |
通过直接编辑 YAML 更新部署组
容器部署组对应的 Kubernetes 里面的Deployment
和 Service
对象,如果您希望直接修改 YAML 实现更能灵活地配置,可以按照下述步骤操作:
单击部署组 ID 进入详情页,单击【基本信息】标签页。
在基本信息卡片中找到 YAML 字段,单击【查看与编辑】,显示
Deployment
和Service
的 YAML。单击【编辑】按钮,进入 YAML 编辑页面,编辑 YAML。
单击【提交】按钮,容器部署组会以更新后的 YAML 进行重新部署。
通过 Webshell 登录容器
单击“部署组 ID ”进入服务实例列表。
单击操作栏的【登录】通过 Webshell 登录容器。 登录后界面如下:
应用扩缩
单击部署组右侧的【更多】>【应用扩缩】。
选择扩缩的实例数量后,单击【提交】。
删除部署组
单击部署组列表页右侧的【删除】。
弹出提示页面,单击【确定】删除部署组。
网络访问方式
容器部署组的访问方式定义访问后端 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 界面如下: