k8s 学习笔记一:简介和组件说明

107 阅读2分钟

k8s 学习笔记一:简介和组件说明,pod概念简介

一. k8s简介

1.paas(platform as a service)

docker出现之后,成为了paas的标准。其缺陷在于:1.容器之间通信效率较低下;2.管理起来很困难,例如各容器的端口映射关系等,极为复杂。因此,容器集群需要一个资源管理器。

1. MESOS

一个比较早的分布式资源管理框架。目前已被大部分公司放弃。

2. docker swarm

  1. docker内部自带的组件。和docker绑定。
  2. 优点:非常轻量级,而且能支撑相当大规模的节点。
  3. 缺点:其功能相比k8s,太少太少。例如滚动更新、回滚等操作,用docker swarm的实现很难。

3. k8s(kubernetes)

  1. 功能强大
  2. google开发,开发语言是Go语言,前身是borg系统
  3. 特点: (1)轻量级 (2)开源 (3)弹性伸缩:服务器资源的弹性伸缩,平滑 (4)负载均衡:框架为IPVS,负载能力强

二. 组件说明

1. borg 框架的架构

image.png

1.BorgMaster负责请求分发,BorgMaster有副本,防止故障。

2.Borglet是真正工作的节点,例如提供计算能力等。

3.Paxos是google内部的一个键值对数据库。

4.Scheduler为调度器,会向Paxos中写入数据,Borglet实时读取Paxos中的数据,以感知是否有请求分发给自己。

注:高可用集群副本数量最好是大于等于3的奇数个。

2. k8s组件

image.png

2.1. Master中包含:

(1)Scheduler:调度器。负责接收任务,选择合适的节点分配任务。通过api server,将数据写入etcd。

(2)replication controller:副本控制器。用于维护副本数量,根据副本期望值,来做pod的增加、删除。

(3)api server:一切服务的入口。Scheduler、replication controller、kubectl、web ui、etcd、kubelet、kube proxy都与其交互。工作繁忙。为了减轻其负担,其他组件可以在内部实现一定的缓存,减少交互次数。

2.2. etcd

一个Go语言开发的分布式键值对存储服务,天生支持集群化,能够为整个分布式集群存储一个关键数据,协助分布式集群的正常运转。推荐在k8s集群中使用ETCD v3,v2版本已在k8s v1.11中弃用。

image.png

2.3. node 节点

(1)kubelet:和容器引擎进行交互,进行创建容器等操作。管理着pod的生命周期。

(2)kube proxy:负载是通过kube proxy实现的,。默认是通过操作防火墙firewall(写入规则至iptables)来实现pod映射。当然现在的k8s还支持使用ipvs实现映射。

(3)pod:pod中有container,注意这里不一定是docker。docker只是容器引擎的一种。