K8s-基础介绍
基础介绍
Kubernetes:下一代操作系统
CoreOS: CoreOS是一种操作系统,于2013年十二月发布,它 的设计旨在关注开源操作系统内核的新兴使用——用于大量基于云 计算的虚拟服务器
Rancher: Rancher是一个容器管理平台,通过Rancher可以实 现Docker和Kubernetes的轻松部署
k8s发展经历
Infrastructure as a Service ----IAAS--基础设施即服务
platform as a service -------PAAS--平台即服务--容器化方案 为底层调用
Software as a Service ------SAAS--软件即服务--QQ,微信 等
- 项目部署管理
非云:以传统物理化的方案进行集群构建
以云计算的方案
公有云:一定要做到租户(用户)隔离 资源使用量的记录
IAAS:openstack(阿里云,华为云,百度云)
PAAS:Kubernetes
私有云:实现资源分割(公司内部,机房内部)
IAAS:openstack(小米)
PAAS:Kubernete
- 以前与kubernetes竞争的公司
Docker Swarm:中小型企业(2018年末期结束)
优点:轻量级,消耗少,保证了集群的可扩展性,简单(只需学 习较简单的命令)
缺点:很多功能没有内置,比如:集群时必须自己构建调度 器,存储只能用最低级的volume,调度的干预也做不到
Apache Mesos:Twitter公司 Marathon公司(2019年结束)
优点:资源管理策略,轻量级,提高分布式集群的利用率
缺点:门槛太高, Mesos集群目前无法进行数据持久化, 很 多功能还不完 善。譬如,集群资源抢占还不支持。
Kubernetes:CNCF(云计算基金会) Borg(go重写后转变为 K8s)
优点:轻量级,开源,弹性伸缩,负载均衡,经验老套
CNCF:云原生容器基金会 containerd docker 公司开发的开源容器解决方案 loghron etcd Kubernetes promethues
-
拓展:
2019 年 美国西部时间 5 月 2 日下午 7 点,Twitter 公司在旧金 山总部举行了一次技术发布会兼 Meetup。会上,Twitter 计算平台 (Twitter Computing Platform)产品与技术负责人 David McLaughlin 正式宣布,Twitter 的基础设施将从 Mesos 全面转向 Kubernetes
Borg 是谷歌内部的大规模集群管理系统,负责对谷歌内部很 多核心服务的调度和管理。Borg 的目的是让用户能够不必操心资源 管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据 中心的资源利用率最大化
Borg系统的重要展示
K8s组件说明--宏观角度
K8s结构图
# 上图中有两套C/S结构
# 第一套C/S结构:
C:web UI、kubectl、scheduler、控制器、kubelet、kube-proxy
S:api server
# 第二套C/S结构:
C:api Server
S:etcd
组件说明:
- api server:对接上下层的接口
- Scheduer:调度器,负责任务的调度,根据应用的特点将其调度 到具体的机器上去
- ETCD:分布式键值存储服务,它能够为整个分布式集群存储一些 关键数据,协助分布式集群的正常运转
- kubelet:负责维护容器的生命周期,同时也负责Volume(CRI)和 网络(CMI--veth)的管理
- kube proxy: 负责Server提供cluster内部的服务发现和负载均衡
- replication controlter:副本控制器,管控当前服务器状态
- Container runtime:负责镜像管理以及Pod和容器的真正运行 (CRI--容器运行时)
Raft
- 从一开始就被设计成一个易于理解和实现的共识算法(村口情 报部门)。每一个 Raft 集群中都包含多个服务器,在任意时刻,每一 台服务器只可能处于 Leader、Follower 以及 Candidate 三种状 态;在处于正常的状态时,集群中只会存在一个 Leader,其余的服 务器都是 Follower
- Follower:群众,被动接收Leader发送的请求,所有的节点刚开始 的时候是处于 Follower状态
- Candidate:候选人,由Follower向Leader转换的中间状态 Leader:领导,负责和客户端交互以及日志复制(日志复制是单向 的,即Leader 发送给Follower),同一时刻最多只有一个 Leder存在
- 三种状态的转换关系:
ETCD:CoreOS公司开发的,已捐赠给CNCF,基于http协议--C/S 结构
推荐在 Kubernetes 集群中使用 Etcd v3,v2 版本已在 Kubernetes v1.11 中弃用
ETCD框架
- 实现过程
- 基于http协议的数据传输, 信息先传到Raft(共识算法的实现) ,Raft写入WAL(预写入日志)中,再去修改后端数据
现在对不可或缺的组件进行详细的说明
- Kubernetes API Server:作为 Kubernetes 系统的入口,其封装了核心对象的增删改查操 作,以 RESTful API 接口方式提供给外部客户和内部组件调用。维 护的 REST 对象持久化到 Etcd 中存储
- Kubernetes Scheduler:新建立的 Pod 进行节点 (node) 选择(即分配机器),负责集群的资 源调度。组件抽离,可以方便替换成其他调度器
- Controller Manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- Kubelet:承上启下的左右,负责维护容器的生命周期,同时也负责Volume(CRI)和网络 (CMI--veth)的管理
- Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI--容器运行时)
- Kube-proxy:负责Server提供cluster内部的服务发现和负载均衡
kubernetes插件说明
- CoreDNS:负责为整个集群提供DNS服
- Ingress Controller:为k8s中的服务提供外网入口--实现七层负载
- Prometheus:为整个集群提供资源监控能力
- Dashboard:提供B/S的访问体系,允许用户通过web进行集群管理及设置
- Federation:提供可用区的集群,提供不同的数据中心的K8S集群管理能力, 及不同地区集群服务