K8S 1.13 重磅发布|全面解读 20 个重大功能更新

技术翻译/评论:wzqnls、FogDong、毛十三node

编辑:小君君git

来源:K8sMeetup社区github

美国时间 12 月 3 日Kubernetes 2018 年的第四个版本 Kubernetes 1.13 正式发布。Kubernetes 1.13 是迄今为止发布时间最短的版本之一,只利用了 10 周的时间。这一版本继续关注 Kubernetes 的稳定性和可扩展性。在存储和集群生命周期中,这一周期的三个主要特性已逐渐过渡到 GA。此版本中的显着特征包括:使用 kubeadm 简化集群管理、Container Storage Interface(CSI)、以 CoreDNS 做为默认 DNS。web

 

在设定支持指望方面,这些稳定的变化对于用户和运营商来讲是一个重要的里程碑。此外,此版本还有一系列持续不断的内部改进和新的 alpha 功能可供社区使用。docker

 

在 Kubernetes 1.13 版本发布的第一时间,「K8sMeetup 中国社区」邀请了来自才云 Caicloud 的一线研发工程师对 GitHub 权威 Release Notes 和 Kubernetes.io 版本发布文章进行技术解读和评论但愿能为你们使用 Kubernetes 带来一些有益参考。api

 

  •   3 大主要特征  

使用 kubeadm 简化 Kubernetes 集群管理  缓存

接触过 Kubernetes 的人基本上都使用过 kubeadm。它是管理集群生命周期的重要工具,从建立到配置再到升级; 如今 kubeadm 正式成为 GA。kubeadm 是处理现有硬件上的生产集群的引导,并以最佳实践方式配置核心 Kubernetes 组件。安全

 

kubeadm 经过这种方式更加方便的为新节点提供安全而简单的链接流以及支持简单的升级。这个 GA 版本值得注意的是如今已经毕业的高级功能,特别是可插拔性和可配置性。kubeadm 的做用是成为管理员和自动化、以及更高级别系统的的工具箱,这个版本朝这个方向迈出了重要的一步。服务器

 

Container Storage Interface(CSI)进入 GA 阶段  网络

Container Storage Interface(CSI)如今已经进入 GA 阶段,在 v1.9 中做为 alpha 引入,在 v1.10 中做为 Beta 引入。经过 CSI,Kubernetes 数据卷层变得真正可扩展。这为第三方存储提供商提供了一个机会,能够编写与 Kubernetes 相互操做的插件,而无需触及核心代码。该规范自己也达到了 1.0 状态。

 

随着 CSI 的稳定,插件的开发者们正在按照本身的节奏开发核心代码之外的存储插件。你能够在 CSI 文档中找到示例驱动程序和官方驱动程序的列表。

 

CoreDNS 是 Kubernetes 默认 DNS 服务器  

在 1.11 版本中,社区宣布 CoreDNS 已达到基于 DNS-based 服务发现的通常可用性。在 1.13 版本中,CoreDNS 如今将 kube-dns 替换为 Kubernetes 的默认 DNS 服务器。CoreDNS 是一个通用、权威的 DNS 服务器,提供与 Kubernetes 向后兼容但可扩展的集成。

 

CoreDNS 比之前的 DNS 服务器具备更少的移动部件,由于它是单个可执行文件和单个进程,并经过建立自定义 DNS 条目来支持灵活的用例。它利用 Go 语言来编写,使其具备内存安全性。

 

CoreDNS 是 Kubernetes 1.13+ 版本推荐的 DNS 解决方案。该项目已将经常使用测试基础架构切换为默认使用 CoreDNS,社区也建议用户进行切换。KubeDNS 仍会支持至少一个版本,可是时候开始规划迁移了。许多 OSS 安装工具已经进行了切换,包括 1.11 版本中的 Kubeadm。若是你使用托管解决方案,请与你的供应商联系,了解这将如何影响到你的项目。

 

  •   Release Note 20 个重要更新  

1. SIG API Machinery 

从 1.13 版本开始,SIG API Machinery 宣布 dry-run 功能已进入 Beta 阶段。

2. SIG Auth  

在这个版本中,咱们对核心 SIG Auth 领域进行了几项重要的改进。在鉴权的范畴,咱们经过将带标签的节点自我更新限制列入白名单的选项,以及禁止 kubelet 删除节点 API 对象,进一步下降 Kubelet 的权限。在身份验证中,咱们对使用投射数据卷自动更新服务帐户的令牌,增长了 alpha 级别的支持。

 

咱们还在 TokenReview 中开启了受众验证,用以改善做用域。在审计日志中,新的 alpha 级别的动态审计配置增长了对动态注册 webhook 以接收审计事件流的支持。最后,咱们经过实验验证过的 etcd 加密来加强密码安全性。

 

