1 Kubernetes v1.17 新特性

上周,腾讯云团队撰文分享了他们参与开发的一个 K8s v1.17 新特性:拓扑感知服务路由。

所谓拓扑感知服务路由,指的是让 Service 可以实现就近转发,而不是所有 Endpoint 等概率转发,从而减少网络延时,进一步提升 K8s 的网络性能。

众所周知,Kubernetes 集群节点分布在不同的地方,Service 对应的 Endpoints 也分布在不同节点。传统转发策略会对所有 Endpoint 做负载均衡,等概率转发。当访问 Service 时,流量就可能被分散打到这些不同的地方。

但随着 Kubernetes 集群和 Service 变得越来越大,虽然 Service 转发做了负载均衡,如果 Endpoints 距离比较远,转发流量时网络时延会相对比较高,影响网络性能,在某些情况下,甚至还需要付出额外的流量费用。

拓扑感知服务路由可以有效缓解这个问题。在节点初始化的时候,controller-manager 会为节点打上 label 区分节点,再通过 Endpoint Slice 获取拓扑信息实现 Endpoint 筛选,然后再转换为 iptables 或 IPVS 规则写入节点以实现拓扑感知的路由转发。

据了解,这个特性将于 K8s v1.17 进入 Alpha,时间是 12 月上旬。

github.com/kubernetes/enhancements/blob/master/keps/sig-network/20190603-EndpointSlice-API.md

2 Codefresh 设立 1 亿美元开源基金

近日,CI/CD 公司 Codefresh 宣布设立一个 1 亿美元的开源基金。该基金将于 2020 年正式启动,旨在通过实现更好的 DevOps 和 CI/CD 来帮助开源项目提高质量和贡献。

对此,Codefresh CTE Dan Garfield 表示:开源是每个项目的一部分,它以令人难以置信的速度推动着现代世界的变化。Codefresh 为 Kubernetes 相关开源项目做出了许多贡献,例如 Helm 和 Chart Museum。这 1 亿美元开源基金可以让更多赋予社区力量的人获得回报。

截至目前,Codefresh 还没有给出关于开源基金的更多详细信息,但其基本思想是为开源项目提供赠款,以鼓励开发相关工具。

3 Kubernetes 混沌工程工具推荐

当前,尽管微服务、容器等技术赋予了 IT 架构更强的可伸缩性和更大的灵活性,但它们的代价是增加了复杂度,进而导致某些部分发生故障的可能性变大。

所以对于 Kubernetes,混沌测试具有极大优势。它通过破坏了解系统的工作方式,可以以安全、受控的方式排除潜在的灾难性故障。

下面是一些可用于混沌工程的工具:

  • Kubethanos:它会随机杀死一半 Pod,以便开发者观察系统在灾难性故障威胁下的表现;
  • Chaoskube:定时测试系统,默认每十分钟杀死任何命名空间中的一个 Pod;
  • Kube-monkey:这是 Netflix 推出的针对 Kubernetes 集群的 Chaos Monkey 实现,会随机删除集群中 Pod;
  • PowerfulSeal:有交互、自主、标签三种模式,自定义选择目标 Pod 并释放破坏;
  • Litmus:云原生混沌工程工具,旨在发现 Kubernetes 应用中的弱点;
  • Chaos Toolkit:具有 Kubernetes 扩展名的用于混沌工程的开放 API。

4 K8s 平台成大型金融公司 GitOps 基础

随着 Kubernetes 逐渐步入稳定,且在生产环境中变得越来越常见,如今企业 IT 专业人员已不再专注于核心平台的新版本更新,而是把注意力转向更广的应用层面。

在富达投资和 Intuit 等蓝筹金融公司中,GitOps 正取代 Kubernetes 成为众人瞩目的焦点。他们开始探索基于 Kubernetes 的容器平台,通过 Flux 等工具在平台上对应用程序执行版本控制的自动发布。

富达投资云平台架构主管 Rajarajan Pudupatti 表示:当开发人员不断加快产品迭代并推动创新时,建设一个基于 Kubernetes 的平台很有价值。而为了改变工作流程复杂、存在很多安全隐患、难以对流程进行更新的现状,将构建应用程序的所有步骤打包成为自动化平台的一部分,会为我们创造极大的价值!

当前,云原生领域中的 GitOps 工具已经开始走向成熟,甚至走向融合。如 Weaveworks 与 Intuit 就把 Argo CD 项目与 Flux CD 项目合并成了 Argo Flux,旨在通过整个行业社区推动 Kubernetes 的 GitOps 应用交付能力发展。

未来,这个项目将成为 CNCF 的联合项目。

5 本周 K8s 开源项目推荐

clusterlint

  • github.com/digitalocean/clusterlint
  • 这是一种在外部运行的非侵入性工具,通过向 Kubernetes 集群查询资源,针对这些资源执行通用的、特定于平台的检查,向集群管理员提供可操作的反馈,从而避免在运行或升级集群时遇到常见问题。

ksync

  • github.com/ksync/ksync
  • 该工具可以在本地系统和 Kubernetes 集群之间同步文件。

kail

  • github.com/boz/kail
  • 这是一个 Kubernetes 日志查看器,可按服务、副本集、部署和其他条件匹配容器。

fwd

  • github.com/adamglt/fwd
  • 该工具旨在针对 kubectl 一次执行多个端口转发。

aegir

  • github.com/grupozap/aegir
  • 这是针对 Kubernetes 的一个简单通用的 Webhook Admission Controller,允许开发者为集群资源编写自定义规则。

kadalu

  • github.com/kadalu/kadalu
  • 这是一个在后台使用 GlusterFS 的 Kubernetes/OpenShift 轻量级持久存储解决方案。

6 全球 IPv4 地址正式耗尽

上周,负责英国、欧洲、中东和部分中亚地区互联网资源分配的欧洲网络协调中心(RIPE NCC)宣布,全球所有 43 亿个 IPv4 地址已分配完毕,这意味着没有更多的 IPv4 地址可以分配给 ISP 和其他大型网络基础设施提供商。

事实上,IPv4 顶级地址(top-level )在 2012 年就已耗尽。当时,所有 IPv4 地址空间已分配给全球五大区域互联网注册机构:

  • 2011 年 4 月 15 日,亚太区互联网注册机构分配了最后一个 IPv4 区块;
  • 2014 年 6 月 10 日,拉丁美洲和加勒比海区分配了最后一个 IPv4 区块;
  • 2015 年 9 月 24 日,北美区分配了最后一个 IPv4 区块;
  • 2017 年 4 月 21 日,非洲地区分配了最后一个 IPv4 区块;
  • 2019 年 10 月 25 日,欧洲区也全部分配完毕。

该过程自 80 年代以来就已预见到。从理论上讲,IPv4 地址耗尽应该意味着不能将任何新的 IPv4 设备添加到 Internet,但事实并非如此。

首先,ISP 可以重用和回收未使用的 IPv4 地址;其次,由于 NAT(网络地址转换),我们可以在 ISP 路由器后私下使用相同的 IP 地址;最后,新的互联网协议体系 IPv6 体系正在稳步推进,它能提供比 IPv4 更庞大的地址资源。