一、什么是Kubernetes
Kubernetes是一个工业级的自动化容器编排平台,它负责应用的部署、应用的弹性以及应用的管理,这些都是基于容器的。
二、Kubernetes核心功能
1.服务的发现与负载的均衡;
2.容器的自动装箱,也叫做scheduling(调度)。也就是把一个容器放到一个集群的某一个机器上;
3.实现容器的自动化恢复。在一个集群中,经常会出现宿主机的问题或是操作系统的问题,导致容器不可用。kubernetes会自动对这些容器进行修复。
4.做应用的自动发布与应用的回滚。
5.对于job类型任务,kubernetes可以去做批量执行。
6.支持水平拉伸,让应用更加富有弹性。也就是当一个业务本身的cpu利用率过高,或者响应时间过长,可以对这个业务扩容。
2,3,6为kubernetes的核心能力。
三、Kubernetes的架构
kubernetes架构是一个二层架构和server-client架构。
Kubernetes的架构:Node
kubernetes的Node是真正运行业务负载的,每个业务负载会议Pod的形势运行。
一个Pod中运行的一个或者多个容器,真正运行这些Pod的组件叫做kubelet。通过Master中的API Server接受到所需要Pod运行的状态,然后提交到Container Runtime组件中。
核心概念:Pod
Pod是Kubernetes的最小调度以及资源单元。
一个Pod就是一组容器的抽象,它里面会包含一个或多个容器。
Pod给容器提供了一个共享的运行环境和网络环境。这些容器可以用localhost来进行直接的连接。而Pod之间相互隔离。
核心概念:Volume
Volume就是卷的概念,用来管理kubernetes存储,是用来声明在Pod中的容器可以访问文件目录的,一个卷可以被挂载在Pod中一个或者多个容器的指定路径下面。
Volume支持多种后端的存储,可以支持本地的、分布式的、云存储等等。
核心概念:Deplotment
Deployment 是在 Pod 这个抽象上更为上层的一个抽象,它可以定义一组 Pod 的副本数目、以及这个 Pod 的版本。一般大家用 Deployment 这个抽象来做应用的真正的管理,而 Pod 是组成 Deployment 最小的单元。
核心概念:Service
Service 提供了一个或者多个 Pod 实例的稳定访问地址。
核心概念:Namespace
Namespace 是用来做一个集群内部的逻辑隔离的,它包括鉴权、资源管理等。Kubernetes 的每个资源,比如刚才讲的 Pod、Deployment、Service 都属于一个 Namespace,同一个 Namespace 中的资源需要命名的唯一性,不同的 Namespace 中的资源可以重名。