Kubernetes平台概述

本文讲的是Kubernetes平台概述【编者的话】《Kubernetes平台概述》是一篇介绍Kubernetes架构和关键设计原则的文章。

【深圳站|3天烧脑式Kubernetes训练营】培训内容包括:Kubernetes概述、架构、日志和监控,部署、自动驾驶、服务发现、网络方案等核心机制分析,进阶篇——Kubernetes调度工作原理、资源管理及源码分析等。

Kubernetes是容器管理平台, 运行企业级、云应用和web可扩展的IT负载。它是建立在谷歌奠定的15年运行容器化应用的经验基础上。这本电子书的目的是突出Kubernetes如何被早期使用者部署。它涉及到使用模式和生产环境使用Kubernetes的用户的关键部署场景。我们也会看到一些公司,如:华为、IBM、英特尔和Red Hat,他们努力推动Kubernetes前进。

容器编排的崛起

容器的概念已经存在了十多年。主流UNIX的操作系统(OS),如Solaris、FreeBSD和Linux内建支持容器,但Docker是真正面向开发和IT运维团队,使容器变成可管理和可访问。Docker已经演示容器可以驱动应用程序可扩展性和可移植性。开发人员和IT运维人员开始转向使用容器包装各种语言的代码和依赖关系 。容器在DevOps流程中也发挥了至关重要的作用。他们已成为建设自动化和持续集成和持续部署(CI / CD)管道的一个组成部分。

对容器的兴趣导致了OCI格式的形成。业界也目睹了容器的各种实现,如标准的LXD,CoreOS的Rocket, Windows容器cri-o(已经被Kubernetes孵化器审查通过), VMware集成容器的vSphere 。

虽然这些核心实现围绕单个容器生命周期,而典型的生产应用需要处理运行在跨主机上的容器的负载。处理跨主机和要求复杂结构的生产环境需要一些管理工具,一些流行的解决方案包括Docker Datacenter,Kubernetes和Mesosphere DC/OS。

容器编排已经影响了传统PaaS平台的结构,它们将提供开放和有效的模式支持打包、部署、隔离、服务发现、扩容和滚动更新。最主流的PaaS解决方案已经拥抱容器,并有新的PaaS 建立在容器编排之上实现管理平台。客户可以选择部署,或面向IT运维,部署核心容器编排工具; 或面向开发者,使用PaaS平台 。 
容器编排已经驱动企业和新兴的初创公司采用容器起重要作用。

Kubernetes架构

像大多数的分布式计算平台,一个Kubernetes集群包括至少一个主节点和多个计算节点。主节点暴露应用程序接口(API),调度部署和管理整个集群。

Node:每个节点都有一个容器运行时,如Docker或Rocket,以及与主节点通信的agent 。节点还运行日志、监视、服务发现和可选附加组件的其他组件。节点是Kubernetes集群的工作负荷节点,他们给应用提供计算,网络,存储资源。节点可能是云上的虚拟机或数据中心的裸机。

Pod:Pod是一个或多个容器的集合。Pod是Kubernetes管理的核心单元,作为共享相同上下文和资源的容器的逻辑边界,分组进程。在运行时,pods可以通过创建副本扩容, 确保部署始终运行所需数量的pods。
Replica sets:通过维护一组预定义的pods,提供所需的规模和可用性。单个pod或replica set能通过services暴露给内部或外部消费者。services通过特定的标准将一组Pods关联来实现对pods的发现。通过键值对的标签和选择器来关联pods,任何与标签匹配的新pod将自动被服务发现。

Kubernetes的对象信息(如pods,replica sets和services)提供给主节点。基于需求定义和资源使用情况,主节会在指定节点调度pod,该节点从容器镜像仓库中拉取镜像,并协调本地容器运行时启动容器。

etcd:etcd是CoreOS开源分布式健值数据库,作为kubernetes集群所有组件的(single source of truth ) SSOT。主节点需要etcd获得节点状态、pods状态和容器状态参数信息。Kubernetes框架通过创建应用和底层架构的抽象层,达到模块化和可扩展。

关键设计原则

Kubernetes的设计原则是可扩展性、可用性,安全将任务分发到可用的资源。本节将重点介绍一些Kubernetes的关键属性。

负载可扩展性

应用程序打包成微服务部署在Kubernetes上 。这些微服务是由多个容器分组成pods。每个容器设计只执行一个任务。pod可以由无状态容器或状态容器组成。无状态的pod可以轻易按比例要求扩展或通过动态自动扩展。Kubernetes1.4支持平行pod自动扩展,即可以基于CPU自动扩展replication controller中pods数量。未来的版本将通过定义自动扩展原则,支持用户量度和阈值。

