提示:以下内容均为学习过程中的个人笔记,有用自取,无用勿喷,如有错误欢迎指正

1. k8s前身

Borg 是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理。Borg 的目的是让用户能够不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化

  • Borgmaster:是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到Paxos存储中;由于共识算法主节点数为大于1的奇数个,若是3个则只能坏一个,5个只能坏2个
    • #Paxos为 键值对数据库,保存了整个集群的配置
  • Scheduer负责任务的调度,根据应用的特点将其调度到具体的机器上去
  • Borglet负责真正运行任务(在容器中)
  • borgcfg是Borg的命令行工具,用于跟Borg系统交互,一般通过一个配置文件来提交任务

2. kubernetes组件

  • Etcd高可行强一致性的可信赖的分布式键值存储服务,存储集群中所有数据,V2版接口存储在内存中,目前使用V3接口,将数据存储在硬盘中
    • 扩展:Raft 共识算法,每一个 Raft 集群中都包含多个服务器,在任意时刻,每一台服务器只可能处于 Leader、Follower 以及 Candidate 三种状态;在处于正常的状态时,集群中只会存在一个 Leader,其余的服务器都是 Follower;leader 和 follower 之间保持心跳。如果follower在一段时间内没有收到来自leader的心跳,就会转为candidate,发出新的选主请求
      • Leader:负责接收客户端的请求,将日志复制到其他节点并告知其他节点何时应用这些日志是安全的
      • Candidate:候选人,用于选举Leader的一种角色
      • Follower:跟随者,类似于人民群众,负责响应来自Leader或者Candidate的请求
  • apiserverweb服务器,提供集群的访问入口,封装了核心对象的增删改查,以RESTful API接口方式提供给外部客户和内部组件调用
  • scheduler负责集群的资源调度,将任务公平迅捷的分配至各node节点
  • ControllerManagepod副本控制器,维护集群稳定运行;如果太多了,Replication Controller就杀死几个,如果太少了,Replication Controller会新建几个,和直接创建的pod不同的是,Replication Controller会替换掉那些删除的或者被终止的pod
  • kubelet:处理Master下发到本节点的任务,管理Pod及Pod中的容器,并定期向上层apiserver汇报节点资源的使用情况,同时也负责 Volume(CSI)和网络(CNI)的管理
  • kube proxy:对上对接apiserver,对下调用netlink接口创建防火墙规则以及IPVS规则
  • kubectl:用户端管理工具

扩展:Container runtime,简称CRI容器管理工具,例如podman/container/docker

3. kubernetes插件

  • CoreDNS:负责为整个内部集群提供 DNS 服务
  • Ingress Controller:为 K8S 中的服务提供外网入口(七层代理)
  • Prometheus:为整个集群提供资源监控能力(以web接口的形式收集接口)
  • Dashboard:提供 B/S 的访问体系,允许用户通过 web 进行集群管理及设置
  • Federation:提供跨可用区的集群,提供不同数据中心的 K8S 集群的管理能力
  • EFK:Elasticsearch,Fluentd,Kibana。其中 ELasticsearch 负责日志分析和存储,Fluentd 负责日志收集,Kibana 负责界面展示
  • flannel:网络插件,让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟IP地址

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