本周作者 | 衷源、心贵

业界要闻

1、Kubernetes Release v1.15 版本发布,新版本的两个主题是持续性改进和可扩展性。(https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md#kubernetes-v115-release-notes)

2、Helm 这款包管理工具, 作为业界 Kubernetes 上应用分发的事实标准,其 v3.0.0-alpha.1 正式发布,这是 Helm 3 的第一个  Alpha 版本。(https://github.com/helm/helm/releases/tag/v3.0.0-alpha.1)

3、Google 的 Dropout 专利生效,有效期 15 年。Dropout 是深度学习的一种基础算法,对人工智能行业影响巨大。

4、Rancher 2.3 Preview 发布,通过一个简单以及友好的界面,用户即可使用 istio。(https://github.com/rancher/rancher/releases/tag/v2.3.0-alpha5)

5、Talos 发布。Talos 是一款专门用于部署Kubernetes的操作系统。相对于 CoreOS,RancherOS 或者 LinuxKit 这些容器操作系统,Talos 更为精简。(https://github.com/talos-systems/talos)

6、 Google 推出深度学习容器,包括 TensorFlow 1.13,TensorFlow 2.0,PyTorch 和 R 语言容器。

上游重要进展

Kubernetes v1.15 版本发布

Kubernetes Release v1.15 版本,新版本的两个主题是持续性改进和可扩展性。其中持续性改进着重于提高核心组件的可靠性和稳定性,同时修复一些遗留的问题;而可扩展性关注着重关注在 CRD 和 Webhook 的改进和优化上。我们就这两个主题讲述一些值得关注的特性和改进。v1.15 版本的发布意味着不仅我们可以更加便捷的管理集群和扩展集群,同时新版本的集群的稳定性更加坚固。

  • 可靠性和稳定性
    1. 新引入 WatchBookmark 特性。该特性能大大提高 Kube-Apiserver 的 List/Watch 性能,大家都知道,大规模集群下各个组件的 List/Watch 会消耗 Kube-Apiserver 巨大的性能开销,有了该特性,我们可以展望未来的集群规模又可以上升一个台阶。 (#74074, @wojtek-t)
    2. Admission 默认开启 StorageObjectInUseProtection。StorageObjectInUseProtection 能保护正在使用的 PV/PVC 被误删除。这对手速太快的开发和 SRE 同学是一个很大的福音。(#74610, @oomichi)
    3. 蚂蚁金服在大规模实践中,发现 Daemonset 有各种发布和部署 Pod 被卡住的问题,蚂蚁同学对 Daemonset Controller 可能发生的一系列死锁问题做了修复。

参考:

https://github.com/kubernetes/kubernetes/pull/78974

https://github.com/kubernetes/kubernetes/pull/77773

https://github.com/kubernetes/kubernetes/pull/77208

https://github.com/kubernetes/kubernetes/pull/78170

  • CRD 可扩展性和实用性增强
    1. 增加 CustomResourcePublishOpenAPI 特性,新版本会使用 OpenAPI v3 schemas 做 CRD 实例的校验,同时我们可以做 CRD 的Prune 和 默认值设置等,同时后续我们可能依赖 OpenAPI 做 CRD 的 Protobuf 支持。(#77825, @roycaihw)
    2. 新的 Prune 特性会默认移除 CRD 实例未知的字段,同时也不会将未知字段持久化,这会大大减少 CRD 实例未知字段带来的干扰以及降低 CRD 的存储开销同时提高性能。
    3. 支持使用 OpenAPI 校验来设置 CRD 实例的默认值。通过这种更加轻量级的方式,开发者不必费劲脑力和时间去再写一个 Webhook 监听 CRD 实例的创建去设置默认值了。(#77558, @sttts)
    4. 增加 CRD Conversion Webhook 支持多版本 CRD 实例之间的转换。之前我们的 CRD 版本升级(比如从 v1alpha1 升级到 v1betav1) 是个头疼的问题,使用这个功能我们的版本转化能完美解决(KEP)。
  • Webhook 增强
    1. Admission Webhook 的配置增加了 ObjectSelector。从之前的只能根据 NamespaceSelector 和指定资源进行过滤,到新版本的 Webhook 能对特定的 Label 的资源实例过滤,从而大大提高了 Webhook 的执行效率。
    2. Webhook 的配置允许一个 Webhook 的调用指向一个非 443 端口的服务。Webhook 包括 Admission webhook, AuditSink webhook, CRD Conversion webhook(还包括 kube-aggregator Service 的配置)。
    3. Admission Webhook的配置允许一个 Webhook 只注册和监听一个版本的资源,比如我们可以只注册 apps/v1 deployments 而不关心其它的 deployment 版本的资源,这样我们的 Webhook Server 不用随着 API 定义的升级去强行升级。

Kube-Apiserver 性能深入研究

  1. 大规模场景下一定要 Port 的几个特性:
    1. 优化 Watch event 的 dispatch https://github.com/kubernetes/kubernetes/issues/73958
    2. NodeLease 功能: https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/nodelease
  1. client-go 会把 List/Watch 超时设置为 [5min, 10min),即在超时时间后会重新发起 List/Watch,建议 Daemenset 调整这个时间到几十分钟甚至数小时级别,不然 Apiserver 可能会因为大量访问崩溃。同时,也在考虑 kubelet 是否也要修改这个值,代码的注释里写着 5min 是为了平衡负载均衡以及接触负载均衡设备 watch 的hang住 bug。
  2. client-go RateLimiter 加入 Wait 方法,避免在异步场景下使用 client-go 引起 goruntine 积压:https://github.com/kubernetes/kubernetes/pull/79375
  3. Webhook 和 Adimission 支持 context-aware: https://github.com/kubernetes/kubernetes/pull/79376
  4. Kube-Apiserver 到达 IO 瓶颈时,metric 错误的将 IO 瓶颈错误归类到 504。我们需要将逻辑处理超时和写 IO 超时分开:https://github.com/kubernetes/kubernetes/pull/79609

开源项目推荐

  1. Tektoncd: 云原生时代的 Pipeline, https://github.com/tektoncd/pipeline
  2. Volcano: Kubernetes 原生的 Job 批量调度扩展 https://github.com/volcano-sh/volcano

本周阅读推荐

《Cloud 2.0:代码不再为王,Serverless 当道!》

这一篇不错的务虚文档,可以从技术演进的视角去思考云时代的技术演进。

文章链接:

https://mp.weixin.qq.com/s/QzudayLEHg0TrJtJ30f9Vg

《微服务架构之「 监控系统 」》

这篇文档详细且完整的描述了微服务架构下的监控系统。用户可以根据此文档对微服务的解决方案进行入门级的了解。

文章链接:

https://mp.weixin.qq.com/s/xH1LX6iOJqKC5Y5IRsAhpQ

《云原生应用 Kubernetes 监控与弹性实践》

云原生应用的设计理念已经被越来越多的开发者接受与认可,而 Kubernetes 做为云原生的标准接口实现,已经成为了整个 stack 的中心,云服务的能力可以通过 Cloud Provider、CRD Controller、Operator 等等的方式从 Kubernetes 的标准接口向业务层透出。本文向大家介绍一个云原生应用该如何在 Kubernetes 中无缝集成监控和弹性能力。

文章链接:https://yq.aliyun.com/articles/704346

云原生生态周报 Vol.9| K8s v1.15 版本发布的更多相关文章

  1. 云原生生态周报 Vol. 14 | K8s CVE 修复指南

    业界要闻 Mesosphere 公司正式更名为 D2IQ, 关注云原生. Mesosophere 公司日前发布官方声明正式更名为:D2iQ(Day-Two-I-Q),称关注点转向 Kubernetes ...

  2. 云原生生态周报 Vol. 11 | K8s 1.16 早知道

    业界要闻 Pivotal 发布了完全基于 Kubernetes 的 Pivotal Application Service(PAS)预览版 这意味着 Pivotal 公司一直以来在持续运作的老牌 Pa ...

  3. 云原生生态周报 Vol. 12 | K8s 1.16 API 重大变更

    本文作者:源三.临石.张磊.莫源 业界要闻 1. K8s 1.16 将废弃一系列旧的 API 版本 影响面涉及 NetworkPolicy.PodSecurityPolicy.DaemonSet, D ...

  4. [转帖]Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31

    Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31 https://www.kubernetes.org.cn/6252.html 2019-12-13 11:59 ali ...

  5. 云原生生态周报 Vol. 3 | Java 8 ❤️ Docker

    摘要: Docker Hub遭入侵,19万账号被泄露:Java 8 终于开始提供良好的容器支持:Snyk 年度安全报告出炉,容器安全问题形势空前严峻. 业界要闻 Docker Hub遭入侵,19万账号 ...

  6. 云原生生态周报 Vol. 5 | etcd性能知多少

    业界要闻 1 Azure Red Hat OpenShift已经GA.在刚刚结束的Red Hat Summit 2019上,Azure Red Hat OpenShift正式宣布GA,这是一个微软和红 ...

  7. 云原生生态周报 Vol. 6 | KubeCon EU 特刊

    5 月 26日,2019 年第一个 KubeCon + CloudNativeCon 在巴塞罗那成功闭幕.本届 KubeCon 共吸引了超过 7700 名与会者,相较去年哥本哈根大会的 4300 余名 ...

  8. Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31

    作者 | 徐迪.李传云.黄珂.汪萌海.张晓宇.何淋波 .陈有坤.李鹏审核 | 陈俊 上游重要进展 1. Kubernetes v1.17 版本发布 功能稳定性是第一要务.v1.17 包含 22 个增强 ...

  9. 云原生生态周报 Vol.10 | 数据库能否运行在 K8s 当中?

    业界要闻  IBM 以总价 340 亿美元完成里程碑意义的红帽收购:这是这家拥有 107 年历史的公司史上规模最大的一笔收购,该收购金额在整个科技行业的并购史上也能排到前三.在当天公布的声明中,IBM ...

随机推荐

  1. c# Winform 继承窗体 无法拖动修改控件大小

    问题描述: 一个窗体集成父窗体,发现无法直接拖动修改的控件,比如修改大小等 特征: 不禁使父窗体控件,就算新加一个控件也会这样:鼠标放到控件移动手方块上会出现一个“继承的控件”的tooptip, 异常 ...

  2. SQL server已经设置为单用户模式,还是无法做分离、属性设置等操作

    https://www.cnblogs.com/xingyunqiu/p/10336938.html SQL server已经设置为单用户模式,Sql server还原失败数据库正在使用,无法获得对数 ...

  3. 机器学习实战:基于Scikit-Learn和TensorFlow 读书笔记 第6章 决策树

    数据挖掘作业,要实现决策树,现记录学习过程 win10系统,Python 3.7.0 构建一个决策树,在鸢尾花数据集上训练一个DecisionTreeClassifier: from sklearn. ...

  4. DataGridView中在新增行时怎样设置每个Cell单元格的字体样式

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

  5. 微信小程序访问webservice(wsdl)+ axis2发布服务端(Java)

    0.主要思路:使用axis2发布webservice服务端,微信小程序作为客户端访问.步骤如下: 1.服务端: 首先微信小程序仅支持访问https的url,且必须是已备案域名.因此前期的服务器端工作需 ...

  6. C# 运行时的关系

    简介 记录c#对象在托管堆中运行时的相互关系,如下记录了一个方法在执行时候的生命周期,当方法在之前,CLR会先执行将方法里面所有用到的局部变量.参数对应的内存地址等全部存放当前线程栈当中,并且会将所有 ...

  7. BayaiM__MySQL 常用函数

    BayaiM__MySQL 常用函数 原创 作者:bayaim 时间:2016-06-16 09:11:13 122 0删除编辑  MySQL 常用函数 阅读(883430) | 评论(44543) ...

  8. Python—闭包和装饰器

    闭包 定义:内部函数对外部函数变量的引用,则将该函数与用到的变量称为闭包. 闭包必须满足以下三个条件: 必须有一个内嵌函数. 内嵌函数必须引用外部函数中的变量. 外部函数返回值必须是内嵌函数的引用. ...

  9. Apache—给一个站点绑定多个域名

    前提简介: ServerAdmin:Apache服务管理员通知邮箱地址,如果有真实的邮箱地址也可以设置此值.  ServerName:是服务的名字,只能填写一个域名. ServerAlias:serv ...

  10. I2C硬件与模拟的区别

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C:一般也较为稳定,但是程序较为繁琐. 硬件(固件)I2C是直接调用内部寄存器进行 ...