3. SIG AWS  

在 v1.13 版本中,咱们对 Kubernetes API 对象和 AWS 服务进行了更紧密的集成对接。

 

下面是三个不在项目范围内的 alpha 特性版本:

  • AWS alpha 版本的 ALB(应用负载均衡器)集成至 Kubernetes Ingress 资源;

  • CSI 规范 0.3 的 alpha 版本集成至 AWS EBS (弹性块存储);

  • 用于 Cloudprovider-aws alpha 版本的二进制云控制管理器。另外,咱们将aws-k8s-tester、kubetest 部署接口添加到了 test-infra 项目。这个插件容许咱们将 Prow 集成到上述的三个子项目中,以便为这三个特性提供 CI 信号。CI 信号部分能够在 [1] 进行查阅。

     

想要了解这三个 alpha 特性更详细的版本信息,请参考如下 changelog:

  • aws-alb-ingress-controller v1.0.0 [2]

  • aws-ebs-csi-driver v0.1 [3]

  • cloudprovider-aws external v0.1.0 [4]

 

4. SIG Azure  

在 1.13 版本中,SIG Azure 专一于为 Ultra SSD、Standard SSD、Premium Azure Files 添加额外的 Azure 磁盘支持。Azure 可用区和跨资源组节点也在 1.13 中从 Alpha 移至 Beta。

 

5. SIG Big Data  

在 1.13 的版本周期中,SIG Big Data 专一于与 Kubernetes 第三方项目集成相关的社区活动。这对 1.13 版本没有任何的影响。

 

6. SIG CLI 

在 1.13 版本中,SIG CLI 主要致力于稳定咱们过去发布的项目,例如服务器端打印、在 kubectl 中的支持以及完成基于服务器端运行特性的 kubectl diff [5]。咱们会继续分离 kubectl 代码以准备将其从主库中抽出。最后,感谢来自社区的强大支持和反馈,咱们正设法推进新的插件机制到 Beta 阶段 [6]。

 

7. SIG Cloud Provider 

在 1.13 版本中,SIG Cloud Provider 致力于稳定目前云提供商使用的通用 API 和接口。这包括审核 cloud provider API 中任何应该被弃用的以及在必要时须要修改的部分。另外,SIG Cloud Provider 已经开始围绕拥有“cloud provider”的端到端测试套件进行探索性的工做,该测试套件可用于测试通用的云提供商功能,好比节点资源和负载均衡器资源。

 

咱们还会继续努力将目前全部存在于 k8s.io/kubernetes 的 cloud provider 提取至他们各自的仓库中。随着这些迁移,咱们慢慢过渡用户使用 cloud-controller-manager,替代 kube-controller-manager。

 

8. SIG Cluster Lifecycle  

在 1.13 版的 SIG Cluster Lifecycle 中,咱们很高兴的宣布将期待已久的 kubeadm 推广到稳定的 GA 版本,将 kubeadm 的配置 API 推广到 v1beta1。在此版本中,SIG 专一于进一步改善集群建立的用户体验,并修复许多 bug 和其余各类改进。

 

如下是一些自 1.12 版本以来 kubeadm 的变化:

  • Kubeadm 的配置 API 目前是 v1beta1 版本。新的配置格式提供了镜像仓库管理、插件配置以及其余方面的改进。咱们鼓励 v1alpha3 的用户使用命令 kubeadm config migrate 迁移到这个版本的配置 API,同时 v1alpha3 的版本将在 1.14中移除。v1beat1 的文档能够在这里 [7] 找到;

  • Kubeadm 已经将 kubeadm alpha phase 的命令并入 kubeadm init phase 中。这意味着建立控制平面节点的命令正在集成为 init 命令的一部分。对于尚未准备 GA 的 alpha 功能咱们仍然保留在 kubeadm alpha 中,咱们期待对它们的反馈;

  • Kubeadm init 及 kubeadm init phase 命令如今 --image-repository 的参数了,改善了对官方 kubernetes 仓库访问受限的状况;

  • DynamicKubeletConfig 和 SelfHosting 功能已经从 kubeadm init 和 feature gates 中移除,并公开在 kubeadm alpha 下;

  • Kubeadm init 命令中证书如今支持 --crs--only 选项,简化了自定义证书的建立;

  • kubeadm join --experimental-control-plane 如今会自动添加新的 etcd 成员在 local etcd 模式下,进一步简化了配置 HA 集群所要作的任务;

  • 对 kubeadm reset 进行了改进,包括 etcd 的清理和通知用户 iptables 的状态;

  • Kubeadm 命令在 yaml 文件包含未知或者重复字段时,会打印警告;

  • Kubeadm 目前适配 docker 18.09.0 以及更新的版本,可是依旧将 18.06 做为默认的支持版本;

  • Kubeadm 会在启动 kubelet 时自动会设置 --pod-infra-container-image 。