谷歌云托管Kubernetes运行支持集群自动扩展。当所有可用节点的pods扩展时,Kubernetes会协同底层基础设施向集群添加节点。

一个应用程序是微服务架构,以容器封装部署为pods,可以利用Kubernetes的极端的扩展功能。虽然这主要是适用于无状态的pods, Kubernetes通过pet sets增加支持持久化工作负载,如:NoSQL数据库与关系数据库管理系统(RDBMS);同时扩展无状态的应用,如:Cassandra集群和MongoDB副本集。这种能力使弹性的、无状态的Web层和持久的、有状态的数据库共同运行在相同的基础设施上。

高可用

当代工作负载要求在基础设施和应用水平上的可用性。在扩展集群中,一切都容易失败,这使得生产负载的高可用性是严格必要的。更多的容器编排引擎和PaaS提供实现应用程序的可用性, Kubernetes设计用来解决基础设施和应用程序的可用性。

在应用方面,Kubernetes通过replica sets,replication controllers和pet sets确保应用程序的高可用。运维能定义在某个指定时间点的最小pods数。如果容器和pod因为错误崩溃,预设策略能回到预定的配置部署。有状态负载通过pet sets能被配置成高可用的。

对于基础设施的可用性,Kubernetes已经支持大范围的分布式文件系统的存储:如NFS和GlusterFS,块存储设备如Amazon EBS和谷歌计算引擎persistent disk,专业容器存储插件如:Flocker。通过增加一个可靠的可用的存储层,Kubernetes保证有状态的工作负载的高可用性。

Kubernetes集群的每个组件-etcd, API服务器,节点–可配置成高可用。通过负载均衡器和健康检查确保应用程序的高可用。

安全

Kubernetes的安全性可以通过多层次的配置。API接口通过传输层安全TLS,确保用户使用最安全的机制认证。Kubernetes集群有两类用户-服务账户直接由Kubernetes管理的,普通用户认为是由一个独立的服务管理。服务帐户由API服务器自动创建的Kubernetes API管理的。管理集群内运行的进程的每一个操作必须由已验证的用户启动;该机制确保集群的安全性。

部署Kubernetes集群内应用可以利用secret的概念来安全地访问数据。一个secret是Kubernetes对象,包含少量的敏感数据,如密码、令牌或密钥,从而减少意外的数据暴露的风险。用户名和密码以base64编码存储一个Kubernetes集群内。在运行时,pods通过安装的卷或环境变量访问secret。需要注意的是,secret对同一集群命名空间的所有用户都可用。

通过部署网络策略限制pods的网络流量。Kubernetes的网络策略是规范pods选择如何相互通信以及与其他网络的通信。这对于在多层部署中不暴露于其他应用程序的pods是非常有用的。

可兼容性

Kubernetes的设计在选择操作系统、Docker运行时,处理器架构,云平台和PaaS提供了选择的自由。

Kubernetes集群可以配置在主流Linux系统上,包括CentOS,CoreOS,Debian,Fedora,Red Hat Linux的Ubuntu。它可以部署运行在本地开发机;云平台,如AWS,Azure和谷歌云;基于KVM的虚拟环境,vSphere和libvirt;及裸机。用户可以启动Docker或rkt,未来新的容器运行时的容器。

通过federation,集群可以被混合匹配运行在跨多云提供商和私有部署。这将给容器化的工作负载带来混合云能力。客户可以无缝移动工作负载从一个部署目标转移到另一个部署目标。我们将在下一节讨论混合架构。

原文链接:Use Cases for Kubernetes(翻译:范彬)

===============================================================

译者介绍:范彬,从事微服务、Docker和Kubernetes容器技术等方面的工作。可以关注译者的微信公众号:范范米饭。

原文发布时间为:2017-04-24

本文作者:范彬

原文标题:Kubernetes平台概述

时间: 2024-08-03 22:10:30

Kubernetes平台概述的相关文章

Kubernetes网络概述

[编者的话]本文比较了Kubernetes和Docker的网络模型,并对Kubernetes的网络模拟做了重点阐述,对Kubernetes的网络插件作了比较. 本文讲的是Kubernetes网络概述容器编排技术是当今最火的IT技术之一.不可否认,Docker技术促进了数据中心的发展,并为微服务架构在开发和运维中的实践奠定了基础. 工作在Sun公司的John Gage 曾说:" 网络就是计算机." 为了能充分发挥计算机的功能,必须让计算机之间互相连接.因此,除非你的服务是简单的并且不需要

《淘宝店铺 大数据营销+SEO+爆款打造 一册通》一一2.1 生意参谋平台概述

