当前位置: 首页>前端>正文

容器平台是否提供数据库 容器平台和paas平台


文章目录

  • 1. 发展史
  • 2. 架构图对比
  • 2.1 Borg的架构图
  • 2.2 Kubernetes的架构图
  • 3. 总结


1. 发展史

在云计算领域有几个很常见的词汇:IaaS、PaaS、SaaS。

  • IaaS就是基础平台即服务,国内有阿里云等;
  • PaaS是平台即服务,在早些时候新浪云SAE较为有名;
  • SaaS就是软件即服务,最大的Office厂商MS的Office365就是一个很好的代表。

在最开始的时候PaaS基本就是人肉运维,慢慢的又出现了一系列的自动化工具,再后来专门做PaaS的一家公司创造了Docker

Docker变成了PaaS的一个标准,但是随着容器化的发展也出现了一系列的问题。容器化后容器的映射关系变得异常艰难,而且这仅仅是容器化发展的一个小小的问题。

那么随着容器化的步伐,衍生出了一些列的资源管理器,最开始是Apache Mesos,Mesos由加州的伯克利大学研发出来,随后被推特选中,大规模的在推特盛行。
在2019年5月,特推在旧金山开展了技术发布会,在该会上产品负责人宣布推特以后全部使用Kubernetes。
第二款资源管理软件是Docker自家推出的Docker Swarm平台。

Docker Swarm是一个非常轻量的资源管理平台。但是Swarm功能较为简单,而且国内云厂商阿里云在2019年7月宣布在选择资源管理框架的时候不支持Swarm,默认Kubernetes。Google其实在Kubernetes诞生10年前就使用了容器化基础架构Borg

Google为了在资源管理器上占有优势,就使用Golang开发了Kubernetes

2. 架构图对比

2.1 Borg的架构图

容器平台是否提供数据库 容器平台和paas平台,容器平台是否提供数据库 容器平台和paas平台_容器平台是否提供数据库,第1张

2.2 Kubernetes的架构图

容器平台是否提供数据库 容器平台和paas平台,容器平台是否提供数据库 容器平台和paas平台_容器平台是否提供数据库_02,第2张

  • etcd:提供分布式数据存储的数据库吧,用于持久化存储k8s集群的配置和状态
  • kube-apiserver:api service提供了http rest接口,是整个集群的入口,K8s其它组件之间不直接通信,而是通过API server通信的。(只有API server连接了etcd,即其它组件更新K8s集群的状态时,只能通过API server读写etcd中的数据)
  • kube-scheduler:scheduler负责资源的调度
  • kube-controller-manager:整个集群的管理控制中心,此组件里面是由多个控制器组成的
  • node机器组件:
  • kube-proxy:用来负载均衡网络流量
  • kubelet:用来管理node节点机上的容器
  • docker:运行项目镜像容器的组件
  1. etcd是一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转;同时,etcd是采用go语言编写的kv键值对数据库,它分为两个版本,V3版本和V2版本,在KubernetesV1.11版本以及之前采用的是V2版本,之后采用的是V3版本,V2版本会将所有数据写入内存,而V3版本会引入一个本地数据卷存储,也就意味着关机不会丢失数据,可以从本地磁盘恢复;
  2. APIServer 所有服务访问的统一入口。
  3. Replication Controller 负责维持期望的副本数目。
  4. Scheduler 负责接收任务,选择合适的节点进行任务的分配。
  5. Kubelet 负责与Docker的容器引擎交互,实现容器的生命周期管理。
  6. Kube Proxy 负责写入规则到 iptables 或者 ipvs 实现服务映射访问。
  7. 其他插件:
    7.1 . CoreDNS 可以为集群中的SVC创建一个域名为IP的对应关系解析;
    7.2 Dashborad 给K8S集群提供一个B/S访问体系。
    7.3 Ingress Controller 实现七层代理,Kubernetes官方只能实现四层代理。
    7.4 Fedetation提供一个可以跨集群中心的多Kubernetes统一管理功能。
    7.5 PrometheusELK提供Kubernetes集群监控和日志统一分析接入平台。

容器平台是否提供数据库 容器平台和paas平台,容器平台是否提供数据库 容器平台和paas平台_数据_03,第3张

etcd内部结构是采用Http协议构建的服务,其实K8s也是采用Http协议进行的cs结构开发;
为什么这样做呢?
是因为Http协议天生支持get,put等操作方式,包括授权认证,所以没必须去采用标准的tcp协议;
raft是一些读写信息,为了防止这些信息被损坏,于是有了WAL,这是入写日志,也就是如果你想对里面的数据进行更改的话,你先生成一个日志,我先存一下,并且会定时的对这些日志进行完整备份,也就完整加临时,备份完之后会出现一个两个等子版本,到达一定量再转换成大版本,然后再子子子,这样的好处是防止增量备份太多,太费事费时,并且还会实时的将这些日志和数据写入磁盘持久化

3. 总结

  1. MESOS Apache旗下的分布式资源管理框架,在2019年5月,由它的最大使用者Twitter在旧金山技术发布会上宣布不再使用,改使用Kubernetes;
  2. Docker Swarmdocker而生的资源管理器,但是在2019年7月阿里云宣布,Docker Swarm的集群框架从阿里云选项剔除,默认Kubernetes;
  3. Borg为谷歌内部使用十多年,但是不开源,于是让公司几名工程师,使用go语言,将Borg翻写出了Kubernetes,为外界使用;
  4. 选择使用Kubernetes的理由
  • 轻量级 ;
    像java等,是解释型语言,运行的时候占用内存大,占用资源大,而go语言被誉为现代的C语言,占用资源小,可以操作进程管理
  • 开源;
  • 弹性伸缩;
  • 负载均衡 : IPVS
  1. 高可用集群副本数据最好是 大于等于3的奇数个



https://www.xamrdz.com/web/2aq1935887.html

相关文章: