开源容器化应用Kubernetes的升级速度堪比赛车,一个又一个改进版本不停推出,最新版本Kubernetes 1.10马上来了,在1.10版中,四个关键领域推出了一些稳定功能:API聚合、存储、安全性和网络。
说得详细一点,该版本引入了外部client-go凭据提供程序(预览版功能);域名系统(DNS)服务可以在安装时切换到CoreDNS(测试版)以及容器存储接口(CSI)和持久本地卷(也是测试版)功能。
API聚合(稳定版)
CoreOS现在是红帽的一个部门,也是个领先的Kubernetes开发公司。据CoreOS介绍,应用程序编程接口(API)聚合在Kubernetes 1.10里已稳定下来。因此,Kubernetes开发人员可以在不更改核心Kubernetes代码库的情况下开发自己的定制API服务器。API聚合功能稳定下来后,Kubernetes集群管理员可以更有把握地将这些第三方API添加到生产配置里自己的集群中。
存储:容器存储接口和本地存储(测试版)
Kubernetes实现容器存储接口后,安装新的卷插件就与部署Pod一样简单了。第三方存储提供商因此就可以在核心Kubernetes代码库之外独立开发解决方案。这样做延续了Kubernetes生态系统内可扩展性的思路。
CSI的目标是为存储供应商创建一个标准化方式编写可在多个容器编排工具中工作的插件,包括在Kubernetes里使用,但也可以在其他编排程序里使用,例如,在Docker Swarm Mode和Mesosphere里用 。CSI提供了标准化方式,能以动态的方式提供和取消配置存储卷、从节点上挂接或分离卷、从节点挂载或卸载卷等等。
持久(非共享)本地存储管理现在处于测试阶段。利用此功能,本地连接(非网络连接)存储可作为持久性卷源用。这意味着分布式文件系统和数据库的性能会更高,而成本会更低。
此版本还包含许多持久卷的测试版更新。 Kubernetes现在可以自动防止删除正在被Pod使用的持久性容量声明(Persistent Volume Claim),并可防止删除与持久性卷绑定的持久性卷声明。这将有助于确保以正确的顺序删除存储API对象。
安全性:外部凭证提供程序(预览版)
Kubernetes的可扩展性已经很高了,1.10版增加了外部Kubectl凭证提供程序支持又是一个延伸点。云提供商、供应商和其他平台开发人员现在可以利用外部Kubectl凭证提供程序支持发布二进制插件,可用于处理特定云提供商身份和访问管理(IAM)服务的身份验证,或与诸如Active Directory等不支持树中内部认证的系统进行整合。外部Kubectl凭证提供程序支持与1.9版添加的云控制器管理器功能可以互补。
网络:CoreDNS作DNS提供商用(测试版)
1.10版在安装时,所用的DNS服务可以切换到CoreDNS。这是个测试功能。集群运营商可试用及开发该功能。 CoreDNS涉及的“不确定部件”少一些,因为CoreDNS是单个可执行文件和单进程,并支持其他用例。
在此以前,DNS由kube-dns提供。kube-dns是个dnsmasq封装,用Go写的。去年 dnsmasq出了安全漏洞。那以后,Kubernetes开发人员决定走别的路。
性能改进(测试版)
1.10版里的DevicePlugins API已进入测试版。DevicePlugins API为GPU、高性能网络接口、FPGA、Infiniband和其他快速I / O设备提供了一个稳定的整合点,无需这些设备的供应商往Kubernetes里添加任何定制代码。
为了更好地支持CPU和内存敏感应用程序,1.10版还增加了其他测试版功能。例如,静态CPU锁定策略已经进入测试版,以支持对CPU等待时间敏感的应用程序,做法是将应用程序固定到特定内核里。例如,要确保容器快速运行可以将其绑定到高速CPU内核。另外,群集也可以对大数据和需要大数据的其他应用程序的大页面进行调度和隔离。
Kubernetes 1.10可从GitHub下载(https://github.com/kubernetes/kubernetes )。可查看有关线上交互式教程(https://kubernetes.io/docs/tutorials/kubernetes-basics/cluster-interactive/)学习使用Kubernetes。
Kubernetes已经成为最受欢迎的容器编排程序。上述的改进将会确保Kubernetes保持其领先地位。
Kubemetes简介
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用(就像canary deployments)。
现在Kubernetes着重于不间断的服务状态(比如web服务器或者缓存服务器)和原生云平台应用(Nosql),在不久的将来会支持各种生产云平台中的各种服务,例如,分批,工作流,以及传统数据库。
在Kubenetes中,所有的容器均在Pod中运行,一个Pod可以承载一个或者多个相关的容器,在后边的案例中,同一个Pod中的容器会部署在同一个物理机器上并且能够共享资源。一个Pod也可以包含O个或者多个磁盘卷组(volumes),这些卷组将会以目录的形式提供给一个容器,或者被所有Pod中的容器共享,对于用户创建的每个Pod,系统会自动选择那个健康并且有足够容量的机器,然后创建类似容器的容器,当容器创建失败的时候,容器会被node agent自动的重启,这个node agent叫kubelet,但是,如果是Pod失败或者机器,它不会自动的转移并且启动,除非用户定义了 replication controller。