k8s基础了解
IaaS(infrastructure as aservice) 基础设施级服务 -阿里云
PaaS(platform as aservice) 平台级服务 -新浪云、docker
SaaS(software as a service) 软件设施级服务 -office365
mesos Apache的开源协议 分布式资源管理框架 2019-5 Twitter转向k8s
docker swarm 2019-7 阿里云宣布剔除
k8s Google 10年容器化基础架构 borg资源管理器 Go语言翻写
k8s特点:
- 轻量级 -消耗的资源小
- 开源
- 弹性伸缩
- 负载均衡:IPVS
相关组件:
1、master节点相关组件(主控节点)
- API SERVER :所有服务访问统一入口;以restful方式,交给ETCD存储
- Controller Manager :控制器,维护副本期望数目;处理集群中常规后台任务,一个资源对应一个控制器
- Scheduler:调度器,负责介绍任务,选择合适的节点进行分配任务;节点调度,选择node节点应用部署
- ETCD:键值对数据库,存储k8s集群的所有重要信息(持久化);存储系统
2、node节点相关组件(工作节点)
- kubelet:直接跟docker(容器引擎)交互,实现容器的生命周期管理;master节点派过来的代表,专门管理node节点
- kube-proxy:负责写入规则至 iptables、IPVS 实现服务映射访问;提供网络代理,负载均衡等操作
相关插件:
- CoreDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
- Dashboard:给k8s集群提供一个BS结构的访问体系
- Ingress Controller:官方只能实现四层代理,ingress可以实现七层
- Federation:提供一个可以跨集群中心多k8s统一管理功能
- Promethues:提供一个k8s集群的监控能力
- ELK:提供k8s集群日志统一分析介入平台
核心概念:
1、pod
- 最小部署单元
- 一组容器的集合
- 共享网络
- 生命周期是短暂的
只要有pod,容器就会被启动
应用 -> 容器 -> pod -> k8s集群
2、controller
- 确保预期的pod副本数量
- 无状态应用部署(之前没有任何约定,直接拿过来就可以用)
- 有状态应用部署(有特定条件才能用,比如:依赖存储、网络ip唯一)
- 确保所有node运行同一个pod
- 一次性任务和定时任务
3、service
- 定义一组pod访问的规则