云原生生态周报 Vol.9| K8s v1.15 版本发布

本周作者 | 衷源、心贵
业界要闻
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 版本的发布意味着不仅我们可以更加便捷的管理集群和扩展集群,同时新版本的集群的稳定性更加坚固。
- 可靠性和稳定性
- 新引入
WatchBookmark特性。该特性能大大提高 Kube-Apiserver 的 List/Watch 性能,大家都知道,大规模集群下各个组件的 List/Watch 会消耗 Kube-Apiserver 巨大的性能开销,有了该特性,我们可以展望未来的集群规模又可以上升一个台阶。 (#74074, @wojtek-t) - Admission 默认开启 StorageObjectInUseProtection。StorageObjectInUseProtection 能保护正在使用的 PV/PVC 被误删除。这对手速太快的开发和 SRE 同学是一个很大的福音。(#74610, @oomichi)
- 蚂蚁金服在大规模实践中,发现 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 可扩展性和实用性增强
- 增加 CustomResourcePublishOpenAPI 特性,新版本会使用 OpenAPI v3 schemas 做 CRD 实例的校验,同时我们可以做 CRD 的Prune 和 默认值设置等,同时后续我们可能依赖 OpenAPI 做 CRD 的 Protobuf 支持。(#77825, @roycaihw)
- 新的 Prune 特性会默认移除 CRD 实例未知的字段,同时也不会将未知字段持久化,这会大大减少 CRD 实例未知字段带来的干扰以及降低 CRD 的存储开销同时提高性能。
- 支持使用 OpenAPI 校验来设置 CRD 实例的默认值。通过这种更加轻量级的方式,开发者不必费劲脑力和时间去再写一个 Webhook 监听 CRD 实例的创建去设置默认值了。(#77558, @sttts)
- 增加 CRD Conversion Webhook 支持多版本 CRD 实例之间的转换。之前我们的 CRD 版本升级(比如从 v1alpha1 升级到 v1betav1) 是个头疼的问题,使用这个功能我们的版本转化能完美解决(KEP)。
- Webhook 增强
- Admission Webhook 的配置增加了 ObjectSelector。从之前的只能根据 NamespaceSelector 和指定资源进行过滤,到新版本的 Webhook 能对特定的 Label 的资源实例过滤,从而大大提高了 Webhook 的执行效率。
- Webhook 的配置允许一个 Webhook 的调用指向一个非 443 端口的服务。Webhook 包括 Admission webhook, AuditSink webhook, CRD Conversion webhook(还包括 kube-aggregator Service 的配置)。
- Admission Webhook的配置允许一个 Webhook 只注册和监听一个版本的资源,比如我们可以只注册
apps/v1 deployments而不关心其它的 deployment 版本的资源,这样我们的 Webhook Server 不用随着 API 定义的升级去强行升级。
Kube-Apiserver 性能深入研究
- 大规模场景下一定要 Port 的几个特性:
- 优化 Watch event 的 dispatch https://github.com/kubernetes/kubernetes/issues/73958
- NodeLease 功能: https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/nodelease
- client-go 会把 List/Watch 超时设置为 [5min, 10min),即在超时时间后会重新发起 List/Watch,建议 Daemenset 调整这个时间到几十分钟甚至数小时级别,不然 Apiserver 可能会因为大量访问崩溃。同时,也在考虑 kubelet 是否也要修改这个值,代码的注释里写着 5min 是为了平衡负载均衡以及接触负载均衡设备 watch 的hang住 bug。
- client-go RateLimiter 加入 Wait 方法,避免在异步场景下使用 client-go 引起 goruntine 积压:https://github.com/kubernetes/kubernetes/pull/79375
- Webhook 和 Adimission 支持 context-aware: https://github.com/kubernetes/kubernetes/pull/79376
- Kube-Apiserver 到达 IO 瓶颈时,metric 错误的将 IO 瓶颈错误归类到 504。我们需要将逻辑处理超时和写 IO 超时分开:https://github.com/kubernetes/kubernetes/pull/79609
开源项目推荐
- Tektoncd: 云原生时代的 Pipeline, https://github.com/tektoncd/pipeline
- 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 版本发布的更多相关文章
- 云原生生态周报 Vol. 14 | K8s CVE 修复指南
业界要闻 Mesosphere 公司正式更名为 D2IQ, 关注云原生. Mesosophere 公司日前发布官方声明正式更名为:D2iQ(Day-Two-I-Q),称关注点转向 Kubernetes ...
- 云原生生态周报 Vol. 11 | K8s 1.16 早知道
业界要闻 Pivotal 发布了完全基于 Kubernetes 的 Pivotal Application Service(PAS)预览版 这意味着 Pivotal 公司一直以来在持续运作的老牌 Pa ...
- 云原生生态周报 Vol. 12 | K8s 1.16 API 重大变更
本文作者:源三.临石.张磊.莫源 业界要闻 1. K8s 1.16 将废弃一系列旧的 API 版本 影响面涉及 NetworkPolicy.PodSecurityPolicy.DaemonSet, D ...
- [转帖]Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31 https://www.kubernetes.org.cn/6252.html 2019-12-13 11:59 ali ...
- 云原生生态周报 Vol. 3 | Java 8 ❤️ Docker
摘要: Docker Hub遭入侵,19万账号被泄露:Java 8 终于开始提供良好的容器支持:Snyk 年度安全报告出炉,容器安全问题形势空前严峻. 业界要闻 Docker Hub遭入侵,19万账号 ...
- 云原生生态周报 Vol. 5 | etcd性能知多少
业界要闻 1 Azure Red Hat OpenShift已经GA.在刚刚结束的Red Hat Summit 2019上,Azure Red Hat OpenShift正式宣布GA,这是一个微软和红 ...
- 云原生生态周报 Vol. 6 | KubeCon EU 特刊
5 月 26日,2019 年第一个 KubeCon + CloudNativeCon 在巴塞罗那成功闭幕.本届 KubeCon 共吸引了超过 7700 名与会者,相较去年哥本哈根大会的 4300 余名 ...
- Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
作者 | 徐迪.李传云.黄珂.汪萌海.张晓宇.何淋波 .陈有坤.李鹏审核 | 陈俊 上游重要进展 1. Kubernetes v1.17 版本发布 功能稳定性是第一要务.v1.17 包含 22 个增强 ...
- 云原生生态周报 Vol.10 | 数据库能否运行在 K8s 当中?
业界要闻 IBM 以总价 340 亿美元完成里程碑意义的红帽收购:这是这家拥有 107 年历史的公司史上规模最大的一笔收购,该收购金额在整个科技行业的并购史上也能排到前三.在当天公布的声明中,IBM ...
随机推荐
- vue项目中引入iconfont
背景 对于前端而言,图标的发展可谓日新月异.从img标签,到雪碧图,再到字体图标,svg,甚至svg也有了类似于雪碧图的方案svg-sprite-loader.雪碧图没有什么好讲的了,只是简单地利用了 ...
- SpringBoot2.0.4部署在tomcat容器中
1. 修改启动类继承自SpringBootServletInitializer. 2. 重写config方法: @Overrideprotected SpringApplicationBuilder ...
- Core源码(三) Lazy<T>
Lazy<T>解决什么问题? 1.大对象加载 考虑下面的需求,有个对象很大,创建耗时,并且要在托管堆上分配一大块空间.我们当然希望,用到它的时候再去创建.也就是延迟加载,等到真正需要它的时 ...
- 通过JS屏蔽鼠标右键
我也是第一次接触这个功能,只需一行代码即可搞定,直译过来就是“屏蔽上下文菜单”,特此记录一下吧. document.oncontextmenu = () => false;
- Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
官网:www.fhadmin.org 特别注意: Springboot 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ activiti6.0 ...
- Asp.net MVC 中的TempData对象的剖析
另一篇文章,也对TempData 做了很详细的介绍,链接地址:https://www.jianshu.com/p/eb7a301bc536 . MVC中的 TempData 可以在Controll ...
- 移动端rem适应布局
移动端rem适应布局 rem rem(root em)是一个相对单位,类似于em,em是父元素字体大小. 不同的是rem的基准是相对于html元素的字体大小. 比如,根元素(html)设置font-s ...
- 1_Swift概况
Swift 标准库 解决复杂的问题并编写高性能,可读的代码 概况 Swift标准库定义了用于编写Swift程序的基本功能,其中包括 1.如基本数据类型Int,Double以及String 2.共同的数 ...
- [b0035] python 归纳 (二十)_多进程数据共享和同步_共享内存Value & Array
1. Code # -*- coding: utf-8 -*- """ 多进程 数据共享 共享变量 Value,Array 逻辑: 2个进程,对同一份数据,一个做加法,一 ...
- express 将 Router 实例模块化
为了更好的组织代码,将 Router 实例进行模块化,将 get / post 等快捷方式放在Router上,而不是 App 上,然后将该 Router 作为中间件,use 到 server.js 上 ...