What?
Kubernetes是一个基于容器技术的分布式架构方案,是一个集群管理系统,一个完备的分布式系统支撑平台。它具有完备的集群管理能力,包括多层次的安全防护和准入机制,多租户应用支撑能力,透明的服务注册和服务发现机制,内建智能负载均衡器,强大的故障发现和自我修复能力,服务滚动升级和在线扩容能力,可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。
WHY?
如果我们引入了kubernetes,就不用再费心负载均衡器的选型和部署实施的问题,不必考虑引入或自己开发一个复杂的服务治理框架,不必头疼于服务监控和故障处理模块的开发。可以给我们节省不少于30%的开发成本,让我们的精力更加集中于业务本身。由于Kubernetes提供了强大的自动化机制,系统后期的运维难度和运维成本大幅度降低。 目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率最大化。
一张导图
Kubernetes Cluster
①Master in graphs:
Master指的是集群控制节点,每个K8s集群都需要一个Master 节点来负责整个集群的管理和控制。
其中运行着一组关键进程:
- Kubernetes API Server: 提供了HTTP Rest接口的关键服务进程,是所有资源操作(CRUD)的唯一入口。
- Kubernetes Controller Manager:所有资源对象的自动化控制中心(大总管)
- Kubernetes Schedule:负责资源调度(Pod)的进程(调度室)
- etcd Server进程:资源对象的数据保存在这里。
②Node
除了Master的其他机器,被称为Node节点,可以是一台物理主机,也可以是虚拟机,是集群中的工作负载节点,会被Master分配一些工作负载(docker容器),当Node宕机时,其他工作负载会被转移到其他节点上。
- Kubelet:负责Pod对应的容器的创建,启停,与Master密切协作,实现集群管理的基本功能。
- kube-proxy:实现kubernetes service的通信与负载均衡。
- Docker Engine:docker引擎,负责本机的容器创建和管理。
- 一个Pod是在创建或部署kubernetes对象模型最小最简单的单元基本构建块。Pod表示集群上正在运行的进程。
- pod封装了应用程序容器(一个或多个容器),存储资源。
- Pod表示一个部署单元
- pod为其组成容器组提供两种共享资源:网络和存储。
- 默认情况下,pod里面某个容器停止,kubernetes会自动检测到这个问题并且重新启动这个pod,(重启里面所有容器),如果pod所在的node宕机,则会把这个node上的所有pod重新调度到其他节点上。
- Pod期待的副本数
- 用于筛选目标Pod的label Selector
- 当pod副本数量小于预期数量的时候,用于创建新Pod的Pod模板。