K8s是一个编排容器的工具,管理应用全生命周期的工具,从创建应用、应用部署、应用提供服务、扩缩容应用、应用更新都非常方便,而且可以做到故障自愈。
1.1 发展经历
基础设施级服务 iaas:阿里云
平台设施级服务 paas:新浪云
软件设施级服务 saas:Office365
资源管理器:
前生:
Apache:MESOS - 分布式系统内核、分布式资源管理框架 2019-05 Twitter>k8s
docker:SWARM集群,轻量级框架,2019-07阿里云宣布Docker Swarm集群框架从阿里云选择框架剔除
今世:
Google:kuberbets,10年google容器基础框架borg,容器火了之后,Google使用Go语言参考borg设计思路开发出了k8s。
特点:轻量级,基于go语言,消耗资源少,弹性伸缩,负载均衡
1.2 知识图谱
k8s框架
k8s关键字含义
基础概念:什么是pod、控制器类型。。。
Pod概念:最小的封装集合,一个pod辉封装多个容器,打到一个字阶段的运行环境,K8s管理的最小单位
网络通讯模式
K8s安装:构建k8s集群
资源清单:资源是什么?掌握资源清单的语法,编写Pod,掌握Pod的生命周期。。。
Pod控制器:掌握各种控制器的特点以及使用定义方式
服务发现:SVC远离及其构建方式
存储:掌握多种存储类型的特点,并且能够在不同环境中选择合适的存储方案
服务分类:有状态服务(DBMS)、无状态服务(LVS、APACHE)
调度器:掌握调度器原理,能够根据要求将Pod定义到想要的节点运行
安全:集群的认证和鉴权,访问控制原理及其流程,集群的安全机制
KELM:类似linux中的yum工具,掌握HELM原理,自定义HEML模版,HELM部署常用的一些插件
运维:CICD构建,Pod特殊的创建管理方式,修改Kubeadm达到证书可用期限10年,构建高可用K8S集群。
1.3 组件说明
Borg架构:
K8S架构:
APISERVER:所有服务的统一入口
CrontrollerManager:维持副本期望数量
Scheduler:负责介绍任务,选择合适的节点进行分配任务
ETCD:键值对数据库,存储K8S集群所有的重要信息(持久化),协助分布式集群的征程运转。
Kubelet:在每个节点上直接跟容器引擎交互,实现对容易生命周期进行管理
Kube-proxy:负责写入规则至IPTABLES、IPVS,实现服务映射访问
COREDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
DASHBOARD:给K8S集群提供一个B/S结构的访问体系
INGRESS CONTROLLER:官方只能实现四层代理
INGRESS:可以实现七层代理
FEDERATION:提供一个可以跨集群中心多K8S统一管理功能
PROMETHEUS:提供K8S集群的监控能力
ELK:提供K8S集群日志统一分析介入平台
推荐在K8S集群中使用Etcd v3,v2版本在K8S v1.11版本中已经弃用。
Etcd在官方文档中将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。