TKE(Tencent Kubernetes Engine) 是腾讯云提供的容器服务PAAS 平台,基于kubernetes, 集成了腾讯云vpc网络,负载均衡,存储等IAAS 资源,提供容器调度、日志、监控、镜像仓库,Helm编排,自动弹性伸缩,微服务治理,DevOps 等功能,为客户提供完整的企业级容器服务。
在腾讯云上使用容器服务,到底是自建k8s 集群,还是直接使用TKE, 这篇文章从以下几个方面来说明各自的优势和风险。
TKE:
通过web页面一键安装,10分钟以内完成安装,提供两种集群管理模式。
自建:
虽然社区提供了kubeadm 这样的工具,但是安装一个高可用的k8s 集群也还是没那么轻松;需要手动创建api-server 的负载均衡,手动安装docker、kubelet、kubectl ,考虑证书过期问题,cni 网络插件选型问题等等。
k8s 1.14 官方文档也有说明:
You should also be aware that setting up HA clusters with kubeadm is still experimental and will be further simplified in future versions. You might encounter issues with upgrading your clusters,
使用kubeadm 安装高可用集群还在实验阶段,在未来的版本中会更简单,你可能在升级集群的过程中也会遇到问题。
TKE:
提供两种网络方案:
1. 全局路由方案
TKE 容器网络和腾讯云VPC 网络打通,容器网络和节点网络在同一平面内,可以实现在任何vpc内容器网络和节点网络互通,容器网络和客户IDC 网络互通,且没有额外的性能开销,性能接近节点网络。
如图:在管理面,TKE 在创建集群时会让让用户选择一个容器网络,如10.0.0.0/16, 安装集群时,给每个node 节点从这个网段中划分一个子网,作为Pod Cidr, Pod 创建时从Pod Cidr 选择IP 。将Pod cidr 和node的对应关系下发到全局路由表里,让容器IP 在vpc 内可路由。
在数据面,容器网络通过cbr0 在同一节点通信,eth0 出节点,在物理宿主机上完成封包、路由及解包,转发给目标pod 所在的虚拟机。
2. vpc-cni 方案
利用腾讯云弹性网卡功能,自研ipamd 及 cni 插件,实现容器直接使用vpc 内的ip 地址。同时也实现了基于StatefulSet 的podip 固定, Pod ip 自定义使用范围等高级特性。适合有历史包袱或者特殊网络安全策略的业务;比如数据库的安全组策略,业务要求只能放通某些ip 或者某个IP 范围。
自建:
测试详情:https://cloud.tencent.com/developer/column/1075
TKE:
支持腾讯云的快存储,文件存储,对象存储;文件存储和块存储目前已经支持手动或者StorageClass 的方式自动创建pv pvc, 对象存储也即将支持。
自建:
自己维护一套存储软件,如ceph, glusterfs 或者通过TKE 提供的csi插件(https://cloud.tencent.com/document/product/457/18545)使用腾讯云块存储。
TKE:
TKE 支持类型为LoadBalancer 的svc, 自动创建4层LB, 支持ingress 的方式暴露7层LB, 给服务暴露公网或者vpc 内网访问。 当然客户习惯使用nginx-ingress 或者treafik-ingress, TKE 也平滑支持。
自建:
使用TKE 提供的servicecontroller 插件,创建类型为LoadBalancer的svc, 使用腾讯云4层LB, 使用nginx 或者 traefik ingress 提供7层LB。
TKE提供的镜像仓库具有以下特性
TKE 有专门的团队来维护用户集群,从3个方面来说:
1. 集群Master 可用性
2. 集群节点可用性
3. 丰富的集群运维经验
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。