刘晨,腾讯云后台开发工程师,TKEStack社区核心成员,负责TKEStack的设计开发维护及混合云项目相关工作。
胡晓亮,腾讯云专家工程师,专注云原生领域。目前负责开源社区TKEStack和混合云项目的设计和开发工作。
随着云计算及云原生技术在各个领域内的逐步普及,基于 Kubernetes 的混合云相关概念和项目越来越受到人们的关注。以混合云形态部署企业的业务服务,在理论上可以最大化利用现有资源,形成差异互补和成本优化。以云计算及云原生技术作为基础设施的企业大致可以分为两类:一种是已经有存量 IDC 的企业,一种是业务全面使用公有云的企业。从已经有存量 IDC 的企业角度考虑,混合云可以最大化利用现有IDC资源的同时,既可以发挥 IDC 的灵活安全能力,也可以享受到公有云的高性价比优势;从业务全面使用公有云的企业角度考虑,混合云在为企业提供不同云服务商的差异能力的同时,也减少了企业绑定单一云服务商的潜在风险。
尽管混合云的愿景是美好的,但走向这愿景的路并非简单。本文将着重介绍 TKEStack 提供混合云能力的道路上,在统一操作系统版本、 Kubernetes 版本、容器运行时和用户交互上遇到的困境与解决方案。
在 Linux 和 Kubernetes 受到广泛关注的今天,其安全问题的影响范围也越来越大。例如 2018 年爆出的特斯拉公司计算基础设施被黑客入侵用来挖矿的事件[1],就是因为特斯拉在亚马逊 AWS 上的 Kubernetes 容器集群访问权限没有得到妥善保护,导致存储在S3网络存储桶上的一些敏感技术数据,例如遥测技术,被窃取。
根据 Palo Alto Networks 公司 Unit 42 团队的研究报告,在 2018 年 1 月至 2019 年 6 月之间,有2万多个基于 Kubernetes 的容器平台被暴露,下图为这些被暴露平台在全球范围内的统计数据[2]:
该报告中还统计了各云服务提供商平台上发现的漏洞:亚马逊 AWS 平台上被发现超过 2900 万个漏洞,谷歌云发现的漏洞数量接近 400 万,微软 Azure 发现了 170 万左右漏洞。
这些漏洞分布在各种操作系统版本、Kubernetes 发行版本、容器运行时乃至用户交互的前端相关代码中。这些关键要素的不统一在客观上为这些安全漏洞提供了温床。
不统一也会使得用户的运维成本变得很高。例如当前 TKEStack 在混合云场景主推的网络方案 Cilium,其很多特性都要求在特定的内核版本以上才支持开启,下图是 Cilium 不同特性对内核版本要求的统计[3]:
而 Kubernetes 版本尽管声明 patch 版本上下兼容,但实际上在各版本间 API 资源对象的转换方面可能存在兼容问题。例如 TKEStack 在升级 Kubernetes API 版本时就发现 url.Values
隐式自动转换为 Kubernetes 对象已经被废弃[4],导致很多接口无法正常使用。
随着业务的运行时间拉长和不断迭代,因为操作系统、Kubernetes、容器运行时和 UI 的不统一造成的运维成本,也会随着时间的推移越堆越高。
TencentOS Server 又名 Tencent Linux,简称 Tlinux 是腾讯针对云场景研发的 Linux 操作系统,提供了专门的功能特性和性能优化,为云服务器实例中的应用程序提供高性能,且更加安全可靠的运行环境[5]。
作为一个Linux发行版,Tlinux 拥有以下优势:
在混合云场景下 TKEStack 推荐使用 TencentOS Server 作为底层的操作系统,安全高效并提供了强大的云原生能力,关于 TencentOS Server 可以到项目网站【 https://github.com/Tencent/TencentOS-kernel 】以了解更多内容。
长久以来,TKEStack 只提供了原生 Kubernetes 给用户使用,这使得 TKEStack 所能提供给用户的能力常常受到原生 Kubernetes 的现有能力的限制。为了打破这一现状,TKEStack 在前不久发布的 1.7 版本引入了由腾讯云 TKE 发布的 Kubernetes 发行版本,TKE 发行版(TKE Kubernetes Distro)。TKE 发行版在保证兼容性的基础上,对 K8s 进行了扩展,并且与腾讯云 TKE 服务保持版本一致。用户可以在自己的 IDC 或者混合云上部署 TKE 发行版,使用已有企业用户大规模验证的可靠安全的 Kubernetes 服务[6]。
相比原生的 Kubernetes 版本,TKE 发行版优势有下面几项:
关于 TKE 发行版的更多信息可以访问 【https://github.com/tkestack/tke-k8s-distro】 以进一步了解。
在 1.7 版本中 TKEStack 支持 TKE 发行版本和原生两种 Kubernetes 发行版本,由于 TKE 发行版完全兼容原生 Kubernetes 发行版本,在后续的迭代中 TKEStack 将朝着只携带 TKE 发行版的方向逐步前进。
2020 年年末,Kubernetes 社区宣布预计最早将在2021年晚些时候发布的 1.23 版本中废弃 dockershim[7],这意味着未来的 Kubernetes 将不再支持以 Docker 作为容器运行时。
TKEStack 社区经过研讨调研后,决定使用和腾讯公有云 TKE 一致的 Containerd 作为未来替代 Docker 的容器运行时。Containerd 是除 Docker 外当下最为成熟稳定,并被广泛接受的容器运行时,下图是 2021 年年初关于容器运行时使用率相关的调查统计[8]:
Containerd 的架构是 client-server 架构,支持 runc、Kata Container 等多种底层运行时,同时又有很高的扩展性,下图为 Containerd 的整体架构图[9]:
作为过渡时期,如果用户选择的 Kubernetes 版本依旧支持 dockershim,TKEStack 将允许用户在创建集群时决定选择 Docker 还是 Containerd 作为容器运行时,并提供文档,帮助用户将存量集群的 runtime 从 Docker 迁移到 Containerd。未来,TKEStack 会移除掉 Docker 的依赖,全面兼容社区的 CRI 标准模型,并将 Containerd 作为默认的 runtime 与公有云 TKE 保持统一。
统一的交互风格可以大大减少用户的学习成本和心智负担。TKEStack 与腾讯公有云 TKE 产品采用了相同的交互风格,用户只需要适应了其中一个的交互习惯,就可以几乎零学习成本的操作使用另外一款产品。下图展示了 TKEStack 和腾讯公有云 TKE 产品的用户前端交互页面:
TKEStack 和腾讯公有云 TKE 产品上有着很多相同的概念,针对这些概念的视图展示逻辑也是一致的。在混合云场景下,这种一致性将产生积极的化学反应,对用户非常友好,并减轻了维护上的成本。
交互的统一不仅仅对用户有很多好处,对后续 TKEStack 的产品设计,后台架构搭建及能力实现上都有着积极的作用,而这种积极作用会为 TKEStack 加速布局混合云领域提供有力的支持。
正所谓工欲善其事,必先利其器,只有统一巩固一个强大稳定的平台基石,TKEStack 才会在提供混合云能力的道路上行驶的更加平稳。后续我们会在该系列中介绍更多关于 TKEStack 的混合云能力,敬请大家期待。
最后欢迎大家到 TKEStack 的项目仓库【 https://github.com/tkestack/tke】 提出建议贡献力量,大家的支持将会令 TKEStack 项目变得更好!
[1] Lessons from the Cryptojacking Attack at Tesla 【https://redlock.io/blog/cryptojacking-tesla】
[2] Cloudy with a Chance of Entropy 【https://www.paloaltonetworks.com/resources/research/unit42-cloud-with-a-chance-of-entropy】
[3] Required Kernel Versions for Advanced Features 【https://docs.cilium.io/en/v1.10/operations/system_requirements/#required-kernel-versions-for-advanced-features】
[4] Can no longer call DecodeParameters with url.Values in 1.19.0 client-go 【https://github.com/kubernetes/kubernetes/issues/94688】
[6] 腾讯云云原生混合云-TKE发行版
[7] Dockershim Deprecation FAQ 【https://kubernetes.io/blog/2020/12/02/dockershim-faq/】
[8] Sysdig 2021 container security and usage report: Shifting left is not enough 【https://sysdig.com/blog/sysdig-2021-container-security-usage-report/】
[9] Introduction and Deep Dive Into Containerd 【https://static.sched.com/hosted_files/kccnceu2021/d3/containerd-KubeConEU2021.pdf】
往期精选推荐