前言
《云原生生态周报》由阿里云容器平台联合蚂蚁金服共同发布,每周一期。众多一线社区专家与您一起“跟踪动态,读懂社区”,分享云原生社区项目进展、活动发布、精选博客等信息。以下是第二十七期云原生生态周报的内容。
业界要闻
美国时间 11 月 13 日,Helm 团队发布 Helm 3 第一个稳定版本。Helm 3 以 Helm 2 的核心特性为基础,改进了 chart 存储库、版本管理、安全性和 chart 库。在这个版本中,Helm 维护者整合了来自社区的反馈和请求,以更好地满足 Kubernetes 用户和广泛的云原生生态系统的需求。附:博客地址。
报告显示,JavaScript 依然是最受欢迎的语言,Python 反超 Java 成为第二名,Kubernetes 进入最受欢迎的开源项目 Top10。
3.KubeCon + CloudNativeCon 北美地区会议召开
KubeCon + CloudNativeCon North America 2019 将在下周(11 月 18 日 - 11 月 21 日)在 San Diego 召开。
这是继 Kubernetes 和 Envoy 之后,发布的第三份关于 CNCF 毕业项目的报告。本报告试图客观地评估 Prometheus 项目的状态,以及 CNCF 如何影响 Prometheus 项目的进展和成长。
Kubernetes release 1.17 将于周四(11 月 14 日)code freeze。
上游重要进展
Kubernetes Feature
InterPod Affinity(Scheduler)
优化计算 priority 的过程,在 topology 层对 score 进行汇聚,不用遍历 node 进行汇聚;
nodeInfo snapshot 中记录 pod affinity 信息,缩小 priority 和 predicate 中的查询范围;
节点租约 NodeLease(Kubelet)
降低节点更新频率,强制心跳的时间阈值调整到 5min;
节点心跳的 NodeLease 的 feature 从 FeatureGate 提升到了 GA(1.17)。
权衡使用 CacheObject
的开销,当 watcher 的数量大于 3 的情况下才使用,小幅度提升 watcher 性能。
当存在 encoding error 时需要及时关闭 watcher,防止出现 goroutine 泄漏。
Kubelet 增加了一个 kubelet_preemptions
的 Metric 去记录 Pod 因缺少资源而被 evict 的次数,短时间内大量的 evict 可以反映出 scheduler 或者 controller 上可能有 BUG。
Kubelet 增加一个 Histogram Metric 记录集群中所有 Kubelet 的证书过期时间。
KEP
增加 scheduler priority ReadyPodPriority
,适用于例如新加入的集群的 node,会在短时间内被调度大量的 pod,同时启动多个 pod 可能造成压力过大的情况。
用来追踪一个 Object 在不同 Kubernetes 组件中的整个生命周期。
ETCD
优化 compact:将 compact 和 put/range handler 放在不同的 goroutine,减少 compact 阻塞 put/range 的情况;
boltdb freelistType 的 Feature 从 experimental 提升至 GA(3.5),默认的 freelistType 从 array 改为 map;
为 etcd server 的 put、range、compact 请求过程增加 tracing,与 apiserver tracing 方式一致,记录 raft、内存 btree 索引、boltdb 等多个查询过程的耗时,便于排查性能问题,txn 暂不支持。
Istio
Istio 和 Envoy 当前支持两种主要的解析形式,用于对服务的流量进行负载均衡:基于 IP 的终端列表(EDS)和基于 IP 的主机列表(STRICT_DNS),由 Envoy 在运行时解析。
社区在讨论支持新的用例,要求可以使用混合解析模型:服务既可以包含基于 IP 地址的终端,也可以包含需要进行 DNS 解析的主机名。满足这个需求的方法之一是在 Envoy 中引入 Aggregate Cluster 的概念,Aggregate Cluster 包含 EDS cluster 和 STRICT_DNS cluster,当 EDS cluster 失败时,回退到 STRICT_DNS cluster。
讨论 用 Istiod 代替 Pilot 的方式
计划以增量方式来推进 Istiod 合并部署控制平面的方案,建议的合并顺序是:Sidecar injector,Galley,Citadel。Istiod 计划在 1.5 版本中提供并作为默认安装方式,现有客户可以逐渐将组件迁移到 Istiod。
讨论引入 ExternalInstance 进行 Mesh 的扩展
这个 Proposal 提出通过将每个虚拟机注册为 ExternalInstance(视为非托管 Pod),在 VM 和服务之间添加一个间接层,从而改善 Mesh 的扩展。这将解耦网格中的 VM 成员资格与路由和服务命名事项。
Knative
发起 Knative eventing 组件 serverless 化的讨论。当前 consumer service 可通过 knative-serving 部署,具备 autoscale 的能力。但是 Knative eventing 本身组件(sources, channels, brokers, …) 不具备 scale 能力。
开源项目推荐
quarkus
云原生 Java 应用框架,精简了 OpenJDK 的 HotSpot 和 GraalVM,启动速度快,RSS memory 开销小。
kfserving
serverless 机器学习 model serving 框架。
tracee
利用 eBPF 的容器 tracing 工具,可以收集容器中进程调用的 syscall 等。
NexClipper
是一种快速简单的 Kubernetes 解决方案。
本周阅读推荐
系统化介绍 Kubernetes 中 Pod 调度的过程以及 Scheduler 组件的工作原理。
2.《Building a Large-scale Distributed Storage System Based on Raft》
介绍了 TiDB 如何基于 raft 构建大型存储系统,解决分片、扩展性、一致性、可用性等问题。
利用自动超参搜索对 TiKV 及其底层的 RocksDB 进行参数搜索和调节。
4.《Primier:What is Container Security?》
本文主要介绍了应该使用哪些最佳安全实践,来保证容器和平台在安全的环境下运行。
本文从 Knative 的健康检查的角度来分析 Serverless 模式和传统的模式的不同,介绍 Knative 针对 Serverless 场景的独特考虑。
相关阅读
云原生生态周报 Vol. 26:2019 年容器生态统计报告发布
云原生生态周报 Vol. 25:Canonical 开源 MicroK8
云原生生态周报 Vol. 24:Ubuntu 19.10 发布
云原生生态周报 Vol. 23:全球首个开放应用模型 OAM 开源
云原生生态周报 Vol. 22:Knative 暂时不会捐给任何基金会
云原生生态周报 Vol. 21:Traefik 2.0 正式发布
云原生生态周报 Vol. 20:Kubernetes v1.16 发布
云原生生态周报 Vol. 19:Helm 推荐用户转向 V3
云原生生态周报 Vol. 18:独家解读 etcd 3.4 新特性
云原生生态周报 Vol. 17 :Helm 3 发布首个 beta 版本
云原生生态周报 Vol. 16:CNCF 归档 rkt,容器运行时“上古”之战老兵凋零
云原生生态周报 Vol. 13 | Forrester 发布企业级容器平台报告
云原生生态周报 Vol. 12 |K8s 1.16 API 重大变更
云原生生态周报 Vol. 11 | K8s 1.16 早知道
云原生生态周报 Vol. 10 | 数据库能否运行在 K8s 当中?
云原生生态周报 Vol. 9 | K8s 1.15 后的性能提升
云原生生态周报 Vol. 8 | Gartner 发布云原生趋势
云原生生态周报 Vol. 7 | Docker 再爆 CVE
云原生生态周报 Vol. 6 | KubeCon EU 亮点汇总
云原生生态周报 Vol.4 | Twitter 从 Mesos 全面转向 Kubernetes
云原生生态周报 Vol. 3 | Docker Hub 遭入侵,Java 8 开始提供良好的容器支持
云原生生态周报 Vol. 2 | Godaddy 开源 KES、CNCF 提供免费云原生课程
云原生生态周报 Vol. 1 | Google 发布 Cloud Run,开源项目 Kubecost 让 K8s 花费一目了然
本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative)。
评论