Notice: Constant WP_DEBUG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 12

Notice: Constant WP_DEBUG_LOG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 13

Notice: Constant WP_DEBUG_DISPLAY already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 14
【转载】Kubernetes 1.6 | 企业的福音! – zoues

LOADING

Follow me

【转载】Kubernetes 1.6 | 企业的福音!
四月 25, 2017|DockerPaaS

【转载】Kubernetes 1.6 | 企业的福音!

【转载】Kubernetes 1.6 | 企业的福音!

Kubernetes 1.6 | 企业的福音!

K8S 1.6 不久前发布——稳定性增强

Kubernetes 1.6 是朝企业领域发展迈出的重大一步。它最显著的变化不仅发生在新功能上,而且还在于增强了版本稳定性


新增功能:默认情况下,Etcd v3 作为 APIServer 的存储后端使用。启用 etcd v3 在性能、效率、可靠性和并发性方面带来了显着的改进。

扩展和联邦: 目前,Kubernetes 已经能够支持5000节点的集群(150000 pod),致力于寻求规模效应的大企业将受益于此。同时,Kubernetes 在总集群规模上实现150%的扩展,主要由 CoreOS 的新版本 etcd v3 驱动,如果你在部署像搜索或者游戏这样不断增长消费集群的应用,这是个令人振奋的消息。


对于那些扩展需求超过5000节点或者跨多个区域、云部署的用户,联合功能能够实现多个 Kubernetes 集群的连接并通过单个API终端通信。在最新版本中,命令行kubefed功能已经入 beta——该功能将提升对本地集群的支持。当前,kubefed 支持在连接集群时自动配置 kube-dns,并传递参数给联合组件。


安全和设置:关心安全的用户会发现 RBAC,目前 beta 版本通过严格限定系统组件的默认角色,极大的增强了安全保护。新版本中默认的 RBAC 策略给予控制面板组件、节点和控制器限定的权限。RBAC 支持集群管理员基于单个命名空间,有选择的给予特定用户或者服务账户更细粒度的权限,以访问特定的资源。


高级调度:新版本增加了一系列强大且通用的调度结构,将实现 pods 调度的控制,包括在异构集群中限制 pods 到特定的节点的规则,跨故障域如节点、机架或者区域分布或打包 pods。


节点亲和性/反亲和性:目前进入 beta 状态,该功能支持用户基于节点标签将 pod 调度限制于某个特定节点。内建或者定制节点标签能够选择特定的区域、主机名、硬件架构、操作系统版本、专有硬件等等。该调度规则可根据用户对于调度器的控制实施。


taint/toleration,是一个相关的特性,它支持将 pods 排除在特定节点之外,该特性当前也在 beta 状态,一旦完全实现,将支持节点集合归于特定用户集合,或者将拥有专有硬件的节点对需要该专有硬件的 pod 可用,而在不需要的时候可以排除 pod。


动态存储配置:新版本 Kubernetes 中扩展的存储自动化特性将对部署有状态应用的用户大有裨益。

容器运行时接口 etcd v3 和 Daemon set 更新:


  • 尽管用户可能不会直接与容器运行时环境或者 API 数据库服务器交互,但它们是使用户面向 Kubernetes 功能的基础组件。

  • Docker-CRI 实现已进入 beta,在 kubelet 中默认支持,Alpha 支持其他运行时环境,cri-o、frakti、 rkt 也已经实现。

  • API 服务器的默认后端存储已经对新集群默认升级使用 etcd v3了。如果你正从1.5版本集群升级,应该注意保证数据迁移窗口的连续性。

  • 随着Kubelet公布了一个管理员可配置的节点分配特性,保留新系统后台进程的计算资源,使得节点可靠性得到了增强。

  • 后台程序集更新支持在后台程序集上执行滚动更新。


国内企业现状

近年来,云计算越来越火,从物理机阶段过渡到虚拟化阶段,虚拟化是最成熟的云计算基本技术之一,它包括桌面虚拟化、网络虚拟化、存储虚拟化、服务器虚拟化等多个层面。在大、中、小企业中都有比较成熟的应用。在效率至上的今天,虚拟化技术可以帮助企业用户合理调配资源,提高设备利用率,让跨地域、跨部门间的协作更高效。

企业面临痛点

目前,国内企业用户应用程序都部署在物理机以及虚拟机上,这样的情况下,企业用户会面临很多问题,比如:应用依赖关系复杂,开发、测试、生产环境不一致,无法无缝将应用切换于不同环境。交付流程复杂、新版本发布风险大:代码构建、发布需要繁琐配置或人工处理;出错后难以快速回滚,缺乏灰度发布或滚动更新。


