Kubernetes平台概述

简介: 本文讲的是Kubernetes平台概述【编者的话】《Kubernetes平台概述》是一篇介绍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。
Screen_Shot_2017-04-24_at_10.10_.12_AM_.png

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

Kubernetes架构

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

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

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

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

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

关键设计原则

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

本文作者:范彬

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Kubernetes平台概述

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
Kubernetes 负载均衡 网络协议
|
5月前
|
Kubernetes Java Maven
DHorse(K8S的CICD平台)的实现原理
首先,本篇文章所介绍的内容,已经有完整的实现,[可以参考这里](https://gitee.com/i512team/dhorse)。 在微服务、DevOps和云平台流行的当下,使用一个高效的持续集成工具也是一个非常重要的事情。虽然市面上目前已经存在了比较成熟的自动化构建工具,比如jekines,还有一些商业公司推出的自动化构建工具,但他们都不能够很好的和云环境相结合。那么[究竟该如何实现一个简单、快速的基于云环境的自动化构建系统呢](https://gitee.com/i512team/dhorse)?我们首先以一个Springboot应用为例来介绍一下整体的发布流程,然后再来看看具体如何实
|
5月前
|
人工智能 Kubernetes 安全
阿里云 ACK 新升级,打造智算时代的现代化应用平台
阿里云 ACK 新升级,打造智算时代的现代化应用平台
70396 10
|
7月前
|
Kubernetes 调度 微服务
Kubernetes(k8s)容器编排概述
Kubernetes(k8s)容器编排概述
101 0
|
3月前
|
存储 Kubernetes 监控
Kubernetes快速进阶与实战:构建可靠的容器化应用平台
Kubernetes快速进阶与实战:构建可靠的容器化应用平台
92 0
|
7天前
|
存储 Kubernetes 负载均衡
Kubernetes概述
Kubernetes概述
18 0
Kubernetes概述
|
30天前
|
存储 Kubernetes 监控
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
39 0
|
6月前
|
Kubernetes jenkins Linux
两大容器管理平台,Kubernetes与OpenShift有什么区别?
两大容器管理平台,Kubernetes与OpenShift有什么区别?
|
6月前
|
Kubernetes 负载均衡 调度
kubernetes概述-介绍、组件、架构
kubernetes概述-介绍、组件、架构
kubernetes概述-介绍、组件、架构
|
6月前
|
Kubernetes Devops 持续交付
DevOps和kubernetes概述
DevOps和kubernetes概述