官方介绍:
Kubernetes 也称为 K8s(中间8个字母,省略好记),是用于自动部署、扩缩和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。
使用 Kubernetes部署任何应用都是小菜一碟。只要应用可以打包成镜像,能够容器部署,Kubernetes就一定能启动它。
不管什么语言、什么框架写的应用(如:Java, Python, Node.js),Kubernetes都可以在任何环境中安全的启动它,如:物理服务器、虚拟机、云环境。
kubernetes架构中主要分为两个角色:Master和Worker Node。在这两个角色中,都分别存在多个组件来支持Kubernetes的内部逻辑。
Pod是kubernetes中最小的调度单位,可以把他理解成在集群上运行的进程。
pod在英文中是豆荚的意思,也就是说k8s的管理调度最小单位是以“豆荚”来进行的,豆荚里面的一个一个豆子就是一个个的容器。
Pod里面可以运行单个容器或者运行多个需要协同工作的容器。
Pod运行在一个Worker Node中,这个Worker Node可以是物理机,也可以是虚拟机。
一个Worker Node中可能会有很多个Pod同时运行。
多个Pod可以协同工作。
在Pod中,有一个容器叫pause,这个是当前pod中所有容器的父容器,也叫基础容器。
pause启用PID的命名空间,pause的PID为1。
pause负责Pod中的容器的健康检查。
如果我们在Pod中部署两个容器,分别叫Container1和Container2。那么Container1和Container2就会共享pause容器的网络栈,他们之间的通讯就会更快。他们之间的关系是这样的:
ReplicaSet是一个副本集,简称RS。
它的作用就类似于Pod的负载均衡器。
通常情况下,ReplicaSet用于实现Pod的高可用性。
就是说呢,如果有Pod异常退出,会自动创建新的 Pod 来代替;并且自动回收异常退出的Pod。
Deployment一般是用于滚动部署更新的组件。
更新Deployment的时候,会自动创建ReplicaSet,并自动启动新的pod
Deployment会自动实现ReplicaSet的创建和销毁的过程,并自动对新老Pod进行替换。
Label是以key/value键值对的方式存在,比如app:nginx。
Label就像一个标签,可以贴到很多对象上。比如Pod,Service,Node,ReplicaSet等等。Label可以在创建对象的时候贴上去;也可以在对象创建以后再添加或者修改。
贴上Label以后,我们就可以通过调用Label,来调用对象。
每个Label必须是唯一的。
Service是一个抽象的api对象。
Service可以成为多个后端Pod代理。
Service可以通过Selector指定Label名称,通过Label Selector来调用对象,比如调用Pod。Service可以通过ClusterIP,让外部的客户端client可以直接访问到内部的Pod。
我们可以把Service理解成一个桥梁,对内串联Pod或Pod组,对外串联客户端。
Service的本质是一个四层代理服务。
Kubernetes借鉴了Borg的设计理念,比如Pod、Service、Labels和单Pod单IP等。
Kubernetes的整体架构跟Borg非常像,如下图所示
一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。
Master Node是主节点,也叫控制节点。Worker Node是工作节点。有时候,也会直接把主节点叫做Master,工作节点叫做Node。
组件名称 | 组件作用 |
---|---|
master | 集群的控制平面,负责集群的决策 ( 管理 ),是整个Kubernetes的控制中心 |
ApiServer | 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制 |
Scheduler | 负责集群资源调度,按照预定策略将pod调度到相应节点上 |
ControllerManager | 负责维护集群状态,比如程序部署安排、故障检测、自动扩展、滚动更新等 |
Etcd | 键值对数据库,保存整个集群的状态,储存K8S集群所有重要信息(持久化) |
node | 集群的数据平面,负责为容器提供运行环境 ( 干活 ) |
Kubelet | 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器,同时也负责Volume(CVI)和网络(CNI)的管理 |
KubeProxy | 负责提供集群内部的服务发现和负载均衡 |
Docker | 负责节点上容器的各种操作 |