做者 | 酒祝、墨封、宇慕、衷源git
关注“阿里巴巴云原生”公众号,回复关键词 “资料” ,便可得到 2019 整年 meetup 活动 PPT 合集及 K8s 最全知识图谱。github
etcd 发布了 3.4 版本,是最近性能提高最大的一次发布,相信各位已经期待已久了!此次升级带来稳定性和性能等方面诸多优化,例如底层存储优化,客户端优化等多个方面。web
「阿里巴巴云原生」公众号将在下周带来更详细的解读分析。算法
使用过 zookeeper 的人必定据说过 observer,etcd 中新的 raft learner 相似于 observer, 它不参与 raft 投票选举。经过这个新的角色的引入,下降了加入新节点时给老集群的额外压力,增长了集群的稳定性。除此以外还可使用它做为集群的热备或服务一些读请求。api
这一新 feature 是由阿里巴巴工程师和谷歌工程师共同研发的,将来咱们将带来更详细的解读分析,敬请期待。网络
本次 etcd 存储升级针对大规模的集群有重点优化,分为两方面:并发
key/value 存储层,经过将底层读事务优化为全并发,大幅度提高了 etcd 读写性能。经 Kuberentes 5000节点性能测试,代表在大规模读压力下,P99 写的延时下降 97.4%;app
lease 存储优化,经过优化 lease 底层存储实现和算法更新,将查询,过时失效等 lease 操做时间复杂度下降。而且新的 lease checkpoint 机制确保了 etcd 集群切换 leader 后 lease ttl 的准确。负载均衡
优化的 raft 投票选 leader 机制框架
etcd 中用 raft 规定了日志复制和选主的机制。旧有的机制在选主过程当中存在隐患,当网络分区或新加入节点不稳定时会出现,致使整个集群不稳定。新的 pre-vote 机制解决这一问题,提高了集群的稳定性。
etcd 设计上能够容忍网络分区和服务层的部分失效,可是以前的机制依赖旧的 grpc, 此次更新基于新的 gprc版本从新优化了客户端负载均衡,使负载真正均衡,而且解决了以前 failover 失败问题。
阿里巴巴已对这一更新进行了测试,效果良好。这次更新已合入 Kubernetets master, 预计在 Kubernetes 1.16x 版本发布。
对应 controller-runtime v0.2.0 版本,新版的文档说明:https://book.kubebuilder.io 。新旧版本有如下区别:
https://www.cncf.io/cncf-kubernetes-project-journey/<br />从报告提供的各种图表中,能够直观感觉到 Kubernetes 从 2014 年到今天这 5 年来的变化,以及当前 Kubernetes 在云原生领域和全球的巨大影响力。
1.KEP:把 scheduler 中的 priorities、predicates 函数设置为 deprecated
https://github.com/kubernetes/enhancements/pull/1230<br />由于 scheduling framework 的全部 extension points 都已经实现,并将会在 1.17 中变为 beta 版本,但愿将当前 scheduler 中的 priorities、predicates 函数开始设置为 deprecated,并将它们改成 scheduling framework 的插件。
2.KEP:容许 exec 命令使用 -u 参数指定 username
https://github.com/kubernetes/enhancements/pull/1224<br />按照 KEP 做者的说法,exec 指定 username 便于用户进入容器 debug。但问题在于,CRI 标准接口里是不支持 user 这个 exec 参数的,只是 Docker、Kata、gVisior 这些大多数的 container runtime 实现版本里支持。但社区但愿推的是统一接口,尽可能抹平不一样实现版本的差别性,因此这个 KEP 可否被接受还得打个问号。
3.PR:HPA 中新增 scaling constraints
https://github.com/kubernetes/kubernetes/pull/82256<br />这个 PR 用于给 HPA 添加 scale down/up 的限制。在 API 层面的改动是在 HorizontalPodAutoscalerSpec 结构中新增了一个 Constraints,HPAScaleConstraints 中定义了 ScaleUp 和 ScaleDown 的限制,在 HPAScaleConstraintRateValue 中支持 3 种限制方式:Pods 数量、Percent 百分比、PeriodSeconds 周期。
4.bugfix
一个基于 web 的轻量级、可扩展的平台,帮助开发者理解复杂的 Kubernetes 集群。
这个 web 平台主要是做为一个工具,给开发者展现一个应用在 Kubernetes 集群中的部署和运行,目前支持的好比资源展现、用于 debug 的端口转发、日志流、多集群管理等等。
一个命令行工具,帮助用户管理大规模应用部署下的资源。
kapp 工具主要功能包括资源 diffing、label 标记、部署和删除管理等。和 Helm 不一样的是,kapp 主要关注的是部署流程,而非打包或者 YAML 模板等,同时在必定程度上支持 GitOps 工做流。
经过网路请求和源码分析,解析了一次 kubectl exec 请求是如何从客户端通过 kube-apiserver 和 kubelet,最终创建起到容器内的命令通道。
访谈了来自22个公司的人员,“你认为 K8s 的将来和最佳机遇是什么?”
访谈了来自22个公司的人员,“你对当前 K8s 的使用上有什么担忧之处?”
本文从小白的视角,介绍了 Kubernetes 的集群结构、一些基本的资源概念以及 master/worker 的各种基础组件,适合于没有接触过或刚开始 K8s 的同窗阅读。