k8s是google公司使用go语言开发,借鉴borg系统开发出来的。
k8s架构介绍
k8s集群服务器主要分为两类角色,分别为master和node。
master节点包含如下组件:
api server: k8s网关,所有指令请求都必须经过apiserver。
scheduler: 调度器 根据调度算法,将请求资源调度到某一个node节点。
controller: 控制器,维护k8s资源对象。
etcd: 分布式存储组件,用于存储资源对象。
node节点包含如下组件:
docker: 运行容器的基础环境,容器引擎。
kubelet: 每个node节点都存在一份,在node节点上的资源操作指令均由kubelet执行,从etcd扫描相关请求,在节点上执行请求。
调度过程:scheduler不直接对node节点进行资源操作,而是将相关操作通过apiserver将信息指令数据存储到etcd,kubelet扫描etcd,获取相关数据信息执行指令。
kube-proxy: 代理服务,负载均衡
fluentd: 日志收集服务
pod: 是k8s管理的基本单位(最小单元),pod 内部是容器
k8s核心组件原理:
k8s是用来管理容器的,但是不直接操作容器,最小操作单元为pod
特点:
- 1个master有一群node节点与之对应
- master节点不存储容器,只负责调度、网关、控制器、资源对象存储 容器是存储在node节点
- pod内部可以有一个或者多个容器
- kubelet负责本地的pod维护
- kube-proxy负责负载均衡,在多个pod之间做负载均衡
关于pod
pod是一个虚拟化的分组(有自己的ip地址、主机名),pod相当于独立主机,可以封装一个或多个容器。通常情况下,一个pod中要么部署一个服务,要么部署多个相关的服务
1、pod底层网络和数据存储:
pod底层网络和存储主要依赖pause容器,该容器作用如下:
- 共享网络
- 共享存储
2、pod内部容器使用localhost相互访问
3、pod内部容器创建之前必须先创建pause