一年4更,如此勤奋的Kuberentes,1.9版更新前瞻

Kuberentes可谓是2017年风头最劲的编排工具了,随着Kubernetes社区及各大厂商的不断改进、发展,Kuberentes将成为容器管理领域的领导者,昨天,Kubernetes官方发布了本年度第四次也是最后一次新版本的更新公告,即Kuberentes 1.9,那么它都有哪些特性和变化呢?小数今天就带大家看一看~

Kubernetes 1.9

新的“特性”实际上并不是新的,而是基于为了足够稳定生产所使用现有功能的改进,如工作负载的API(DaemonSet、部署ReplicaSet,StatefulSet API),它提供了许多现实环境的基础工作负载,或已经进入到相关的测试阶段,这意味着它们是默认启用的,比如支持Windows服务器的工作负载。

然而只是进入了代码库,例如,Kubernetes 1.9包含了容器存储接口(CSI)和IPv6支持的Alpha实现。

1在升级之前需要做什么

在决定升级到Kuberentes 1.9之前,必须备份Etcd数据,这是非常重要的一件事,因为许多用于部署和升级Kubernetes默认的工具是Etcd3.1,由于Etcd不支持降级,所以如果决定降级Kubernetes部署,那么就无法回到以前的版本,因此虽然可以在不执行备份的情况下升级,但也有一些风险存在。 下面就来了解一下Kubernetes 1.9每个区域的变化细节。

2身份验证和API Machinery

认证和授权访问Kubernetes的过程有了一系列的改进:

  1. 首先可以使用集群角色聚合将权限添加到内置的RBAC管理/编辑视图角色中,这些角色适用于整个集群,可以更容易管理谁可以或不能执行某些操作。
  2. 此外,授权本身也得到了改进:列如如果一个规则拒绝进入Fires,那么没有理由对链中的其余规则进行评估,这样其他的规则就会被短路。

所有这些都取决于可扩展性,在这个周期中,社区通过添加一种新型的控制Webhook来提高可扩展性。 当试图在Kuberentes中执行操作时,入检查访问和检查名称空间时,接收控制器是发生的不同组件,Webhook使得用户可以通过HTTP POST请求与Kuberentes进行通信;可以发送请求,当某些事件发生时,Kuberentes会进行回调。

在这个版本中,团队致力于“变异”的Webhook,这使得更灵活的进入控制插件得以实现,因为他们让Kuberentes在必要的时候做出改变,允许更大的扩展性。

3定制资源

使用户能够创建自己的“对象”,可以被Kubernetes操纵,同时也已被增强,允许更容易的进行创建和更加可靠。这包括Kubernetes repo中一个新的示例控制器自定义资源定义,以及新的元数据字段选择器、帮助生成代码脚本,以及对已定义资源的验证,用来提高总体解决方案的可靠性。另外,以前的版本只允许引用自定义资源的组,现在可以获得单个实例。

4连网

随着IPv4地址的耗尽,在Kubernetes 1.9中看到对IPv6支持的开始是个好消息。这种支持仍然在Alpha中,并且有很大的局限性,比如缺少双栈支持和没有HostPorts,然而这是一个开始。 此外,随着CoreDNS 1.0的发布,用户可以选择使用它作为kube - dns的替代选择。要安装它,需要CLUSTERDNSCORE_DNS为“true”。但是要注意的是这种支持是实验性的,这意味着它可以随时更改或被删除。

其他的网络改进包括- cleanup- ipvs标志,它决定了kube - proxy是否会在启动时刷新所有现有的Ipvs规则(就像它在默认的版本中一样),以及一个新的PodAntiAffinity kube- dns注释来增强恢复力。 用户还可以通过向主机的/ etc/ resolvei添加“选项”来定制pod的DNS客户端的行为。conf或- resolv- conf,这将使它们传播到pod resolve.conf。

5集群生命周期

Federation SIG已经被重命名为集群生命周期,并一直致力于将kubeadm部署工具提高到产品质量。该项目虽然有效,但应用实践相对较短,包括一些新增的alpha特性,比如对CoreDNS的支持、IPv6和动态Kubelet配置。要在配置中安装CoreDNS而不是kube - dns,将CLUSTERDNSCORE_DNS设置为“true”。

Kubeadm还获得了一些额外的新特性,例如- print-join- command,这使得在初始集群部署后获得必要的信息以添加新节点,支持Kubelet动态配置,以及将Windows节点添加到集群的能力。

该小组还负责集群API,用于“声明性的kubernet -style API来集群创建、配置和管理”。它提供可选的,可添加的功能,在核心库伯内特斯的顶部。

如果用户正在构建多集群的安装,会很高兴知道kubefed,它允许用户创建一个控制平面来添加、删除和管理联邦集群,已经获得了几个新标志,这些标志可以让用户对它的安装方式和操作方式有更多的控制。- nodeselector标志让用户决定控制器的安装位置,以及添加对- imagepullsecrets和- imageplpolicy的支持,意味着用户现在可以从私有容器注册表中提取图像。

6节点的功能

