01 它是干嘛的
TKE 是腾讯云托管的 Kubernetes 服务。Kubernetes 是用来编排容器的开源系统,能力强大但自己搭建与维护门槛极高;TKE 把控制面托管起来,让你专注于自己的应用,而不是去伺候集群本身。它适合将大量服务分解成小模块、需要弹性伸缩与滚动发布的业务。
02 为什么会有它
部署十个服务,为什么要动十次服务器
在容器流行之前,部署一个应用意味着:登录服务器、装依赖、放代码、配进程守护、写启动脚本。每个服务都这么来一遍,服务一多,运维就成了重复劳动,而且很容易出现「测试环境能跑、生产环境跑不起来」的情况,因为两台机器的环境总有细微差别。
容器技术把应用和它依赖的运行环境一起打包成「一个盒子」,盒子在哪台机器上打开,里面的环境都一模一样,这才解决了环境不一致的老问题。但新的问题随之而来:一个业务可能有几百个这样的盒子,谁来记住哪个盒子在哪台机器上、哪台机器还有空、某个盒子挂了由谁重新拉起来?
这就是 Kubernetes 要解决的事,它像一个调度中心,负责安排所有盒子的去向并盯着它们是否健康。可 Kubernetes 本身复杂得出了名,自己搭一套并保证高可用,是专业团队才愿意啃的活。TKE 把这份复杂度接了过去:控制面由腾讯云托管,你只需要关心自己的应用,这也是它最实在的价值。
03 它怎么工作
流程可以概括为「打包成镜像 → 交给集群 → 调度到某台节点 → 按副本数维持运行 → 通过服务地址对外暴露」,中间的容错与扩缩容都由集群自动完成。
一个应用是怎么被装进盒子、又被自动调度的
- 1① 把应用打包成镜像
应用和它需要的运行环境一起被做成一个容器镜像,存进镜像仓库,随时可以取用。
- 2② 创建集群并加入节点
在 TKE 上创建集群,配上若干台节点机器(相当于装盒子的货架),集群就有了运行的场地。
- 3③ 提交部署声明期望状态
你只需要声明「我要这个应用跑三个副本」,而不是亲自指定哪台机器跑哪个,调度器会自动挑选合适的节点。
- 4④ 调度与副本维持
调度器把容器分配到有空余资源的节点上;某个容器挂了或节点坏了,集群会自动在别处重建,始终维持你声明的副本数量。
- 5⑤ 通过服务地址对外暴露
给一组容器配一个稳定的访问入口,外部请求进来后由集群自动分发给健康的容器,客户端不必关心具体跑在哪台机器。
- 6⑥ 滚动发布与灰度
更新版本时逐个替换容器,新版本健康后再停掉旧的,出现异常还能快速回退,实现不中断升级。
04 谁在用它
把一个大系统拆成几十个小服务,各自独立部署与升级,由 TKE 统一调度与治理。
根据负载自动增减容器副本数,大促时多开、低谷时少开,不必长时间预留大量机器。
滚动更新让新版本平滑上线,配合灰度发布先让小部分用户试用,降低上线风险。
同一份镜像在测试与生产都能运行,环境差异带来的「本地能跑线上不能跑」问题大幅减少。
已经在使用 Kubernetes 的团队,可以把集群迁移或新建到 TKE 上,获得托管能力与云上生态集成。
05 怎么用
需要先理解容器与 Kubernetes 的基本概念,之后在控制台点选即可创建集群,日常操作主要靠 kubectl 命令。
- 01在控制台创建集群,选择地域、集群版本与网络,并决定控制面是否托管。
- 02为集群添加节点,可以选择按量或包年包月的机器,也可以配置自动伸缩的节点池。
- 03获取集群的 kubeconfig 配置,在本地安装 kubectl 并完成连接。
- 04编写部署清单,声明应用的镜像、副本数与资源需求,用 kubectl 提交。
- 05为应用配置服务入口与负载均衡,让外部请求能访问进来。
- 06配置好健康检查与日志采集,再逐步接入监控告警,之后即可开始滚动发布。
# 用腾讯云命令行创建集群(也可直接在控制台点选)
tccli tke CreateCluster --region ap-guangzhou --ClusterName demo
# 集群就绪后,拿到 kubeconfig 以便用 kubectl 操作
tccli tke DescribeClusterKubeconfig --region ap-guangzhou --ClusterId cls-xxxxxxxx
# 部署一个三副本的应用,并暴露为可访问的服务
kubectl create deployment web --image=nginx:latest --replicas=3
kubectl expose deployment web --port=80 --type=LoadBalancer避坑提示
- !给容器设置合理的资源请求与上限,否则调度器无法判断节点是否还有余量,容易出现资源争抢与莫名被系统终止。
- !一定要配好存活探针(判断容器是否还活着),这是自动化恢复能否生效的关键,没有健康检查,集群就不知道你的应用已经卡死。
- !镜像标签不要永远用 latest,改用明确版本号,否则回滚时会不知道该回退到哪一个版本。
- !Kubernetes 概念多、学习曲线陡,团队里最好有人先系统学过一遍再接入生产,边学边用在线上出问题的代价偏高。
06 关键概念
- 容器
- 把应用和它的运行环境一起打包成的「盒子」,在哪台机器上打开,环境都完全一样。
- Kubernetes
- 容器编排系统,负责决定几百个盒子分别放在哪、坏了谁负责重新拉起。
- 节点(Node)
- 真正运行容器的机器,可以理解为装这些盒子的货架。
- 副本(Replica)
- 同一个应用同时运行的容器份数,份数越多越能扛住其中某个出故障。