k8s是什么

官方介绍:
Kubernetes 也称为 K8s(中间8个字母,省略好记),是用于自动部署、扩缩和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。

使用 Kubernetes部署任何应用都是小菜一碟。只要应用可以打包成镜像,能够容器部署,Kubernetes就一定能启动它。
不管什么语言、什么框架写的应用(如:Java, Python, Node.js),Kubernetes都可以在任何环境中安全的启动它,如:物理服务器、虚拟机、云环境。

kubernetes的主要概念

kubernetes架构中主要分为两个角色:Master和Worker Node。在这两个角色中,都分别存在多个组件来支持Kubernetes的内部逻辑。

Pod

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

ReplicaSet是一个副本集,简称RS。
它的作用就类似于Pod的负载均衡器。
通常情况下,ReplicaSet用于实现Pod的高可用性。
就是说呢,如果有Pod异常退出,会自动创建新的 Pod 来代替;并且自动回收异常退出的Pod。
在这里插入图片描述

Deployment

Deployment一般是用于滚动部署更新的组件。
更新Deployment的时候,会自动创建ReplicaSet,并自动启动新的pod
Deployment会自动实现ReplicaSet的创建和销毁的过程,并自动对新老Pod进行替换。
在这里插入图片描述

Label

Label是以key/value键值对的方式存在,比如app:nginx。
Label就像一个标签,可以贴到很多对象上。比如Pod,Service,Node,ReplicaSet等等。Label可以在创建对象的时候贴上去;也可以在对象创建以后再添加或者修改。
贴上Label以后,我们就可以通过调用Label,来调用对象。
每个Label必须是唯一的。
在这里插入图片描述

Service

Service是一个抽象的api对象。
Service可以成为多个后端Pod代理。
Service可以通过Selector指定Label名称,通过Label Selector来调用对象,比如调用Pod。Service可以通过ClusterIP,让外部的客户端client可以直接访问到内部的Pod。
我们可以把Service理解成一个桥梁,对内串联Pod或Pod组,对外串联客户端。
Service的本质是一个四层代理服务。
在这里插入图片描述

Kubernetes 架构及组件

Kubernetes架构

Kubernetes借鉴了Borg的设计理念,比如Pod、Service、Labels和单Pod单IP等。
Kubernetes的整体架构跟Borg非常像,如下图所示
在这里插入图片描述
在这里插入图片描述

kubernetes组件

一个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负责节点上容器的各种操作
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