跳转至

2.3 容器服务 TKE 及最佳实践

课程简介

容器服务(Tencent Kubernetes Engine,TKE)是腾讯云基于原生 Kubernetes 提供的高性能、高可扩展的容器管理服务。本课程将从 TKE 的产品定义、架构原理出发,深入剖析集群设计、网络选型、节点管理及 DevOps 持续交付等核心环节的最佳实践,帮助您构建生产级的高可用容器集群。

学习目标

通过本课程的学习,您将能够:

  • 理解 TKE 架构:掌握 TKE 的产品定义、底层架构及核心优势。
  • 掌握集群设计:学会选择合适的集群类型、运行时(Containerd/Docker)及 Service 转发模式。
  • 精通网络选型:深入理解 Global Router、VPC-CNI 和 Cilium Overlay 三种网络模式的区别与应用场景。
  • 实施弹性伸缩:掌握 TKE 集群自动伸缩(CA)的策略配置与多可用区容灾方案。
  • 落地 DevOps:了解如何结合 TCR 和 Coding 实现容器化的持续交付。

第一部分:容器服务 TKE 基础

本部分导读
了解 TKE 是如何基于腾讯云 IaaS 和 PaaS 层构建的,以及它为何能成为企业云原生的首选平台。

一、TKE 产品概述

1.1 产品定义

腾讯云容器服务(TKE)是一种高度可扩展的高性能容器管理服务。它允许用户在托管的云服务器实例集群上轻松运行应用程序。 - 无需运维控制平面:TKE 托管了 Kubernetes Master 节点,用户无需安装、运维或扩展集群管理基础设施。 - 标准化 API:通过简单的 API 调用即可启动、停止 Docker 应用程序,查询集群状态。 - 灵活调度:根据资源需求和可用性要求,智能安排容器在集群中的置放。

1.2 产品架构

TKE 基于腾讯云强大的 IaaS 和 PaaS 能力构建,向上提供标准的 K8S 服务。

graph TD
    User[用户/运维人员] --> API[控制台 / API / Kubectl]

    subgraph TKE 容器服务
        direction TB
        Feature1[集群管理<br>(托管/独立/升级)]
        Feature2[应用管理<br>(Helm Chart/镜像)]
        Feature3[容器网络<br>(VPC-CNI/Global Router)]
        Feature4[运维管理<br>(监控/日志/告警)]
    end

    API --> TKE

    subgraph 基础设施层 (IaaS & PaaS)
        IaaS[计算: CVM/EKS<br>网络: VPC/CLB/NAT<br>存储: CBS/CFS/COS]
        PaaS[数据库: TDSQL/Redis<br>中间件: TSF/CKafka]
    end

    TKE --> IaaS
  • 底层 IaaS 支持:CVM(计算)、CLB(负载均衡)、VPC(网络)、CBS/CFS/COS(存储)。
  • 核心功能模块
    • 集群管理:支持集群托管、独立部署、自定义 OS、平滑升级。
    • 网络方案:提供 Global Router、VPC-CNI、Cilium Overlay 等多种模式。
    • 应用管理:支持 Helm Chart 和 TCR 镜像仓库集成。
    • 运维监控:集成云监控、日志服务 CLS 和事件告警。

1.3 核心优势

  1. 原生兼容:完全兼容原生 K8S API,无缝对接社区生态。
  2. 简单易用:简化 Master 节点管理,用户仅需聚焦容器应用开发。
  3. 深度集成:与 CVM、CBS、CLB、VPC 等腾讯云基础设施深度融合。
  4. 安全可靠:提供多层次安全防护,通过 VPC 实现网络隔离。

第二部分:TKE 集群设计与选型最佳实践

本部分导读
一个稳定的容器平台始于正确的架构设计。本节重点讲解在创建集群时需要做出的关键决策。

一、集群与管理模式选型

1.1 管理模式:托管 vs 独立

模式 说明 适用场景 费用与 SLA
托管集群 (Managed) 腾讯云代维 Master 节点和 Etcd,Master 资源随规模自动扩容。 首选推荐。关注业务应用,不希望运维 K8S 控制平面。 Master 节点免费(或收管理费),提供 SLA 保障。
独立集群 (Standard) 用户自购 CVM 作为 Master,完全掌控参数配置。 需要深度自定义 Master 参数(如修改 API Server 启动参数)的特殊场景。 需支付 Master 机器费用,不提供控制平面 SLA。
Serverless 集群 无需管理任何节点,Pod 直接运行在腾讯云资源池中。 突发业务、离线计算、在线推理,不想管理服务器。 按 Pod 资源使用量计费。

1.2 运行时 (Runtime) 选型

  • Containerd (推荐):更轻量级、更高性能,调用链更短,是 K8S 社区推荐的默认运行时。
  • Docker:成熟度高,但由于 K8S 移除了 Docker Shim,会带来额外的开销。仅建议在极度依赖 Docker in Docker 或特定遗留场景下使用。

1.3 操作系统选型

推荐:Tencent Linux (TLinux) - 内核优化:腾讯云团队维护,针对容器场景优化了内核,解决了常见的 kmem account leakage (内存泄漏) 和 soft lockup 等问题。 - 兼容性:在腾讯内部及大规模生产环境中经过验证,兼容性最好。 - 其他选项:CentOS(已停止维护,不推荐)、Ubuntu(互联网行业常用,兼容性较好)。

二、Service 转发模式选型

K8S Service 负责集群内的服务发现和负载均衡,TKE 提供两种模式:

模式 原理 优点 缺点 适用场景
IPVS (推荐) 基于内核 LVS 实现四层负载均衡。 高性能,支持复杂的负载均衡算法(最小连接、加权等),大规模集群规则刷新快。 排查问题需要熟悉 LVS 命令。 生产环境首选,特别是大规模集群 (>1000 Service)。
IPTables 基于 Linux Netfilter 规则。 稳定性极高,规则简单直观。 规则线性匹配,Service 数量多时性能下降严重。 小规模集群,或对稳定性有极致要求的场景。

第三部分:容器网络插件选型 (关键)

本部分导读
网络模式决定了容器的性能和互通性,一旦选定后期更改极为困难,请务必根据业务场景慎重选择。

TKE 提供三种主要网络插件:

3.1 Global Router 模式 (网桥/路由模式)

  • 原理:容器网段独立于 VPC,通过 Docker Bridge (cbr0) 连接。跨主机通信依赖 VPC 路由表。
  • 特点
    • 容器 IP 不占用 VPC 的 IP 资源。
    • 性能略有损耗(经过两次 Bridge)。
    • 不支持容器固定 IP。
  • 适用场景:对网络性能要求不高、VPC IP 资源紧缺的普通业务场景。

3.2 VPC-CNI 模式 (弹性网卡直通) —— 推荐

  • 原理:容器直接使用 VPC 的子网 IP(弹性网卡 ENI 或辅助 IP)。
  • 特点
    • 高性能:容器与 CVM 处于同一网络平面,无网桥损耗(性能提升约 10%)。
    • 支持固定 IP:Pod 重启后 IP 不变(适合传统架构迁移)。
    • 支持直通 POD:CLB 直接绑定 Pod IP,流量不经过 NodePort 转发。
  • 限制:消耗 VPC IP 资源,受限于节点可绑定的弹性网卡数量。
  • 适用场景:对网络时延敏感、高并发、需要固定 IP 或 CLB 直通的场景(如游戏、核心微服务)。

3.3 Cilium Overlay 模式

  • 原理:基于 eBPF 和 VXLAN 隧道封装。
  • 特点
    • 云上节点和第三方节点(混合云)可共享容器网段。
    • 解耦底层网络,容器 IP 独立。
    • 存在约 10% 的封装性能损耗。
  • 适用场景:混合云、分布式云架构,需要跨云统一网络管理的场景。

选型总结表:

需求 推荐模式
追求极致性能 VPC-CNI
需要 Pod 固定 IP VPC-CNI
VPC IP 资源极其有限 Global Router
混合云/跨环境互通 Cilium Overlay

第四部分:节点管理与弹性伸缩

一、节点类型选型

  1. 原生节点 (Native Node):基于 CVM 创建,最通用的类型。
  2. 超级节点 (Super Node):通常指基于 EKS 的虚拟节点,无服务器维护,适合突发流量。
  3. 注册节点:将用户 IDC 的物理机或虚拟机注册到 TKE,实现混合云管理。

二、集群弹性伸缩 (Cluster Autoscaler, CA)

TKE 支持根据 CPU、内存等指标自动增加或减少节点数量。

2.1 最佳实践原则

  • 基于 Request 扩容:CA 的触发条件是“集群中有 Pod 因为资源不足处于 Pending 状态”。因此,务必为工作负载(Workload)配置合理的 Request 值。
  • 多伸缩组配置
    • 建议配置多个伸缩组,分布在不同的可用区 (AZ),以实现容灾。
    • 混合机型:在伸缩组中配置多种同规格机型,防止某种机型售罄导致扩容失败。
  • 成本优化
    • 可以创建包含竞价实例 (Spot Instance) 的伸缩组,用于运行无状态、可中断的离线计算任务,大幅降低成本。
  • 节点池管理:使用“节点池”功能对不同配置的节点进行分组管理(如 AI 节点池、Web 节点池),便于定向调度和独立扩缩容。

第五部分:TKE 结合 DevOps 持续交付

容器技术是实现 DevOps 的基石。TKE 可以与腾讯云生态工具无缝结合,实现 CI/CD。

5.1 核心组件

  • TCR (Tencent Container Registry):企业级容器镜像仓库,提供镜像扫描、全球同步等功能。
  • Coding / 蓝盾:提供代码托管和 CI/CD 流水线服务。

5.2 自动化流水线场景

  1. 推送代码触发
    • 开发人员提交代码到 Git 仓库。
    • 触发 Coding 流水线:编译代码 -> 构建 Docker 镜像 -> 推送到 TCR。
    • 触发 TKE 部署:自动更新 Deployment 的镜像版本,完成滚动更新。
  2. 镜像推送触发
    • 本地构建镜像并推送到 TCR。
    • TCR Webhook 触发 TKE 集群的应用更新。

课程总结

本课程详细介绍了容器服务 TKE 的全貌。在实际生产落地中,建议遵循以下黄金法则:

  1. 集群:优先选择托管集群,Master 节点交给腾讯云运维。
  2. OS:优先选择 Tencent Linux,获得最佳内核支持。
  3. 网络:性能敏感型业务首选 VPC-CNI 模式;IP 紧缺场景选择 Global Router。
  4. 代理:Service 转发模式首选 IPVS
  5. 伸缩:合理配置 Request 值,利用多可用区竞价实例伸缩组平衡高可用与成本。

通过合理的架构设计和配置,TKE 将成为您业务高效、稳定运行的坚实底座。