Kubernetes1.7两大新特性| 日志审计变化& PodDisruptionBudget控制器变化

timg
 ■ 文/ 天云软件 产品总监 马俊  日志审计变化 背景概念 出于安全方面的考虑,Kubernetes提供了日志审计记录,用来记录不同普通用户、管理员和系统中各个组件的日志信息。 Kubernetes日志审计是Kube-apiserver组件的一部分功能,通过日志审计来记录apiserver上面所有请求处理过程。每条审计日志记录包括两行: 1、请求行:唯一ID、源IP、请求用户、请求资源信息、模拟信息等。 2、响应行:唯一ID、相应信息代码。 通过唯一ID就可以识别出对应的请求行和响应行。 下面的例子就是admin用户查询default命名空间中POD信息的两行审计日志信息。 2017-03-21T03:57:09.106841886-04:00 AUDIT: id="c939d2a7-1c37-4ef1-b2f7-4ba9b1e43b53" ip="127.0.0.1" method="GET" user="admin" groups="\"system:masters\",\"system:authenticated\"" as="<...
More

Kubernetes1.7两大新特性 | 直接通过containerd管理容器、自动伸缩条件

timg
 ■ 文/ 天云软件 产品总监 马俊  支持绕过docker,直接通过containerd管理容器 背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一个操作容器的命令行工具,containerd这个后台程序还可以操作满足OCI标准规范的其他容器工具,也就意味着以后只要是按照OCI标准规范开发的容器工具,都可以被containerd使用起来。使用containerd的好处是,当docker daemon或者containerd两个进程crash后,应用容器不会“死掉”,未来要是实现的功能是,当containerd daemon重新启动后可以同应用容器重新建立连接。 从Docker1.11版本开始,daemon模块调用关系图如下: 美国时间2016年12月14日,Docker公司宣布将containerd从Docker Engine中分离,并捐赠到一个新的开源社区独立发展和运营,阿里云,AWS, Google,IBM...
More

Kubernetes1.7新特性:新增StorageOS卷插件和Local持久存储

timg
 ■ 文/ 天云软件 产品总监 马俊  背景介绍 在Kubernetes中卷的作用在于提供给POD存储,这些存储可以挂载到POD中的容器上,进而给容器提供存储。 从图中可以看到结构体PodSpec有个属性是Volumes,通过这个Volumes属性可以关联到结构体Volume和结构体VolumeSource,而且这个Volumes属性是一个数组类型,就是说POD可以关联到多个不同类型的卷上面。 结构体Container表示POD中的容器,这个结构体有一个属性VolumeMounts,通过这个属性让容器知道具体挂载的存储路径,这个VolumeMounts属性也是一个数组类型,就是说容器可以挂载多个存储路径。 在Kubernetes中还提供了一种持久化存储,持久化存储就是PersistentVolume,简称PV,PV是独立于Pod的生命周期单独存在的。 从图中可以看到kubernetes1.7中提供了两种新的PV插件,分别是StorageOS和Local。 新的卷插件 Kubernetes1.7现在一共支持27种卷插件,其中在Kubernetes1...
More

Kubernetes1.5两大新特性 | 支持Photon卷插件、自定义资源类型

timg
■ 文/ 天云软件 产品总监 马俊 支持Photon卷插件 一、背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储。                                              从图中可以看到结构体PodSpec有个属性是Volumes,通过这个Volumes属性可以关联到结构体Volume和结构体VolumeSource,而且这个Volumes属性是一个数组类型,就是说POD可以关联到多个不同类型的卷上面。 结构体Container表示POD中的容器,这个结构体有一个属性VolumeMounts,通过这个属性让容器知道具体挂载的存储路径,这个VolumeMounts属性也是一个数组类型,就是说容器可以挂载多个存储路径。 二、支持新的卷插件 Kubernetes一共支持23种卷插件。在Kubernetes1.5中又增加了一种新的卷插件PhotonPersistentDisk。 三、Photon Photon是VMware自家的Linux版本...
More

