关于腾讯云:腾讯云云原生混合云TKE发行版

46次阅读

共计 4028 个字符,预计需要花费 11 分钟才能阅读完成。

背景

TKE 发行版(TKE Kubernetes Distro)是由腾讯云 TKE 公布的 K8S 发行版本,用于帮忙用户创立安全可靠的 K8S 集群。用户可依靠 TKE 发行版在自建或者托管机房、物理机或者虚机上,运行与 TKE 完全一致的 K8S 服务。TKE 发行版集群可无缝与腾讯云 TKE 集成,进而组建混合云。用户可通过 TKE 发行版集群将云下业务扩大到云上,利用腾讯云 TKE、EKS 等云服务弹性能力,为业务提供弱小的资源保障。目前 TKE 发行版已在 GitHub 开源:[[https://github.com/tkestack/t…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 完全一致的 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 <xxx> NewReplicaSet 显示为 \<none\> 的问题

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 \<release\>

目前仅反对 1.20 版本。

  1. 组件产出

编译过程中,源码门路为 _src/<release>,编译产出门路为 _output/<release>,组件包含 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/t…https://github.com/tkestack/tke-k8s-distro)

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

正文完
 0