腾讯云国际版 TKE 容器服务与弹性伸缩实战指南
在云原生时代,容器化部署已成为企业应用交付的主流方式。
- 引言
- 腾讯云国际版 CVM 云服务器概述
- TKE 集群创建与配置
- 弹性伸缩 AS 深度集成
- 轻量应用服务器 Lighthouse
- GPU 云服务器与 AI 工作负载
- 产品选型对比
- 成本优化建议
引言
在云原生时代,容器化部署已成为企业应用交付的主流方式。腾讯云国际版(Tencent Cloud International)提供了丰富的容器与计算产品线,其中 TKE(Tencent Kubernetes Engine)容器服务 是其核心产品之一。结合 弹性伸缩 AS(Auto Scaling) 和 CVM 云服务器,用户可以构建出高可用、自动伸缩的现代化应用架构。本文将深入探讨腾讯云国际版 TKE 的使用技巧、弹性伸缩配置及最佳实践。
腾讯云国际版 CVM 云服务器概述
CVM(Cloud Virtual Machine)是腾讯云的基础计算产品,为 TKE 集群提供底层算力支撑。国际版 CVM 覆盖全球多个可用区,支持按量计费和包年包月两种模式。对于容器工作负载,推荐选择 标准型 S5 或 计算型 C5 实例,它们在计算性能和网络吞吐方面表现出色。
在选择 CVM 实例作为 TKE 节点时,需要关注以下关键指标:
- vCPU 与内存配比:通用场景推荐 1:4(如 4 核 16G),计算密集型推荐 1:2
- 网络带宽:国际版提供最高 25Gbps 的内网带宽,适合大规模容器集群
- 云盘类型:系统盘推荐 SSD 云硬盘,数据盘可根据 IOPS 需求选择增强型 SSD
TKE 集群创建与配置
创建 TKE 集群
通过腾讯云控制台或 CLI 工具创建 TKE 集群。以下是使用 tccli 命令行工具创建托管集群的示例:
# 安装腾讯云 CLI
pip install tccli
# 配置访问凭证
tccli configure set secretId YOUR_SECRET_ID
tccli configure set secretKey YOUR_SECRET_KEY
tccli configure set region ap-singapore
# 创建 TKE 托管集群
tccli tke CreateCluster \
--ClusterName "prod-k8s-cluster" \
--ClusterType "MANAGED_CLUSTER" \
--ClusterVersion "1.28" \
--VpcId "vpc-xxxxx" \
--ClusterCIDR "172.16.0.0/16" \
--ServiceCIDR "10.96.0.0/16"
添加节点池
节点池是 TKE 管理计算资源的推荐方式,支持多种节点类型混合部署:
# 创建节点池
tccli tke CreateClusterNodePool \
--ClusterId "cls-xxxxx" \
--Name "general-pool" \
--InstanceType "S5.MEDIUM4" \
--DesiredNodesNum 3 \
--MinNodesNum 1 \
--MaxNodesNum 10 \
--SubnetIds '["subnet-xxxxx"]' \
--SecurityGroupIds '["sg-xxxxx"]'
配置 kubectl 访问
集群创建完成后,获取 kubeconfig 并配置本地访问:
# 获取集群凭证
tccli tke DescribeClusterKubeconfig \
--ClusterId "cls-xxxxx" > kubeconfig.yaml
# 设置环境变量
export KUBECONFIG=./kubeconfig.yaml
# 验证集群连接
kubectl get nodes
kubectl get pods -A
弹性伸缩 AS 深度集成
集群自动伸缩(Cluster Autoscaler)
TKE 内置了 Cluster Autoscaler 组件,可以根据 Pod 资源请求自动调整节点数量。启用方法如下:
# 为节点池启用自动伸缩
tccli tke ModifyClusterNodePool \
--ClusterId "cls-xxxxx" \
--NodePoolId "np-xxxxx" \
--EnableAutoscale true \
--MinNodesNum 1 \
--MaxNodesNum 20 \
--ScaleDownEnabled true \
--ScaleDownDelay 10
HPA 水平自动伸缩
配合 Kubernetes 原生的 HPA(Horizontal Pod Autoscaler),实现从 Pod 到节点的双层弹性伸缩:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-app-hpa
namespace: production
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-app
minReplicas: 2
maxReplicas: 50
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Percent
value: 10
periodSeconds: 60
部署示例应用并创建 HPA:
# 部署 Nginx 示例应用
kubectl create deployment web-app --image=nginx:latest --replicas=2 -n production
# 设置资源请求
kubectl set resources deployment web-app \
--requests=cpu=200m,memory=256Mi \
--limits=cpu=500m,memory=512Mi \
-n production
# 暴露服务
kubectl expose deployment web-app \
--port=80 --target-port=80 \
--type=LoadBalancer \
-n production
# 应用 HPA 配置
kubectl apply -f web-app-hpa.yaml
轻量应用服务器 Lighthouse
对于中小型项目和开发者个人用途,腾讯云国际版提供了 轻量应用服务器 Lighthouse。它将计算、存储和网络打包为一体化套餐,非常适合快速部署 WordPress、Node.js 应用或作为开发测试环境。
Lighthouse 相比 CVM 有以下优势:
- 套餐价格包含固定流量包,成本可控
- 预置应用镜像,一键部署常见应用
- 控制台简洁,降低运维门槛
- 适合个人博客、小型企业官网等轻量场景
Lighthouse 的使用也非常简单:
# 创建 Lighthouse 实例
tccli lighthouse CreateInstances \
--BundleId "bundle_gen_03" \
--BlueprintId "lhbp-f1lkcd41" \
--InstanceName "my-light-app" \
--Period 1 \
--Zone "ap-singapore-1"
需要注意的是,Lighthouse 不支持直接加入 TKE 集群作为节点,适合独立运行的轻量工作负载。
GPU 云服务器与 AI 工作负载
腾讯云国际版提供多种 GPU 云服务器实例,包括 NVIDIA A100、A10、T4 等型号,适用于深度学习训练、推理和图形渲染场景。结合 TKE 可以实现 GPU 资源的容器化调度:
apiVersion: apps/v1
kind: Deployment
metadata:
name: gpu-inference
spec:
replicas: 2
selector:
matchLabels:
app: gpu-inference
template:
metadata:
labels:
app: gpu-inference
spec:
tolerations:
- key: "nvidia.com/gpu"
operator: "Exists"
effect: "NoSchedule"
containers:
- name: inference-server
image: nvcr.io/nvidia/tritonserver:23.10-py3
resources:
limits:
nvidia.com/gpu: 1
env:
- name: MODEL_REPOSITORY
value: "/models"
在 TKE 集群中启用 GPU 支持:
# 安装 NVIDIA Device Plugin
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/main/nvidia-device-plugin.yml
# 验证 GPU 节点
kubectl describe nodes | grep nvidia.com/gpu
# 查看 GPU 资源使用情况
kubectl top nodes --selector=nvidia.com/gpu.present=true
产品选型对比
| 特性 | CVM 云服务器 | TKE 容器服务 | 轻量应用服务器 Lighthouse | GPU 云服务器 |
|---|---|---|---|---|
| 适用场景 | 通用计算、自建服务 | 容器化微服务、K8s 编排 | 个人网站、轻量应用 | AI训练推理、图形处理 |
| 弹性伸缩 | 需配合 AS 配置 | 内置 CA + HPA | 不支持 | 需配合 AS 配置 |
| 管理复杂度 | 中等 | 较高 | 低 | 较高 |
| 计费方式 | 按量/包年包月 | 集群管理费 + 节点费用 | 套餐制(含流量) | 按量/包年包月 |
| 网络能力 | VPC 自定义网络 | Overlay/VPC-CNI 双模式 | 简化 VPC | VPC 自定义网络 |
| 镜像支持 | 自定义/公共镜像 | 容器镜像 | 应用镜像/系统镜像 | GPU 驱动优化镜像 |
| 起步价格 | 约 $5/月起 | 集群免费 + 节点费 | 约 $3.5/月起 | 约 $100/月起 |
| 全球可用区 | 20+ | 10+ | 10+ | 5+ |
成本优化建议
- 混合使用计费模式:核心服务使用包年包月,突发流量使用按量实例,可节省 30%-50% 成本
- 合理配置资源请求:避免过度分配 CPU 和内存,使用 VPA(Vertical Pod Autoscaler)分析建议值
- 启用节点缩容:在业务低峰期自动回收闲置节点,TKE 支持设置缩容冷却时间
- 使用竞价实例:对于无状态批处理任务,选择 Spot 实例可节省高达 90% 成本
- 定期审计集群资源:使用以下命令检查资源浪费:
# 检查未使用的 PVC
kubectl get pvc -A --field-selector=status.phase=Bound
# 查看资源请求与实际使用的差距
kubectl top pods -A
# 识别孤立资源(无 OwnerReference 的对象)
kubectl get all -A -o json | jq '.items[] | select(.metadata.ownerReferences==null) | {kind: .kind, name: .metadata.name, namespace: .metadata.namespace}'
安全最佳实践
在腾讯云上运行容器工作负载时,安全是不可忽视的环节:
# 为 TKE 启用 RBAC
kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole=cluster-admin \
[email protected]
# 配置网络策略限制 Pod 间通信
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
EOF
# 开启审计日志
tccli tke EnableClusterAudit \
--ClusterId "cls-xxxxx" \
--LogsetId "logset-xxxxx" \
--TopicId "topic-xxxxx"
监控与告警配置
TKE 深度集成了腾讯云监控(Cloud Monitor),提供开箱即用的监控能力:
# 安装 Prometheus 监控组件
tccli tke InstallPrometheusAgent \
--ClusterId "cls-xxxxx"
# 查看集群核心指标
kubectl top nodes
kubectl top pods -A
# 配置节点磁盘使用率告警(通过腾讯云监控控制台)
# 推荐阈值:磁盘使用率 > 85% 触发告警
TKE 网络模式详解
TKE 提供了两种主要的容器网络模式,选型直接影响集群的性能和可扩展性:
VPC-CNI 模式
VPC-CNI(Container Network Interface)模式为每个 Pod 分配一个独立的 VPC 弹性网卡 IP(或辅助 IP),使 Pod 直接与 VPC 网络互通。这种模式的优点是网络性能接近裸金属,延迟极低,且 Pod IP 可直接被 VPC 内其他资源访问。
# 创建 VPC-CNI 模式的集群
tccli tke CreateCluster \
--ClusterName "vpc-cni-cluster" \
--ContainerRuntime "containerd" \
--NetworkType "VPC-CNI" \
--VpcCniType "tke-route-eni"
Global Router 模式
Global Router 是 TKE 的默认网络模式,基于 Overlay 网络实现。每个节点分配一个容器网段,Pod 之间通过隧道通信。此模式对 VPC 资源的消耗较少,适合大规模集群,但存在一定的网络性能开销。
网络模式对比
| 特性 | VPC-CNI | Global Router |
|---|---|---|
| Pod 网络 | 直接使用 VPC IP | Overlay 虚拟网络 |
| 网络性能 | 高(无隧道开销) | 中等(存在封装开销) |
| VPC 资源消耗 | 高(每个 Pod 占用 IP) | 低(仅节点占用 IP) |
| 单节点 Pod 上限 | 受限于弹性网卡数量 | 理论上无限制 |
| 适用场景 | 网络敏感型应用 | 大规模通用集群 |
持续集成与部署(CI/CD)集成
将 TKE 与 CI/CD 流水线集成,是提升开发效率的关键环节。以下是基于 GitHub Actions 的自动化部署范例:
# .github/workflows/deploy-to-tke.yml
name: Deploy to TKE
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker Image
run: |
docker build -t ccr.ccs.tencentyun.com/namespace/app:${{ github.sha }} .
docker tag ccr.ccs.tencentyun.com/namespace/app:${{ github.sha }} \
ccr.ccs.tencentyun.com/namespace/app:latest
- name: Push to TCR (Tencent Container Registry)
run: |
docker login ccr.ccs.tencentyun.com -u ${{ secrets.TCR_USER }} -p ${{ secrets.TCR_PASS }}
docker push ccr.ccs.tencentyun.com/namespace/app:${{ github.sha }}
docker push ccr.ccs.tencentyun.com/namespace/app:latest
- name: Deploy to TKE
uses: tencentcloud/tke-cli-action@v1
with:
secret_id: ${{ secrets.TENCENT_SECRET_ID }}
secret_key: ${{ secrets.TENCENT_SECRET_KEY }}
cluster_id: cls-xxxxx
manifest_file: k8s/deployment.yaml
同时推荐使用腾讯云容器镜像服务 TCR 作为私有镜像仓库,它提供了镜像安全扫描、跨地域同步和访问控制等企业级特性,与 TKE 集群天然集成。
故障排查与常见问题
在实际运维 TKE 集群的过程中,以下是一些常见问题及解决方法:
Pod 始终处于 Pending 状态
这通常由资源不足或调度约束导致。可以通过以下命令诊断:
# 查看 Pod 详细信息
kubectl describe pod <pod-name> -n <namespace>
# 检查节点资源分配情况
kubectl describe nodes | grep -A5 "Allocated resources"
# 检查 PVC 绑定状态
kubectl get pvc -A | grep Pending
集群节点无法加入
当新节点无法正常注册到集群时,按以下步骤排查:
# 检查节点上 kubelet 服务状态
systemctl status kubelet
# 查看 kubelet 日志
journalctl -u kubelet -n 100 --no-pager
# 验证安全组规则是否放行 443 和 10250 端口
# 确认节点 VPC 与集群 Master 的网络连通性
负载均衡器 Service 无法获取外网 IP
创建 LoadBalancer 类型的 Service 时,如果 EXTERNAL-IP 长时间处于 pending 状态:
# 查看 Service 事件
kubectl describe svc <svc-name> -n <namespace>
# 确认集群已关联正确的子网
tccli tke DescribeClusters --ClusterIds '["cls-xxxxx"]' | jq '.Clusters[0].ClusterNetworkSettings'
总结
腾讯云国际版提供了从轻量级 Lighthouse 到高性能 GPU 实例的完整计算产品矩阵。TKE 作为容器编排核心,配合弹性伸缩 AS 可以构建出既稳定又高效的应用架构。建议用户根据实际业务需求选择合适的产品组合:小型项目从 Lighthouse 起步,中型微服务架构采用 TKE + CVM,AI 场景则充分利用 GPU 实例的性能优势。
在 TKE 的日常使用中,选择合适的网络模式(VPC-CNI 或 Global Router)、建立完善的 CI/CD 流水线、以及掌握常见故障的排查方法,都是保障集群稳定运行的关键。腾讯云国际版的全球节点布局也为出海业务提供了可靠的基础设施支持,无论是东南亚、欧美还是中东市场,都能获得低延迟的云服务体验。
本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多