Kubernetes1.5新特性:支持Windows容器

timg
■ 译/ 天云软件 产品总监 马俊 一、Windows容器概述 1、Windows 容器类型 Windows容器包括两个不同类型的容器: Windows Server 容器 - 通过进程和命名空间隔离技术提供应用程序隔离。 Windows Server 容器与容器主机和该主机上运行的所有容器共享内核。 Hyper-V 容器 - 通过在高度优化的虚拟机中运行每个容器,在由 Windows Server容器提供的隔离上扩展。在此配置中,容器主机的内核不与Hyper-V容器共享。 2、Windows容器基础知识 容器主机:使用Windows容器功能配置的物理或虚拟计算机系统。容器主机将运行一个或多个Windows容器。 容器映像:在对容器文件系统或注册表进行修改时(如软件安装),将在沙盒中捕获它们。在许多情况下,你可能希望捕获此状态,以便可以创建继承这些更改的新容器。这就是映像的本质:一旦容器停止,你便可以放弃该沙盒,或者可以将其转换为新的容器映像。例如,让我们想象你已从Windows Server Core操作系统映像部署一个容器。然后你将MySQL安装到此...
More

SkyFormCMP和ECP助力运营商双模IT建设

e353cad06f177797bae6c81c980f5295
■ 文/ 天云软件 产品总监 马俊 双模IT介绍 双模IT的概念是Gartner在2014年提出的,之后便引起热议,双模IT指出了企业数据中心会同时存在两种不同的IT模式,一种是传统型模式,一种是探索型模式。 传统型模式:用传统的IT技术架构和服务来满足应用需求。 探索型模式:用创新的IT技术架构和服务来满足应用要求。   双模IT就是将传统型模式和探索型模式同时管理起来的实践方式。 举例来说,当传统企业数据中心引入虚拟化技术时,就会存在传统IT设备管理和虚拟机管理两种不同的管理模式,但是由于虚拟机管理同物理机管理很相似,所以在实践中其实大部分企业都按照传统IT设备管理的方式来管理虚拟机,这种企业其实还是单模IT。但是当企业数据中心引入容器、引入DevOps后,对应用、服务、集群、容器就无法按照传统IT设备管理方式来管理了,就需要采用新的管理方式,那么这个时候企业就变成了双模IT。 运营商现状 运营商经过多年的建设和优化,IT管理系统在端到端管理、基于大数据的运营分析、云环境下虚拟资源管控等方面的能力不断加...
More

SkyForm CMP构建运营商企业级云管理平台

1004211I4-0n
  ■ 文/ 天云软件 产品总监 马俊 背景介绍 随着移动互联网和智能终端的发展,电信行业遇到了巨大的挑战,当运营商面对市场逐步趋于饱和、业务增长乏力、创新面临挑战等多方面问题困扰现阶段,可更多的考虑对内进行资源整合优化,减少成本,提高效能,解决公司现阶段面临的压力。 公司通过对内进行同类IT系统资源整合优化,实现集中化、规模化、专业化管理,进而提升整体运营效能。集约化运营,一方面实现成本内控,另一方面大大提升运营管理效率,最终达成“节本增效”的目标。 运营商随着多年的积累,云管理平台越来越多,现有“烟囱式”多系统并存发展,造成系统间设备复用程度低,每个系统都独立搭建,分别配置对应服务器、存储设备、网络设备、数据库软件等。多系统并存,重复建设导致现有资源,未实现最大化利用,一定程度上造成资源浪费。 同时,多系统建设所购置的软硬件型号庞杂,大大增加了维护难度。运营商迫切需要形成一套系统的企业级云管理平台,通过创建集中化、多元化、专业化、模块化管理模式,统一管理不同部门的多个资源池,确保能够在任何地域提供一致的服务体验与感知。 需求分析 客户目前已完成...
More

Kubernetes 1.3新特性:新的资源回收控制器

