深色模式
腾讯云 TKE 实战
面向在腾讯云上落地生产 TKE 集群的工程师。覆盖集群形态选型、CAM 权限、网络模型、CBS/COS 存储、CLB 与排障。
厂商特定
本文全部内容依赖腾讯云 TKE 的特定实现(CAM、GlobalRouter/VPC-CNI、CBS、CLB、超级节点)。跨云不适用,其他云请看同目录 ACK / EKS 篇。
适用版本与前提
- TKE:托管集群 / 独立集群(自行管控 master)
[版本相关] - 前提:腾讯云账号、已规划 VPC 与子网、CAM 权限充足
背景与问题
TKE 提供两种形态,选错会显著影响后续运维负担:
| 形态 | 控制面 | 适用 |
|---|---|---|
| 托管集群 | 腾讯云托管 master | 绝大多数生产场景(推荐) |
| 独立集群 | 用户自管 master 节点 | 需要深度定制控制面参数 |
绝大多数团队应选托管集群:少运维一套 etcd/apiserver,且 master 高可用由平台负责。
核心概念
| 概念 | 说明 |
|---|---|
| GlobalRouter | 默认网络模式,为每个节点分配一个子网段,容器 IP 在集群内可路由 |
| VPC-CNI | 容器直接使用 VPC IP,适合需要与 VPC 内资源直连/被直连的场景 |
| CBS | 云硬盘,通过 CBS CSI 提供块存储(有状态服务) |
| CFS / COS | 文件存储 / 对象存储(共享文件、静态资源) |
| CLB | 云原生负载均衡,由 TKE 的 Service/Ingress 控制器联动 |
| 超级节点(EKS Serverless) | 无节点形态,按 Pod 资源计费,免节点运维 |
| CAM | 腾讯云访问管理,对应 AWS IAM 的角色/策略体系 |
架构与原理
关键点:网络模式(GlobalRouter vs VPC-CNI)在创建集群时选定且通常不可在线切换,这是最需要提前决策的一项。
生产实践
1. 创建集群(控制台 / 命令行)
生产建议用 IaC(Terraform/OpenTofu 的腾讯云 Provider)固化,控制台仅用于验证:
bash
# 配置 kubeconfig(示例,具体命令以官方文档为准)
# tke 集群凭证获取后写入 ~/.kube/config
kubectl config use-context <tke-cluster>
kubectl get nodes
kubectl get cs 2>/dev/null || kubectl get --raw /readyz1
2
3
4
5
2
3
4
5
建议
生产集群务必跨可用区:节点池分布在 ≥2 个 AZ,并用
topologySpreadConstraints打散 Pod,避免单 AZ 故障导致整体不可用。
2. CAM 权限最小化
TKE 的权限分两层,容易混淆:
- CAM 侧:谁能在腾讯云控制台/API 上操作集群(创建、删除、扩缩容)。
- K8s 侧(RBAC):谁能在集群内操作资源(Pod、Deployment)。
二者需分别授权。CAM 有集群管理权限 ≠ 集群内有 RBAC 权限,反之亦然。
bash
# 集群内权限用 RBAC 收敛(示例:只读角色)
kubectl create rolebinding viewer-binding \
--clusterrole=view --user=<cam-user-uin> -n prod1
2
3
2
3
生产危险
不要把
cluster-admin直接授予 CAM 子账号或协作者作为长期方案。应按命名空间授予最小角色,并对生产命名空间单独审批。
3. 存储:CBS CSI 与默认 StorageClass
yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: cbs-ssd
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
provisioner: com.tencent.cloud.csi.cbs
parameters:
type: CLOUD_SSD # 云硬盘类型(以控制台可选值为准)[厂商特定]
diskChargeType: POSTPAID_BY_HOUR
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
namespace: prod
spec:
accessModes: [ReadWriteOnce]
storageClassName: cbs-ssd
resources:
requests:
storage: 100Gi1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
注意
CBS 为
ReadWriteOnce(单可用区挂载),跨 AZ 挂载会失败。有状态应用必须与节点同 AZ,或用WaitForFirstConsumer让调度器保证一致性。多 AZ 共享文件请选 CFS。
4. Ingress / CLB
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
namespace: prod
annotations:
kubernetes.io/ingress.class: qcloud # [厂商特定]
# 如需 CLB 直通 Pod:
# service.cloud.tencent.com/direct-access: "true"
spec:
rules:
- host: web.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 801
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5. 弹性:节点池 + 超级节点
yaml
# 用 HPA 驱动业务副本伸缩
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web
namespace: prod
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web
minReplicas: 3
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 701
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
未实测
超级节点(Serverless)按 Pod 资源计费、免节点运维,但功能与网络形态有约束,且单价与常规 CVM 的性价比对比需结合你的负载实测。
验证
bash
kubectl get nodes -o wide
kubectl get pods -n kube-system
kubectl -n prod get svc,pvc,ingress
kubectl -n prod describe pvc data1
2
3
4
2
3
4
回滚与清理
bash
# 缩容/回滚发布
kubectl rollout undo deployment/web -n prod
kubectl rollout status deployment/web -n prod
# 清理工作负载(保留数据卷需先改 PV 回收策略)[危险]
kubectl delete -n prod -f .1
2
3
4
5
6
2
3
4
5
6
生产危险
删除集群会触发节点与关联云资源回收,CBS 卷可能按
Delete策略被销毁。执行前务必确认备份,并对关键卷改为Retain。
故障排查
| 现象 | 定位 |
|---|---|
| 节点未加入集群 | 检查节点池状态、CVM 是否正常、安全组是否放通、kubeconfig 是否有效 |
| Pod 调度 Pending | 资源不足 / CBS 跨 AZ / 节点池伸缩未触发:kubectl describe pod 看 Events |
| PVC 一直 Pending | CBS CSI 未就绪或配额不足;检查 StorageClass 的 provisioner 与可用区 |
| CLB 未生成 / 不通 | 检查 Ingress 注解 ingress.class、CLB 控制器日志、后端健康检查 |
| 容器网络不通 | 确认 GlobalRouter/VPC-CNI 模式、路由表与安全组 |
bash
kubectl describe pod <pod> -n prod
kubectl get events -n prod --sort-by=.lastTimestamp | tail -30
kubectl logs -n kube-system -l app=cbs-csi # 名称以实际为准 [版本相关]1
2
3
2
3
安全与合规
- 生产集群的 API 访问建议开启内网访问 / 访问控制白名单,避免公网裸奔。
- 开启集群审计日志与操作审计(云审计),留存关键操作。
- 镜像仓库使用私有仓库并开启漏洞扫描;Secret 用 KMS 加密(
[厂商特定])。
性能、容量与成本
- 托管集群控制面与 CVM 节点分别计费;跨 AZ 流量会产生费用。
- GlobalRouter 模式容器网段需在创建时规划,后续扩容受限——CIDR 规划是前期最重要的决策之一。
- 节点池配合 CA 做弹性,可显著降低常态成本。