一、k8s基础概念
一、k8s整体架构
图中上面蓝色框表示master服务器,负责下面蓝色框节点的管理
master节点
- scheduler 负责接收任务,选择合适的节点分配任务(根据资源进行选择)
- replication controller(rc) 负责副本数目,期望值
- api server 所有服务访问统一入口,上面组件都需要与其交互,访问频繁,需要解压
- kubectl 命令行交互工具
- web UI 浏览器交互方式
- etcd 采用Go语言编写的分布式键值对存储服务,用于整个k8s的持久化,数据恢复。 etcd有v2和v3两个版本,v3支持了磁盘持久化特性,k8s在1.11版本中已经弃用v2版本
node节点
- kubelet 与容器交换,创建对应的容器,维持Pod的生命周期,把k8s命令转换为容器命令
- kub proxy 负责写入规则到IPTABES、IPVS实现服务映射访问
二、etcd架构
- k8s和etcd都采用了HTTP协议的C/S结构
- Raft用于数据存储
- WAL预写日志,会有实时的临时备份和一定时间后的整体备份
- Store持久化到磁盘
三、Pod
- Pod与普通容器的区别,两个隔离的容器之间想要共享组件、网络,是不可以实现的。一个Pod中可以存在多个容器,在一个Pod中,其中的容器共用网络、存储卷,同一个Pod容器端口不能相同
- Pod的类型
自主式Pod:未被控制器管理,一旦死亡不会被管理,也不会自动创建Pod满足期望值
控制器管理的Pod:被控制器管理- Pod控制器类型
- 滚动发布
此时服务器上运行状态,v1代表容器,当上线发布时deployment会创建一个的RS1,创建Pod,然后在RS1下创建一个v2版本的容器,将一个v1删除,然后三个容器都替换为v2。如果有bug直接可以回滚到v1,因为RS只是被停用了
- HPA水平自动扩展
- StatefullSet
- DaemonSet
四、其他组件
- CoreDNS : 可以为集群中的SVC创建一个域名IP的对应关系解析
- Dashboard : 给k8s提供B/S结构访问方式
- INGRESS CONTROLLER : 官方提供了第四层的网络代理,它可以提供第七层网络代理
- FEDETATION :提供一个可以跨集群中心多k8s统一管理功能
- PROMETHEUS : 提供一个k8s集群的监控
- ELK : 提供k8s统一日志分析接入平台