一、介绍
1. 概念
官方解释:Kubernetes是一个可移植、可扩展、开源的平台,用于管理容器化的工作负载和服务。
通俗解释:可将Kubernetes理解为一个开源的自动化容器平台,管理员可通过Kubernetes完成容器的部署、调度与资源扩容。
2. Docker 和 Kubernetes 的关系
Docker是Kubernetes支持的一个容器引擎,除此之外,Kubernetes还支持container等容器引擎
3. 主要功能
- 服务发现与负载均衡
- 存储编排
- 自动发布与回滚
- 自动调度
- 故障自愈
- 配置托管
二、Kubernetes架构
完整的Kubernetes集群包含两部分:主节点(Master Node)、工作节点(Worker Node)
1. 主节点(Master Node)
功能
负责集群的控制。比如:监控集群状态、执行变更
包含组件
ETCD(数据存储器)
开源、高可用的分布式键值对存储系统,用来保存整个集群的数据
API Server(API服务器)
操作
Kubernetes
集群各个资源的应用接口比如:处理完一个创建Pod的写请求后,将数据写入ETCD中
Scheduler(调度器)
负责调度Pod资源到指定节点上
比如:通过API Server新建一个Pod后,调度器会按照调度策略将Pod分配到指定的节点上
Controller Manager(集群控制器)
负责对集群的管理操作
比如:按预期增加或删除某个Pod,或者按顺序启动一系列Pod
2. 工作节点(Work Node)
功能
运行容器应用,并根据主节点的命令管理容器
包含组件
kubelet
每个从节点上,都包含了kubelet,它负责该节点中容器的创建、销毁等全生命周期的维护
kube-proxy
一组具有特定功能的Pod,将抽象为一个Service
kube-proxy负责为Service提供集群内部的服务发现和负载均衡功能
Container Runtime(容器运行时)
负责Pod和容器的运行
三、Kubernetes核心概念
Pod
Kubernetes集群运行与部署应用的最小单元
Service
按特定逻辑,对多个Pod进行分组,所形成的每个组就是一个Service
客户端是通过Service的IP地址访问这组Pod的
ReplicaSet(副本集)
副本集合负责创建和管理一个Service中的一组Pod的。
比如:当Service的Pod需要从2个扩容到4个时,副本集合会按照YAML中的Pod模板在合适的节点上创建Pod
四种集群控制器
Deployment
作用:用来对Pod和副本集合进行更新
注意:Deployment不会直接控制Pod,而是通过控制
ReplicaSet
来间接控制PodStatefulSet
作用:用来部署有状态的服务
说明:StatefulSet中的每个Pod名称都是事先确定的,如果某个Pod发生了故障,会从其他Node启动一个同名称的Pod
DaemonSet
作用:用来确保创建的Pod在集群中的每一个节点或指定的节点上会运行一个Damon Pod
使用场景:多用于存储、日志和监控等后台支持型服务的部署
Job、CronJob
作用:负责批量处理短暂的一次性任务
使用场景:那些仅需要执行一次的任务
Volume(存储卷)
Kubernetes支持多种类型的存储卷,比如:公有云平台存储、分布式存储或逻辑存储等
ConfigMap
给Pod提供配置的组件
两种提供方式:
- 以环境变量形式注入Pod
- 以文件形式通过Volume挂载到Pod中
三、Kubernetes分层架构
最核心的两个设计理念:
容错性
保证集群稳定且安全地运行
易扩展性
保障kubernetes可以快速迭代新功能
扫描二维码,分享此文章