9. SIG IBM Cloud  

IBM Cloud SIG 专一于在 kubernetes 1.14 版本周期结束前,将 cloud provider 代码迁移至外部的仓库。在 SIG 会议中,咱们还确保分享 IBM Cloud 中最新 Kubernetes 开发的最新信息,例如 IBM Cloud Kubernetes 服务(IKS)中 Kubernetes  v1.12.2 的可用性。 SIG 更新在 Kubernetes 社区每周电话会议和 2018 年中国 KubeCon 上提供。

 

10. SIG Multicluster  

将 Federation v2 从 Alpha 版转向 Beta 版一直是咱们过去一个季度努力的重点。 为此,咱们与终端用户合做,并成功招募了来自 IBM、Amadeus、思科等公司的 contributor。 Federation v2 提供了一套解耦 API 和可重用组件用于构建多集群控制平面。 咱们计划在 2018 年末开始发布 Beta 组件。此外,咱们对集群注册和多集群入口子项目进行了许多小更新。

 

 11. SIG Network  

在 1.13 中,关注重点是 IPv6,DNS 改进和一些较小的项目:CoreDNS 如今是经过全部规模 / 资源使用测试的默认集群DNS —— Alpha 版本中提供了本地 DNS 缓存特性。 该特性部署了轻量级 DNS 缓存 Daemonset,能够避免链接跟踪,并将查询从 UDP 转换为更可靠的 TCP。 PodReady++ 功能如今支持 kubectl CLI 。

 

此外,在 IPv6 的双栈支持和 KEP 以及服务拓扑路由支持方面取得了进展。

 

12. SIG Node  

SIG Node 专一于 1.13 版本中的稳定性和性能改进。 引入了新的 alpha 功能以改进节点心跳反馈到控制平面的机制。NodeLease 功能让节点使用 kube-node-lease namespace 中的 Lease 资源,该资源将按期更新。 先前用于心跳反馈的控制平面功能的 NodeStatus 仅在更改时更新。 这减小了在大型集群的控制平面上的负载。 Kubelet 插件注册机制能够自动发现外部插件(包括 CSI 和设备插件),在此版本中已经提高为稳定版(在 1.11 中做为 alpha 版引入并在 1.12 中提高为 Beta 版)。

 

13. SIG Openstack  

这次 SIG OpenStack 的主要内容是删除项目内 provider 的工做进度。 这项工做与 SIG Cloud Provider 一块儿完成,重点是移动 OpenStack (和其余提供商)所依赖的内部 API ,以便保证 API 的稳定性。 此工做还包括提取项目内的 Cinder API 并将代码重构到外部 Cinder provider 以删除其余 Cinder volume provider 的代码。

 

此外,还对 SIG Cluster Lifecycle 的 Cluster API 负责的 OpenStack 驱动程序作了额外工做。对外部的 Cloud-Provider-OpenStack 代码来讲,这次 SIG 主要修复了一些 bug 和更新以匹配 Kubernetes 1.13 的开发。

 

14. SIG Scalability  

SIG Scalability 主要关注于稳定性以及延迟测试,投入编写可扩展测试的框架(ClusterLoader v2),目标是在 2018 年末以前将全部测试迁移完成,并提供更多来扩展 Kubernetes 的可扩展性 / 更好用户友好的 SLI / SLO。

 

15. SIG Scheduling  

SIG Scheduling 在 1.13 中主要关注于稳定性,并将一些主要功能推迟到下一版本。 但仍有两个值得注意的变化:

  • TaintBasedEviction 已移至 Beta 版,默认状况下将启用。 启用此功能后, condition taints 会自动添加到节点中,而且有须要,Pod 能够添加 tolerations。

  • 不推荐使用 Pod critical annotation。 Pod 应使用 Pod 优先级而不是 annotation。

 

值得注意的是,kube-scheduler 将在 1.13 的配置文件中使用 apiVersion  kubescheduler.config.k8s.io/v1alpha1 而不是 componentconfig/v1alpha1。

 

16. SIG Service Catalog  

关于 Service Plan Defaults 的功能仍处于积极开发阶段。 咱们将继续改进 svcat CLI 的用户体验,并为新的 Namespaced Service Broker 功能填补空白。

 

17. SIG Storage  

在过去的一年中,SIG Storage 一直致力于为 Kubernetes 增长对容器存储接口(CSI)的支持。 该规范最近已移至 1.0 ,而且在此以后,Kubernetes v1.13 会将 CSI 对 PersistentVolumes 的支持迁移到 GA 版本。

 