第2章 生意参谋--大数据分析利器 淘宝店铺 大数据营销+SEO+爆款打造 一册通 对于淘宝店铺运营来说,数据分析在其中永远是一个不可忽视的角色.新手开店对于数据分析都不太理解,只知道一味地去引流.打造爆款等,却不知道如何从数据中获取更精准的单品引流效果.打造爆款的趋势与效果.做好数据分析不仅可以对店铺经营现状进行调整,更可以在我们做营销活动.打造爆款时有着很大的帮助作用.而如今做数据分析,工具上最常见的就是生意参谋了. 2.1 生意参谋平台概述 随着互联网的发展,传统的商业格局得以打破,电商行

几大广告交换平台概述

正像广告平台一样,每个广告交换平台也都有一些自己的特点.他们广告库存的属性,广告定位方式,广告位选择和定价模式都是与众不同的.因此充分理解每个广告交换平台的优势所在能够帮助营销商做出正确的选择. 以下我会介绍几个大型的广告交换平台来帮你做出更好的选择: AdECN 该平台由微软在2007年正式推出,AdECN提供了非常多的定位选择(其中包括http://www.aliyun.com/zixun/aggregation/16327.html">网络环境定位.用户行为方式定位以及关键词定位)和

基于Kubernetes的PaaS平台设计和思考

本文讲的是基于Kubernetes的PaaS平台设计和思考[编者的话]文章介绍了PaaS平台的意义,为什么选择Kubernetes,PaaS平台上的微服务架构应用,如何设计和快速构建PaaS平台,PaaS平台的功能组件这几个内容. [烧脑式Kubernetes实战训练营]本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理.Kubernetes DNS与服务发现.基于Kubernetes和Jenkins的持续部署方案 .Kubernetes网络部署实践.监控.日志.Kubern

Kubernetes和Spring Cloud哪个部署微服务更好?

Spring Cloud 和Kubernetes都自称自己是部署和运行微服务的最好环境,但是它们在本质上和解决不同问题上是有很大差异的.在本文中,我们将看到每个平台如何帮助交付基于微服务的架构(MSA),它们擅长哪个领域,并且如何两全其美的使用从而在微服务之旅上获得成功. 背景 最近我读了 A. Lukyanchikov的一篇非常棒的文章(https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do),

DockOne微信分享(七十五):应用容器化之Kubernetes实践

本文讲的是DockOne微信分享(七十五):应用容器化之Kubernetes实践[编者的话]本次分享主要以ZooKeeper.Redis.Kafka.MongoDB等应用容器化在Kubernetes平台上面实践.从计算.网络.存储方面解析应用在集成中的问题,以及部分传统应用在容器化过程中设计的应用二次开发等问题.首先介绍应用Docker化的需求和局限.接着介绍基础平台,整体环境包括Kubernetes和ECP,然后介绍具体应用如ZooKeeper在集成中的实践,最后介绍部分开源应用在容器化过程中

Kubernetes服务目录的设计

本文讲的是Kubernetes服务目录的设计[编者的话]OpenShift 3.6新版本包括新的服务目录和服务中介技术预演版.它们是基于Kubernetes的孵化项目Kubernetes Service Catalog project.服务目录通过Open Service Broker API集成服务中介,由服务中介管理服务的创建和管理:这篇文章将深入介绍服务目录的设计. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker的CI/CD实战展开,具体内容

从15个需求、6大挑战探究“企业就绪”的Kubernetes

11月举行的KubeCon 2016大会,有1200余人出席,红帽CTO Chris Wright发表了主题演讲,题为"OpenShift是'企业就绪'的Kubernetes".   近日,红帽产品策略总监Brian Gracely撰写博文,详细描述了企业用户到底需要什么样的容器平台与解决方案. 两年前,OpenShift团队做出了支持Docker容器和新兴Kubernetes项目的关键决定.当时,这个决定来之不易.一方面,红帽OpenShift团队使用了一系列自主研发的技术,已经拥有

J2EE VS .NET平台:J2EE体系结构

与http://www.aliyun.com/zixun/aggregation/13480.html">.NET平台相比,Sun公司的标准定义的J2EE体系结构有很少可以讨论的空间,因为就没有什么可讨论的.如果一个人注意某个具体开发商的产品,如IBM公司的WebSphere,那么就会看到其技术的最大的一部分是WebSphere专用的.比较所有开发商对J2EE的具体改进,已经超出了本文的范围,在我的经验中,大多数对J2EE作为一个平台感兴趣的公司对该标准的可移值性感兴趣.任何对可移值性感兴