同时,应用环境配置繁琐:需要用户手动维护组件的 IP、应用配置、外部依赖(Oracle, Web Logic),且配置随环境不同而变化。而且,用户操作使用众多随机的脚本:缺乏统一的控制平台和可视化界面,需要借助零散的脚本完成不同任务,难以维护。企业用户在使用过程中,会发现系统调试困难、缺乏有效监测预警:一般出了问题,技术运维人员难以快速定位,缺乏日志搜索、聚合等功能,缺少实时监测工具,在这个基础上如果可以实现监测可视化、自动预警,就给企业带去了巨大的方便。

Kubernetes 的出现:

Kubernetes 是 Google 在 2014 年开源的一款容器集群管理工具。作为一个平台,它提供“自动部署,弹性扩容,跨主机集群管理应用程序容器”等服务。它的存在,为企业用户降低云计算使用成本,简化架构和运维操作。


本文主要从企业选择 Kubernetes 的原因,使用 Docker 原因以及 Kubernetes 在国内企业落地情况来进行阐述。

Kubernetes 是什么?

Google 研发了 Kubernetes,他们有着十几年的使用经验。一直以来,Google 错综复杂系统都由 Kubernetes 进行管理,这也是 Google 的核心竞争力之一。两年前,Google 开源了 Kubernetes(Kubernetes 开源自 Borg)。


Kubernetes 是一个容器集群管理工具,帮助你将容器部署到集群上(集群就是虚拟机),它不仅可以对 Docker 容器进行编排管理,对其它类型的容器也适用。

Kubernetes 以及容器的需求

在解释 Kubernetes 的定义之前,需要先给大家介绍一下什么是容器,以及为什么要使用容器。直白点说,容器就是微型虚拟机。它非常小,因为它没有驱动设备,也没有虚拟机的那些常规组件。Docker 是目前最热门的容器,编译在 Linux 系统中(当然,微软也将容器添加到了 Windows 系统中,毕竟容器这么火)。


现在,假设你需要在 Linux 服务器上安装 nginx 网页服务器,方法有以下几种:1、直接在物理服务器的操作系统上进行安装;2、现在大多数人现在使用虚拟机,所以最好安装在这上面。


但是设置虚拟机需要一些管理以及经济成本。如果你只是想完成一个任务,不值得开一个虚拟机服务。所以最好还是使用 nginx 之类的 DNS 服务器。


人们之所以引入容器是因为考虑到这些因素,那么既然 nginx 或者其它任意的应用也需要一些裸操作系统来运行,为什么不尝试 OS 的剥离版本,将 nginx 放在里面,然后再运行呢?这样,你就拥有一个包含自己在内,机器不可知的单元,可以安装到任何地方。

DockerHub

容器的轻量级并不是它唯一的优点,容器还可以像虚拟机模版一样进行部署。这意味着应用程序的运行几乎不需要部署。


Dockerhub 的公开 repository 里面有成千上万个预配置的 Docker 镜像。技术人员花时间组装开源软件配置就好,可能数小时,也可能几天。


技术人员受益于此,因为他们只要从 Dockerhub 下载镜像,避免做之前那些繁琐的工作。


比如,这一行命令需要下载,安装,然后使用 Jupyter notebooks(iPython)开启Apache Spark:

docker run -d -p 8888:8888 jupyter/all-spark-notebook


大家可以看到,它运行在 8888 端口上。所以可以在另一个端口上安装任何其它东西,或者安装 Spark 和 Jupyter 的第二个实例。

Kubernetes 基本原理

Kubernetes 的基本理念就是将机器,存储和网络从物理部署中抽象出来。所以,将容器部署到云、虚拟机和物理机上使用的都是单个接口。


总的来说,Kubernetes 是一个容器编排工具,而容器就是其它虚拟机/主机上的运行应用的小型虚拟机。容器大幅度简化了应用部署,使机器得到充分的利用。容器,Kubernetes 大大降低了云的成本,进一步抽象化数据中心,简化 IT 架构和运维。

为什么要使用 Kubernetes?

就像虚拟机一样,容器有一个固有的问题:我们需要对他们进行跟踪。当公有云公司进行 CPU 或者存储收费的时候,你需要确认没有任何独立的机器在运行,此外,当机器需要更多内存、CPU 和存储的时候,就需要自动启动,当负载减轻的时候,就需要关闭它们。


而“编排”正好解决了这些问题——这就是 Kubernetes 起到的作用。

Kubernetes 1.6 | 企业的福音!

no comments
Share