20151120100232_969
■ 文/ 天云软件 产品总监 马俊 天云软件为大家介绍Kubernetes 1.3新特性: 核心概念 在kubernetes 1.3中新增了一个资源回收控制器GarbageCollector,用这个控制器来替代kubernetes 1.2中的资源回收控制器GC。 如下为kubernetes 1.2中的资源回收控制器结构体: 如下为kubernetes 1.3中的资源回收控制器结构体: 在kubernetes 1.2中,如果要实现对资源级联回收功能,需要通过客户端进行资源级联回收调用的方式实现。比如存在一个replica set类型的资源,在这个资源下面存在多个POD资源,如果我们使用命令行的方式进行级联删除,我们需要使用kubect命令先删除replica set下面对应的所有POD资源,然后再删除这个replica set资源,对资源级联删除的逻辑处理都要通过客户端来实现。 在kubernetes 1.3中,可以将对资源级联回收功能的逻辑处理放到服务端来实现,这样就减少了客户端维护逻辑处理的工作量,方便了用户使用,从而进一步完善了kubernetes作为一个...
More

Kubernetes 1.3新特性:POD中的初始化容器

20151120100232_969
■ 文/ 天云软件 产品总监 马俊 在kubernetes 1.3的POD中有两类容器:一类是系统容器(POD Container),一类是用户容器(User Container);在用户容器中,现在又分成两类容器:一类是初始化容器(Init Container),一类是应用容器(App Container),其中应用容器包含卷容器(Volume Container)。下面看看kubernetes 1.3中同POD相关的各个实体信息: 在PodSpec中,可以看到有两个同容器相关的变量,分别是InitContainers和Containers,其中变量InitContainers代表初始化容器,变量Containers代表应用容器。这两个容器都对应相同的容器实体,如下图所示: 其中POD同容器的对应关系如下图所示,从图中可以看出来,POD同初始化容器之间的对应关系是从0到N,POD同应用容器之间的对应关系是从1到N。 初始化容器是kubernetes 1.3的新特性,初始化容器适用下面几个使用场景: 一、如果容器中的应用使用到了一个外部服务,需要等这个外部服务可以...
More

Kubernetes 1.3:QoS服务质量管理

20151120100232_969
■ 文/ 天云软件 产品总监 马俊 在kubernetes中,每个POD都有个QoS标记,通过这个Qos标记来对POD进行服务质量管理。QoS的英文全称为"Quality of Service",中文名为"服务质量",它取决于用户对服务质量的预期,也就是期望的服务质量。对于POD来说,服务质量体现在两个指标上,一个指标是CPU,另一个指标是内存。在实际运行过程中,当NODE节点上内存资源紧张的时候,kubernetes根据POD具有的不同QoS标记,采取不同的处理策略。 在Kubernetes中,POD的QoS服务质量一共有三个级别,如下图所示: 这三个QoS级别介绍,可以看下面表格: QoS级别 QoS介绍 BestEffort POD中的所有容器都没有指定CPU和内存的requests和limits,那么这个POD的QoS就是BestEffort级别 Burstable POD中只要有一个容器,这个容器requests和limits的设置同其他容器设置的不一致,那么这个POD的QoS就是Burstable级别...
More

Kubernetes 1.3:Quota配额管理

20151120100232_969
■ 文/ 天云软件 产品总监 马俊 在kubernetes的controller-manager模块中有一个ResourceQuotaController控制器,通过这个控制器管理所有的资源配额,目前可以管理的资源包括POD、CPU和内存。 下面会介绍ResourceQuotaController控制器是如何进行管理的。首先,我们看一个结构体PodSpec,这个结构体用来存放POD的描述信息,如下图所示: 在这个结构体中有一个变量ActiveDeadlineSeconds,这是一个可选的正整型变量,也就是变量的值需要大于0。对于每个POD,当POD在NODE上启动之后kubernentes就可以获取这个POD运行时间,如果给这个POD对应的PodSpec中设置了数值,那么就意味着如果POD运行时间超过了这个POD对应的ActiveDeadlineSeconds变量值,那么kubelet会把这个POD设置成Failed状态,并重新进行同步,其实kubelet就是操作PodStatus这个结构体的Phase变量,将这个变量设置成Failed状态,下图就是PodStatus结构...
More

