CSDN话题挑战赛第2期
参赛话题:万家争鸣的云计算修罗场
我想分享的云计算技能/知识点
Kubernetes组件介绍
该技能/知识点的背景介绍
- PAAS服务的发展
1、三大服务
1)Docker Swarm 是docker公司专门推出的容器级别的集群化管理工具,集成在docker软件内部,优点:使用方便,比kubernetes简单,学习docker swam子命令即可。缺点:部分常用功能缺失
2)Apache Mesos:诞生时间较早
3)Kurbernetes:在谷歌的borg系统上开发,服务系统比较成熟,通过在borg系统的架构上使用go语言进行开发
2、borg系统
Borg 是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理。Borg 的目的是让用户能够不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化。
Paxos:谷歌开发的键值对数据库,存储集群信息
该技能/知识点实际运用
- Kubernetes组件
master节点组成高可用集群,必须是3、5、7、9……个,node节点越多,负载能力越强
1、kubernetes架构
api server:作为 Kubernetes 系统的入口,其封装了核心对象的增删改查操作,以 RESTful API 接口方式提供给外部客户和内部组件调用。维护的 REST 对象持久化到 Etcd 中存储。 备拷存储,提供查询接口
etcd:etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。etcd的存储版本:v2(数据存在内存)、v3(数据存在磁盘),在kubernetes 1.11版本以后都使用的V3版本。
Raft是一个共识算法,每一个 Raft 集群中都包含多个服务器,在任意时刻,每一台服务器只可能处于 Leader(管理者)、Follower(跟随者) 以及 Candidate(竞选者) 三种状态;在处于正常的状态时,集群中只会存在一个 Leader,其余的服务器都是 Follower。Leader负责对外处理数据,Follower只负责与Leader同步数据。
etcd的架构:通过http协议实现数据的上传和下载。WAL:预写入日志,在数据存储之前先将日志写入,打快照等操作,然后操作数据。
Scheduler:新建立的 Pod 进行节点 (node) 选择(即分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器
Controller Manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
replication controller:维护当前集群的可用性,收集集群当前所有组件的状态
kubectl:命令行管理工具,连接api server下发管理员的操作指令
web UI:图形化用户接口,通过浏览器可以更好的管理集群
Container runtime:负责镜像管理以及 Pod 和容器的真正运行(CRI)
kubelet:负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理
CRI:容器的运行时,容器运行的框架。
kube proxy:通过netlink接口管理防火墙、selinux,负责为 Service 提供 cluster 内部的服务发现和负载均衡
总结
2、其他插件功能
CoreDNS:负责为整个集群内部提供 DNS 服务
Ingress Controller:为 Kubernetes 中的服务提供外网入口,提供七层负载能力
Prometheus:为整个集群提供资源监控能力
Dashboard:提供 B/S 的访问体系,允许用户通过 web 进行集群管理及设置
Federation:提供跨可用区的集群,提供不同数据中心的 K8S 集群的管理能力