Kubernetes是什么?Kubernetes有什么核心组件?Linux
老男孩IT教育
行业新闻
2021年5月19日 17:35
Kubernetes 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。
1 什么是Kubernetes
Kubernetes 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。
2 Kubernetes 特点
1、可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
2、可扩展: 模块化, 插件化, 可挂载, 可组合
3、自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
4、快速部署应用,快速扩展应用
5、无缝对接新的应用功能
6、节省资源,优化硬件资源的使用
3 Kubernetes规划组件
Kubernetes定义了一组构建块,它们可以共同提供部署、维护和扩展应用程序的机制。组成Kubernetes的组件设计为松耦合和可扩展的,这样可以满足多种不同的工作负载。可扩展性在很大程度上由Kubernetes API提供——它被作为扩展的内部组件以及Kubernetes上运行的容器等使用。
Pod
Kubernetes的基本调度单元称为“pod”。它可以把更高级别的抽象内容增加到容器化组件。一个pod一般包含一个或多个容器,这样可以保证它们一直位于主机上,并且可以共享资源。Kubernetes中的每个pod都被分配一个唯一的(在集群内的)IP地址这样就可以允许应用程序使用端口,而不会有冲突的风险。
Pod可以定义一个卷,例如本地磁盘目录或网络磁盘,并将其暴露在pod中的一个容器之中。pod可以通过Kubernetes API手动管理,也可以委托给控制器来管理。
标签和选择器
Kubernetes使客户端(用户或内部组件)将称为“标签”的键值对附加到系统中的任何API对象,如pod和节点。相应地,“标签选择器”是针对匹配对象的标签的查询。
标签和选择器是Kubernetes中的主要分组机制,用于确定操作适用的组件。
控制器
控制器是将实际集群状态转移到所需集群状态的对帐循环。它通过管理一组pod来实现。一种控制器是一个“复制控制器”,它通过在集群中运行指定数量的pod副本来处理复制和缩放。如果基础节点出现故障,它还可以处理创建替换pod。
其它控制器,是核心Kubernetes系统的一部分包括一个“DaemonSet控制器”为每一台机器(或机器的一些子集)上运行的恰好一个pod,和一个“作业控制器”用于运行pod运行到完成,例如作为批处理作业的一部分。控制器管理的一组pod由作为控制器定义的一部分的标签选择器确定。
服务
Kubernetes服务是一组协同工作的pod,就像多层架构应用中的一层。构成服务的pod组通过标签选择器来定义。
Kubernetes通过给服务分配静态IP地址和域名来提供服务发现机制,并且以轮询调度的方式将流量负载均衡到能与选择器匹配的pod的IP地址的网络连接上(即使是故障导致pod从一台机器移动到另一台机器)。默认情况下,一个服务会暴露在集群中(例如,多个后端pod可能被分组成一个服务,前端pod的请求在它们之间负载平衡);但是,一个服务也可以暴露在集群外部(例如,从客户端访问前端pod)。
4 Kubernetes核心组件
Kubernetes遵循master-slave architecture。Kubernetes的组件可以分为管理单个的 node 组件和控制平面的一部分的组件。
Kubernetes Master是集群的主要控制单元,用于管理其工作负载并指导整个系统的通信。Kubernetes控制平面由各自的进程组成,每个组件都可以在单个主节点上运行,也可以在支持high-availability clusters的多个主节点上运行。
Kubernetes主要由以下几个核心组件组成:
组件名称 |
说明 |
etcd |
保存了整个集群的状态; |
apiserver |
提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; |
controller manager |
负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; |
scheduler |
负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; |
kubelet |
负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理; |
Container runtime |
负责镜像管理以及Pod和容器的真正运行(CRI); |
kube-proxy |
负责为Service提供cluster内部的服务发现和负载均衡; |
除了核心组件,还有一些推荐的Add-ons:
组件名称 |
说明 |
kube-dns |
负责为整个集群提供DNS服务 |
Ingress Controller |
为服务提供外网入口 |
Heapster |
提供资源监控 |
Dashboard |
提供GUI |
Federation |
提供跨可用区的集群 |
Fluentd-elasticsearch |
提供集群日志采集、存储与查询 |
5 分层架构
分层说明:
分层结构 |
说明 |
|
核心层 |
Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境 |
|
应用层 |
部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等) |
|
管理层 |
系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等) |
|
接口层 |
kubectl命令行工具、客户端SDK以及集群联邦 |
|
生态系统 |
在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴 |
|
Kubernetes外部 |
日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等 |
|
Kubernetes内部 |
CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等 |
阅读更多:
测试主机网络连通性ping命令参数选项-linux操作系统学习总结