如果是系统管理员或运维人员,那么Kubernetes 1.9可以使编写配置变得更容易一些,Kubelet的特性门现在表示为KubeletConfiguration中的映射,而不是一串键值对。此外,现在可以设置多个manifest url header,或者使用- manifest-url- header标志或KubeletConfiguration中的manifest . header字段。

而且deviceplugin会一直延伸到更优雅地处理插件设备全生命周期,包括显式cm.GetDevicePluginResourceCapacity()函数,它可以更准确地确定哪些资源是不活跃的,从而使可用资源的更精确的视图。它还确保了设备被正确地移除,即使 kubelet重新启动,并从kubelet传送到设备插件。最后,它确保即使在设备插件删除和 kubelet重新启动之后,预定的pods仍然可以继续运行。

但值得注意的是,根据发布说明,“Kubelet不再从节点状态移除未注册的扩展资源能力;当要自己删除插件时,集群管理员必须手动删除通过设备插件暴露的扩展资源,Kubernetes 1.9包括许多对日志和监视的增强,包括pod级的CPU、内存和本地临时存储。此外,状态摘要网络值,以前只考虑eth0,现在考虑所有的网络接口。

新版本还减轻了一些用户问题,增加了对默认管理和编辑角色的读/写权限,并增加了对podUNK tionbudget的读权限。策略到视图角色。

最后,团队取得了CRI日志解析在pkg/kubelet/apis/cri/logs,所以用户不用纠结于这个手动操作。

7调度

Kubernetes 1.9更改了如何配置kube - scheduler,并向配置文件中添加一个新的- config标志。该文件是Kubernetes期望在未来版本中找到配置值的地方;现在大多数其他的kube调度器标志现在已经被弃用。
此版本还提供了更有效地调度需要扩展资源(如gpu)的工作负载的能力; 调度SIG还完成了一些其他的个别更改,例如在低优先级的pod之前调度更高优先级的pod,以及一个pod能够监听多个IP地址的能力。

8存储

存储在Kubernetes 1.9中的重大更新是添加了容器存储接口(CSI)的alpha实现。CSI是Kubernetes、Docker、Mesosphere和Cloud Foundry社区之间的一个联合项目,它的目的是提供一个单一的API,存储供应商可以在任何支持CSI的编排中实现其产品在“out of the box”中工作。根据Kubernetes存储SIG的说法,“CSI将会像部署一个pod一样轻松地安装新的容量插件,并且允许第三方存储提供商开发他们的插件,而无需将代码添加到核心库伯内特斯代码库中。用户可以通过实例化一个卷作为CSIVolumeSource来使用这个新功能。

存储SIG还增加了几个新功能,包括:

GCE PD、Ceph RBD、AWS EBS和OpenStack Cinder卷的容量大小
体积作为原始块设备(光纤通道仅为Kubernetes 1.9) 可以在容器中运行而不是在主机上运行的工具

9云供应商

Kubernetes 1.9的一个重要变化是,如果用户手动部署Kubernetes,必须为- cloud- provider标志设置一个值;默认情况不再是“自动检测”。允许的选择是:AWS、Azure、Cloudstack、Fake、Gce、Mesos、Openstack、Ovirt、Photon、Rackspace、 Vsphere、以及Unset;自动检测将在Kubernetes 1.10中被移除。(如果用Minikube或Kubeadm之类的工具来安装Kubernetes,不必担心这个问题。)
此外,该版本中的一些更改是针对个别云供应商的。

OpenStack

如果使用OpenStack使用Kubernetes,用户会发现v1.9中的配置要简单得多。自动检测OpenStack服务和版本现在是“只要可行”的规则——在本例中意味着块存储API版本和安全组——用户现在可以将OpenStack负载平衡配置为服务v2提供者。支持OpenStack Octavia v2和中子LBaaS v2。

AWS

AWS的小组(SIG)一直致力于改善Kubernetes与EBS卷的集成。用户将不再使用被调度到“附加”状态的卷的工作负载。相反,节点将被“污染”,以便管理员能够处理问题。团队建议观看这些污染。此外,当停止节点时,卷将自动分离。

此外,Kubernetes现在支持AWS的新NVMe实例类型,以及使用AWS网络负载均衡器,而不是弹性负载均衡器。

Azure

如果用户在Windows上使用Kubernetes,特别是在Azure上,会发现安装卷的失误率更小,因为您现在可以创建Windows挂载路径,并消除驱动器号的需要,这是无限的挂载点。

还可以使用service . beta.kubernetes显式地为公共IP地址设置Azure DNS标签。在使用Azure NSG规则时,仍然能够使用Azure NSG规则,以确保只允许外部访问负载均衡器的IP地址。当更新时,负载均衡器还被增强以考虑更多NSG规则的属性,包括协议、sourceUNK ange和DestinationAddressPrefs。(以前这些字段的更改不会触发更新,因为负载均衡器认识不到已经发生了更改。) Kuberentes 1.9下载地址:https://github.com/kubernetes/kubernetes/releases/tag/v1.9.0

原文作者:Mirantis 原文链接:https://www.tuicool.com/articles/q2EfamA