经过 CSI,Kubernetes 的数据卷层将变为真正的可扩展化,它容许第三方存储开发人员编写驱动程序,使他们的存储系统在 Kubernetes 中可用,而无需涉及核心代码。CSI 首次在 Kubernetes v1.9 版本中做为 alpha 版引入,并在 Kubernetes v1.10 版本中转为 beta 版。

 

你能够在 CSI Documentation [8] 中找到一系列的示例及产品驱动。

 

SIG Storage 还将对 Block Volumes 的支持转为 Beta (在 v1.9 中做为 alpha 版引入),并将对拓扑感知数据卷的调度升为稳定版本(在 v1.9 中做为 alpha 引入,并在 1.10中 升级为 Beta )。

 

18. SIG UI  

目前开发路线图中最重要的是迁移到最新版本的 Angular,咱们正在积极开发并即将发出新版本。此外,咱们也在持续修复 bug 并添加其余改进。

 

19. SIG VMWare  

SIG VMware 在此版本的主要重点是移动 vSphere provider 暂存区须要的内部 API 以保证 API 的稳定性。这项工做是与 SIG Cloud Provider 一块儿完成,包括建立一个全新的 vsphere-csi 插件来替换项目中的数据卷功能。

 

此外,还为 SIG Cluster Lifecycle 实现的 Cluster API 提供了 vSphere provider。 而对核心项目外的 vSphere cloud provider 来讲,这次 SIG 主要修复了一些 bug 和更新以匹配 Kubernetes 1.13 的开发。

 

20. SIG Windows  

SIG Windows 重点提高在 Windows 平台上的稳定性以及对 Kubernetes 的支持。

 

  •   新版本技术评论  

 

「K8sMeetup 中国社区」特别邀请 Caicloud(才云科技) 工程师,第一时间为 Kubernetes 1.13 作了一个简短评论:

Kubernetes 1.13 版本在安全性、稳定性、扩展性以及灵活性方面作了不少工做,也取得了不少成果。好比安全方面,kubernetes 下降了 kubelet 在鉴权方面的权限,增长了 TokenReview 的受众验证,以及经过 etcd 加密来加强信息的安全性。

 

Kubernetes 1.13 中,对各大云服务提供商的集成与对接也是一大亮点,很大程度地提高了 kubernetes 支持对云服务商的扩展性和灵活性。好比:集成了 kubernetes api 对象和 AWS 服务,为 Ultra SSD、Standard SSD、Premium Azure Files 添加额外的 Azure 磁盘支持等。同时,对 cloud provider 的解耦分离也在持续进行,经过将 kubernetes 仓库中的 cloud provider 移至各个云服务商的仓库,而且逐步使用 cloud-controller-manger 来替代 kube-controller-manager。

 

在其它方面 Kubernetes 也有不少重要的更新,好比:在部署方面,kubeadm 越发成熟,在集群的部署管理过程当中,增长了许多可选配置参数,很好地解决了目前在部署过程当中的一些痛点。好比能够选择本身的镜像仓库,避免访问官方仓库的网络问题;在存储方面,将 CSI 对 PersistentVolumes 的支持迁移到 GA 版本;在网络方面,则重点增长了 Ipv6 的双栈支持以及将 CoreDNS 做为默认 DNS。在各个开发者的贡献下,Kubernetes 1.13 版本在原来的基础上有了很大的提高。咱们(Caicloud)也会持续对它进行贡献,欢迎关注。

 

参考文献:

[1]https://testgrid.k8s.io/

[2]https://github.com/kubernetes-sigs/aws-alb-ingress-controller/releases/tag/v1.0.0

[3]https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/CHANGELOG-0.1.md

[4]https://github.com/kubernetes/cloud-provider-aws/blob/master/changelogs/CHANGELOG-0.1.md

[5]https://kubernetes.io/docs/concepts/overview/object-management-kubectl/#how-to-create-objects

[6]https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/

[7]https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1

[8]https://kubernetes.io/docs/concepts/storage/volumes/#csi

[9]https://kubernetes.io/blog/

[10]https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md#major-themes

 

  •   活动推荐  

「K8sMeetup 中国社区」 CKA 培训历经 428 天深度课程打磨,3 次教材迭代升级。由 CNCF 受权讲师亲自带队,在北京、上海等地已开设多场培训,近 30 位学员成功拿到 CKA 培训证书,考试经过率高达 96.3%!本次 CKA 培训杭州站活动,定于 2019 年 1 月 4 - 6 日进行。

 

做为 2019 年 CKA 杭州首场培训,咱们将为社区同窗送出以下福利:

福利一:你学习我买单,培训后一个月内首位考试通关的同窗,全额退款!

福利二:报名成功后截图小助手,前 5 名立返 1000 元培训费,更有 2 个 G 的 Kubernetes 绝密资料免费送!

从这里直达报名连接