Kubernetes
目录
一,发展经历
二,知识图谱
三,组件说明
=====================================================-==========================================
一,发展经历
(0.0)首先要说u一下:k8s一定是以后技术平台的标准!!!
对于云计算来说,会有多种交互标准,目前市场上牛逼的,或者说具有代表性的
IAAS(基础设施服务)阿里云
PAAS(平台及服务) 新浪云
SAAS(软件及服务) office 365
DAAS(数据及服务) 大数据(目前不是很火)
为了能够解决容器集群化问题,衍生出现在这些平台服务,这里有一个名称:资源管理器
资源管理器历史:
1,最早是Apache MESOS 分布式资源管理器框架,但是好景不长,2019-5 Twitter公司 把Apache MESOS换成了Kubernetes (一代巨头没落.......)
2,docker swarm 是docker容器衍生出,特点的很轻量,但是,对于实际企业来用的化,是不使用的,比如要做一个回滚,是很难很难做到的,简单来说,它使用很好,但是功能不多,逐渐慢慢退出历史舞台
3,Kubernetes 的出现,完全碾压前两种,它的历史也很有意思:它是Google 推出的,google在10年前,就开始通过容器化来进行资源管理,叫“Borg”资源管理器。当时好多公司都想要它的资源管理器,但是,google公司财大气粗,不缺钱,不卖!google还限制从技术核心组织离职员工不允许外传资源管理器架构技术,随着docker容器流行,慢慢的,大家都开始研究容器集群化的方案,这个时候,google想让自己10来稳定的资源管理器成为主流,于是找了一批工程师,用GO 语言对Borg系统的翻译,从而产生了kubernetes,成为了当前的标准!!!
kubernetes 特点
轻量级:消耗资源小
开源
弹性伸缩
负载均衡:采用了IPVS框架(传输层负载均衡)
==================================================================================================================
知识图谱()
k8s框架
pod 知识图谱
平滑更新
上图解释(从里向外解释):每一个容器都是由一个镜像(Container login-image:v1)起来的,容器外面一层是POD(k8s里的概念),pod里面可以有一个或者多个容器,pod的特点:pod里面的容器都是运行在一台机器上,pod里面的互相网络有一个唯一的IP,每一个pod里面都会有一个Pause容器,会有一个固定的镜像,作用是把其他容器融合在一起,负责整个pod的健康检查。pod的上一层是RS(副本集)管理pod,在RS上一层是deployment(部署)
k8s集群图谱
k8s认证和授权
客户端证书认证
BearerToken认证方式
ServiceAccount认证(pod > APIserver)
主要包三个内容:namespace , token , ca 目录挂载的方式,挂载到pod的文件系统里
授权
ABAC
WebHook
RBAC
RBAC是最好的选择,是基于角色(Role)的访问控制
=================================================================================================================
组件说明(对应上图)
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 集群日志统一分析介入平台
==============================================================================
POD概念
自主式Pod
控制器管理的Pod
statefuleert:稳定的持久化存储
:稳定的网络标识
有序部署3
有序时所说和20 hnm
daemonset:确保全部node上运行一个pod副本。当有node加入集群时,会为他们新增加一个pod。
运行集群存储daemon,例如在每个node上运行
在每个node上运行日志收集daemon,例如fluentd node exporter
在每个node上运行监控daemon,例如prometheus node exporter
Job : 负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个pod成功结束
cron job :在给定时间点只运行一次
周期性的在给定时间点运行
k8s网络的通讯方式
网络模型假定了所有POD都可以直接通过的扁平的网络空间中
不同节点的docker容器之间相互打通,是比较难实现的
同一个pod内的多个容器之间:lo
各pod之间的通讯:overlay network
pod与service 之间的通讯:各节点的iptables规则
Flannel:是一个网络规划服务,让集群中不同节点主机创建的容器都具有全集群唯一的虚拟ip地址。
所以它能在这些ip地址之间建立一个覆盖网络(overlay network),现在基本用此方法
ETCD与Flannel关系
存储管理Flannel可分配的IP地址资源
监控ETCD中每个pod的实际地址,并在内存中建立维护pod节点路由表