Kubernetes 1.3新特性:集群联盟——在全球快速部署和管理应用

20151120100232_969
■ 译者:天云软件 产品总监 马俊 Kubernetes作为生产级别的容器编排管理工具,从发布到现在已经一年多的时间了。作为从Kubernetes 诞生就可开始参与的人来说,为今天kubernetes的成功而激动。在过去的几个月里,我们一直在为Kubernetes创造的一个新功能而兴奋,这个新功能就是“集群联盟”。 Kubernetes v1.3在2016年7月份发布了,里面介绍了对“集群联盟”的支持。这个功能使企业能够快速有效的、低成本的部署和管理跨公有云和数据中心的应用。这个功能会按照地理位置创建一个复制机制,将多个kubernetes集群进行复制,即使遇到某个区域连接中断或某个数据中心故障,也会保持最关键的服务运行。让我们来看看“集群联盟”控制平面架构,并使用一些用例来分析。 集群联盟:管理多个kubernetes集群的集群 为了追求高可用性和更高的性能,要将应用部署到多个数据中心或多个公有云中。通过引入“集群联盟”控制平面,Kubernetes v1.3迈出了第一步,使自己成为了一个多区域业务编排框架。 “集群联盟”在架构上同kubernetes集群很相似。有一个...
More

Kubernetes 1.3新特性

