容器编排工具:最开始我们使用物理机部署项目,但物理机成本较高。为了节约成本,且能实现应用之间的资源隔离,我们可以使用虚拟机在操作系统中模拟出多台子电脑,每台虚拟机运行单个应用。但是虚拟机启动慢,占用空间大,必须安装完整的操作系统,非常浪费资源。
于是,容器化技术应运而生,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境即可。容器的启动速度很快,基本不消耗额外的系统资源。Docker 是应用最为广泛的容器技术。但是随着微服务技术的广泛应用,部署项目容器的数量越来越多,由此衍生了管理容器的重大问题。Google 在 2014 年开源了容器编排引擎 Kubernetes,用于管理容器化应用程序的部署、规划、和扩展,使我们应用的部署和运维更加方便。
Kubernetes 简介
Kubernetes 来自于希腊语,含义是舵手 或 领航员,简称 k8s。k8s 是采用 Go 语言开发的,Go 语言是谷歌 2009 发布的一款开源编程语言。k8s 的前身是 Google 的 Borg 系统,2014 年 6 月由 Google 公司正式公布开源该系统,并命名为 Kubernetes,后来 Google 将 k8s 捐给了 CNCF(云原生计算基金会)。其他容器编排管理工具:Docker swarm、Apache Mesos等。
Kubernetes 的架构
k8s 集群由 Master 节点和 Node 节点组成。
Master 节点
Master 节点是集群控制节点,管理和控制整个集群。基本上 k8s 的所有控制命令都发给它,它负责具体的执行过程。在 Master 上主要运行着:
API" target="_blank">apiserver:提供了集群管理的接口及模块之间的数据交互和通信的枢纽。
etcd:保存整个集群的状态。
controllers:自动化控制中心,负责维护管理集群状态,如:故障检测,自动扩展,滚动更新等。
scheduler: 负责资源调度,按照预定的调度策略将 Pod 调度到相应的机器上。
Node 节点
除了 master 以外的节点被称为 Node 节点,每个 Node 都会被 Master 分配一些工作负载(Docker 容器),当某个 Node 宕机时,该节点上的工作负载就会被 Master 自动转
移到其它节点上。在 Node 上主要运行着:
kube-proxy:实现 service 的通信与负载均衡。
kubelet:用来处理 Master 节点下发到本节点的任务,管理 Pod 和其中的容器。
container runtime:运行容器所需要的一系列程序。