一、集群架构与组件
1,相关组件
【1】 master node三个组件
- k8s的控制节点,对集群进行调度管理,接受集群外用户去集群操作请求
- master node 组成(四个组件):控制面
- API Server:通信
- kube-Scheduler:调度 通过调度算法将pod分布到节点(服务器)上
- Cluster State Store(ETCD数据库)/分布式键值存储
- Controller Manger Server :资源
【2】 worker node三个组件:用户面
- 集群工作节点,运行用户业务应用容器1
- worker node组成(三个组件)
- kubelet:worker端的管理工具,负责pod的生命周期、存储、网络管理
- kube proxy :网络代理,设置转发路径 ,负责service的服务发现(此处为内部服务的发现,外部服务的发现为ingress),负载均衡(4层负载)
- Container Runtime(运行时):创建容器的软件
【3】附加组件
- kube - dns
- ingress Controller:为服务提供外网入口(外部服务的发现)
1,分层架构
【1】生态管理层
【2】接口层
【3】管理层
【4】应用层
【5】核心层
对外提供API构建高层的应用,对内提供插件式应用执行环境
二、核心概念与专业术语
1.服务的分类
【1】无状态
- 代表应用:nginx、aoache
- 优点:对客户头民,无依赖关系,可以高效实现扩容、迁移
- 缺点:不能存储数据,需要额外的数据服务支持
【2】有状态
- 代表应用:MySQL、redis
- 优点:可以独立存储数据,实现数据管理
- 缺点:集群环境下需要实现主从、数据同步、备份、水平扩容复杂
2.资源的分类
【1】元数据型:对于资源的元数据描述,每一个资源都可以使用元空间的数据
- Horizontal Pod Autoscater(HPA):pod自动扩容,可以根据CPU使用率或自定义指标(metrics )对Pod进行扩容或者缩容
- PodTeplate:pod模板,是关于pod的定义
- LimitRange:对集群内的资源进行限制,相当于批量设置了某一范围内(命名空间)的pod的资源使用限制
【2】集群级资源:作用于集群之上,集群下的所有资源都可以共享使用
- namespace
- node:节点,相当于一个服务器
- ClusterRole:用于对集群的权限进行管理
- ClusterRoleBinding:用于将上述的角色跟某一资源进行绑定(只能绑定集群级别的资源对象上绑定)
【3】命名空间级资源:作用在命名空间之上,通常只能在该命名空间范围内使用
- 工作负载型 pod:可以当做容器组,pod内可以有多个容器,可以管理pod中的容器,为最小的可部署单元。
一个pod包含一个应用程序容器(也可以是多个),存储资源,一个唯一的网络IP地址,以及一些确定容器该如何运行的选项。pod容器组代表了k8s中一个独立的应用程序运行实例,该实例可能由单个容器,或者几个紧耦合在一起的容器组成。
【1】副本(replicas):一个pod可以被复制成多个。没复制的一个都是副本。
【2】控制器
- 适用无状态服务:RC、RS、Deployment
- 适用有状态服务:StatefuiSet
- 守护进程:DaeminSet 保证在每个node上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用
- 任务/定时任务:Job(一次性任务,做完不再重启容器)、CroJob(周期性执行的任务,在job的基础上加了定时功能)
- 服务发现
- Service:实现k8s集群内部的网络调用,负载均衡(四层负载),横向流量
- ingress:将k8s集群内部服务暴露给外网访问的服务(ingress-nginx 反向代理,七层负载),纵向流量
- 存储
- volume: 存储卷,共享Pod中容器使用的数据,用来放持久化的诗句,比如数据库数据
- CSI
- 特殊类型配置
- configmap:集群的配置文件,数据说明,数据卷,可以挂载不同的pod上,不加密,也可以做环境变量
- secret:加密的,sha256加密。用于保存证书,拉取镜像凭证密码
- DownwardAPI:
- 其他
- Role:定义一组命名空间的权限
- RoleBinding
3. 资源清单
4. 对象规约和状态
【1】规约Spec
Spec为必须的,描述了对象的期望状态(Desired Status),以及关于对象的一些基本信息。
【2】状态Status
对象的实际状态,该属性有K8S自己维护,k8s会通过一些列的控制器对对象进行管理,让对象的实际状态尽可能的与期望状态符合。