20151120100232_969
■ 文/ 天云软件 产品总监 马俊 本次分析的kubernetes版本号:v1.3.0。 scheduler模块 新增了kube-api-content-type参数,表示scheduler模块发送给api-server的请求类型,默认值是“application/vnd.kubernetes.protobuf”。 新增了hard-pod-affinity-symmetric-weight参数,表示POD调度规则亲和力的权重,取值范围从0到100。 新增了failure-domains参数,这是一个字符串参数,表示POD调度时亲和力参数。在调度POD的时候,如果两个POD有相同的亲和力参数,那么这两个POD会被调度在相同的节点上;如果两个POD有不同的亲和力参数,那么这两个POD不会在相同的节点上。 在结构体Affinity中增加了两个参数PodAffinity和PodAntiAffinity,这两个参数会使用到failure-domains参数输入值。 type Affinity struct {        NodeAffinity *NodeAffinity...
More

Docker应用的可视化监控管理

4b1fa8310c5a6aa52e6bb3e6431b918a
■ 文/ 天云软件 产品总监 马俊 本文介绍一个开源项目Weave Scope,项目地址是https://github.com/weaveworks/scope。Weave Scope这个项目会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。 首先,我们在一台机器上面安装docker,然后安装Weave Scope项目。 sudo wget -O /usr/local/bin/scope https://git.io/scope sudo chmod a+x /usr/local/bin/scope sudo scope launch 上面的脚本会从Docker Hub上面下载最新的Scope镜像,然后我们在web浏览器中输入http://ip:4040,我们就会看到下面所示页面。 在页面中可以按照进程视图、容器视图和主机视图进行呈现,并且可以进行查询。 如果选择的是容器视图,那么在左下角可以根据容器属性进行过滤,可以只显示系统容器,或者只显示应用容器,或者同时显示系统容器和应用容器,在左下角还可以根据容器状态进行过滤,可以只...
More

Docker 1.11 daemon模块新特性

docker logo
■ 文/ 天云软件 马俊 本次分析的Docker版本号:v1.11.0。 我们来看daemon模块,daemon模块核心的结构体是Daemon,同v1.10.0相比增加了containerd和defaultIsolation两个变量,删除了execDriver变量。 type Daemon struct {        ID                      string        repository                string        containers                container.Store        execCommands           *exec.Store        referenceStore            reference.Store        downloadManager           *xfer.LayerDownloadManager        uploadManager             *xfer.LayerUploadManager...
More

Case Study:SkyForm CMP助力业务应用实现自动伸缩

2283419512
■ 马俊  天云软件产品总监 云计算的优势中包括两点:按需使用和弹性调度。 用虚拟机举例,按需使用一个简单的例子就是按照需求使用不同配置的虚拟机——当不需要使用了,可以销毁虚拟机;当虚拟机配置不能满足应用性能要求了,可以通过增加CPU、内存、磁盘等方式来提高虚拟机性能。 弹性调度一个简单的例子就是给用户创建虚拟机时,通过云计算调度功能选择一台物理机,然后在这台物理机上创建虚拟机;如果这台物理机坏了,还是通过云计算调度功能,将上面虚拟机自动迁移到其他正常运行的物理机上,以此来保证虚拟机的正常使用而不影响业务应用。 下面介绍一个业务应用上云的案例,来具体看看SkyForm CMP(天云软件云管理平台产品)是如何帮助业务应用利用云计算优势的。 这个案例是一个企业内部投票类业务应用,部署在企业内部私有云上面。这个业务的作用在于方便企业对员工进行意见征求,比如企业要进行春游活动,会做几个选项,员工在一定时间内进行投票,最后公布投票结果,企业选择得票数最多的活动组织春游。这个案例中,企业内部使用了vSphere构建虚拟化资源池,所有业务都部署在vSphere的ESXi虚拟化服务器上面,所...
More

从源代码看kubernetes 1.2新特性

20151120100232_969
■ 文/ 天云软件 产品总监 马俊 马俊现主要负责SkyForm系列产品管理工作,曾经负责过 SkyForm云管理平台早期几个版本的研发管理工作;先后参与过国家863计划国产数据库、电信运营商BOSS系统、中国联通WAP Billing Gateway、运营商语音广告调度系统的研发工作;熟悉数据库系统、运营商业务和运营商IT资源环境、各种IaaS平台、资源管控和资源调度等相关技术;当前主要关注Hadoop、Docker及相关资源调度技术,如kubernetes、Mesos、YARN等。 本次分析的kubernetes版本号:v1.2.1-beta.0。 scheduler模块 v1.2比v1.1去掉了bind-pods-qps参数和bind-pods-burst参数,取而代之的是kube-api-qps参数和kube-api-burst参数。v1.2比v1.1多了scheduler-name参数,这个参数代表用来给POD指定使用哪个调度器,对应到POD的annotation中就是 “scheduler.alpha.kubernetes.io/name”参数,从名字可以看...
More

OpenStack 5周年庆祝活动暨异构混合云大讨论在京举办

openstack北京meetup1507图1
2015年7月,OpenStack迎来了它的五岁生日。作为庆祝活动的一部分,7月的OpenStack北京Meet Up围绕异构混合云展开讨论。此次讨论邀请到了来自天云软件、EasyStack和VMware的演讲嘉宾,他们与大家分享了在异构混合云上的实践经验。大家一起在饱享技术大餐的欢快气氛中共同庆祝OpenStack走过的五年时光。 天云软件产品总监马俊,做了题为《云管理平台管理混合云和支撑上层的应用》的主题演讲。他从客户实际案例出发,介绍SkyForm云管理平台如何对异构虚拟化资源统一管理,如何对多数据中心资源进行统一管理,如何对混合云资源进行统一管理,如何对上层应用进行支撑,如何实现云的统一调度,如何将云的能力充分发挥出来。马俊的演讲务实、生动,得到了与会同仁的普遍关注和认可。 图1. 同时兼顾公有云和私有云的SkyForm系统架构 图2. 满足混合云支撑要求的高级资源调度 图3. “one platform”支持混合云和多数据中心 演讲嘉宾介绍:马俊,云基地旗下初创企业——北京天云融创软件技术有限公司产品总监,现主要负责SkyForm云管理平台产品管理工...
More