热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

腾讯云云原生混合云TKE发行版

背景TKE发行版(TKEKubernetesDistro)是由腾讯云TKE发布的K8S发行版本,用于帮助用户创建安全可靠的K8S集群。用户可依托TKE发行版在自建或者托管机房、物理

背景

TKE 发行版(TKE Kubernetes Distro)是由腾讯云 TKE 发布的 K8S 发行版本,用于帮助用户创建安全可靠的 K8S 集群。用户可依托 TKE 发行版在自建或者托管机房、物理机或者虚机上,运行与 TKE 完全一致的 K8S 服务。TKE 发行版集群可无缝与腾讯云 TKE 集成,进而组建混合云。用户可通过 TKE 发行版集群将云下业务扩展到云上,利用腾讯云 TKE、EKS 等云服务弹性能力,为业务提供强大的资源保障。目前 TKE 发行版已在 GitHub 开源:[https://github.com/tkestack/tke-k8s-distro](https://github.com/tkestack/tke-k8s-distro)。

使用场景与定位

在混合云场景下,不同的云服务商提供的 K8S 并不完全相同。并且用户在云服务商以外的环境只能使用社区版 K8S,而运行环境的任何微小差异都可能导致业务故障,因此,如何尽可能地保障多环境中基础组件的一致性变得尤为重要。 TKE 发行版便是解决这个问题的一个不错的选择,用户无需花费精力去关注不同环境下 K8S 的能力差异,以及自行修复 K8S 中的遇到的问题。

依赖 TKE 发行版,用户现在可以编译和构建与腾讯云 TKE 相同的 K8S 版本。这意味着用户现在可以手动部署可靠和安全的集群,而无需持续测试和跟踪 K8S 更新、依赖关系和安全补丁。每一个 TKE 发行版都遵循腾讯云 TKE 和 K8S 社区标准新版本兼容性的流程。

TKE 发行版在保证兼容性的基础上,对 K8S 进行了扩展,并且与腾讯云 TKE 服务保持版本一致。用户可以在自己的 IDC 或者混合云上部署 TKE 发行版,使用已有企业用户大规模验证的可靠安全的 K8S 服务。

TKE 发行版的每个版本都会通过 K8S 社区官方一致性测试,保证兼容性,同时以 patch 形式提供源代码,并提供构建工具帮助用户进行编译。TKE 发行版目前支持 v1.20 版本。

腾讯云云原生混合云-TKE发行版

我们的优势

大规模生产集群验证

TKE 发行版提供与腾讯云 TKE 相同的可安装版本和开源代码,功能和稳定性经过大量企业用户、公有云及自研云锤炼。用户可以使用提供的源代码和编译工具进行构建和部署。

无缝集成公有云TKE

TKE 发行版可支持用户在自建或者托管机房,物理机或者虚机上,运行与腾讯云 TKE 完全一致的 K8S 服务。并且可以无缝与腾讯云 TKE 集成,组建混合云集群。

更长支持周期

TKE 发行版的支持周期比社区版更长。在社区版停止支持后,TKE 发行版将继续得到支持,包括重要问题以及安全漏洞的修复。

更多实用能力增强

TKE 发行版结合腾讯自身业务特点和经验,针对部分场景(弹性扩容、离在线混部、资源隔离等)实现了能力增强。并且 TKE 发行版紧跟社区趋势,主导或深度参与社区 KEP 设计与实现。对于有实用价值 KEP 会先于社区支持,让用户提前享受到云原生技术进步。

功能增强

支持弹性扩容到腾讯云 EKS 服务

EKS 是腾讯云的弹性容器服务,用户无须购买节点即可部署工作负载,非常适合突发等临时的扩容需求。在需要临时扩容时,可以秒级快速把工作负载从 TKE 发行版集群扩容到 云上 EKS,应对突发和临时流量,提高资源利用率,降低运维和资金成本。

支持动态修改 kube-controller-manager 日志级别

在运维 K8S 生产集群中,我们一般设置较低日志级别(0~2),而在问题排查时我们需要提高日志级别。TKE 发行版实现了动态修改日志级别功能,从而避免因组件重启导致关键日志丢失。目前 K8S 官方版本支持 kube-apiserver、kubelet 和 kube-scheduler 设置,TKE 发行版额外实现了 kube-controller-manager 组件的日志动态调级。

该 feature 已提交社区:https://github.com/kubernetes/kubernetes/pull/98262

支持 Memory QoS with cgroups v2 特性(进行中)

Memory QoS with cgroups v2 是 TKE 团队设计实现的内存 QoS 功能,它利用 v2 memory controller 中 memory.min/memory.high 为 pod/container/node 提供全方位的内存保护。

目前该 KEP 已被 K8S 社区接受,预计在 v1.22 中实现 alpha 版。TKE 发行版会先于社区支持该特性,为用户 Pod、集群节点等提供更好的内存保护。

Memory QoS with cgroups v2:https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/2570-memory-qos

支持 TencentOS QoS 特性(进行中)

TencentOS 是腾讯针对云场景研发的 Linux 操作系统,专门针对容器场景提供了原生优先级支持及资源隔离增强,包括 CPU、内存、磁盘 IO 和网络 IO 等。TKE 发行版内置了对 TencentOS QoS 特性的支持,将 K8S 资源隔离和 QoS 分级 offload 到 TencentOS 实现。该特性在开发中,预计下个版本支持。

TencentOS:https://github.com/Tencent/TencentOS-kernel

稳定性增强

TKE 发行版依据大量生产经验,修复众多生产级 bug,支持千万核集群在腾讯稳定运行。主要 bugfix 包括:

1. 修复使用 containerd 时集群监控指标缺失问题

在 containerd 作为 container runtime 的集群中,kubelet 没有正确设置采集指标的containername,导致不能被归类和分析。TKE 发行版本修复了该问题,提交社区 PR:https://github.com/kubernetes/kubernetes/pull/90260

2. 修复删除 Pod 后立即创建并调度到同一个节点可能导致无法挂载成功的问题

K8S statefulset pod 在删除后重新创建,如果 pod 调度到同一个节点,会因为卷挂载失败而导致启动失败。TKE 发行版修复了该问题,提交社区 PR:https://github.com/kubernetes/kubernetes/pull/72914

3. 修复 CentOS 下创建容器会导致 cgroup 泄露的问题

TKE 发行版关闭了 kernel memory accouting 以避免 cgroup 泄露。

4. 修复 kubectl describe deployment NewReplicaSet 显示为 的问题

kubectl describe 在获取 deployment 对象后,会对 volume 进行排序,有时会导致无法匹配到最新 replicaset。TKE 发行版修复了该问题,提交社区 PR:https://github.com/kubernetes/kubernetes/pull/97752

5. 修复 Pod 容器镜像有多 tag 时,Pod status 镜像 tag 会不匹配问题

Pod 容器一镜像有多 tag 时,会导致 pod spec 容器镜像 tag 与 kubelet 上报不符。TKE 发行版 backport 社区 PR 修复此问题:https://github.com/kubernetes/kubernetes/pull/94833

6. 修复 aws credential provider 导致 kubelet 启动 20s 延迟问题

AWS credential provider 在初始化时会尝试连接 AWS 元数据服务,会导致非 AWS 集群出现最长 20s 启动延迟。TKE 发行版上报了 bug https://github.com/kubernetes/kubernetes/issues/92162,并 backport 社区 PR https://github.com/kubernetes/kubernetes/pull/93260

7. 修复 Ubuntu16.04 lxcfs 升级造成 pod 退出问题

K8S 集群在 Ubuntu16.04 下默认安装低版本 lxcfs,在对 lxcfs 升级后,会导致 pod 无法正常运行。原因是低版本 lxcfs 挂载 cgroupfs,kubelet 在启动时会使用 lxcfs 已挂载 cgroupfs,而非系统 /sys/fs/cgroup。lxcfs 在升级新版本后,旧 cgroupfs 会被解挂,导致 kubelet 对 pod cgroup 操作失败。TKE 发行版修复了该问题。

如何使用 TKE 发行版

TKE 发行版提供了安装工具脚本,帮助用户自动编译和构建发行版镜像,极大降低了 TKE 发行版的使用门槛。

编译和构建流程包括:

  1. 拉取 patch 代码
git clone [https://github.com/tkestack/tke-k8s-distro](https://github.com/tkestack/tke-k8s-distro)

  1. 编译组件
make

或者

make \

目前仅支持1.20版本。

  1. 组件产出

编译过程中,源码路径为_src/,编译产出路径为 _output/,组件包括kubeadm, kube-apiserver, kube-controller-manager, kubectl, kubelet, kube-proxy, kube-scheduler

下一步

TKE 发行版的推出,使得用户线下 IDC 与腾讯云上 TKE 的融合成为可能。我们期望 TKE 发行版未来能成为混合云与多云的基石,让用户在混合云环境中,可随时随地享受到和云上 TKE 一致的体验。

TKE 发行版未来会以开源方式运作,用户可以通过 GitHub 提供任何反馈,不仅限于 Issue 和 PR。

GitHub:[https://github.com/tkestack/tke-k8s-distro](https://github.com/tkestack/tke-k8s-distro)


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
丶Le丨囧囧_832
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有