带你快速了解Kubernetes(K8s)主要概念和组件架构

带你快速了解Kubernetes主要概念和组件架构。

Kubernetes的组件和架构比较多,功能也比较多。

如果详细探讨,每个Kubernetes组件都可以单独写篇博客详细讲解。

我们这里是快速了解,就写的相对比较简单一些。

主要是针对不熟悉Kubernetes的朋友,能够快速的了解一下Kubernetes的组件功能。对Kubernetes有一个直观的印象。

 

 

一、快速了解kubernetes的主要概念

kubernetes架构中主要分为两个角色:Master和Worker Node。

在这两个角色中,都分别存在多个组件来支持Kubernetes的内部逻辑。

要熟悉这些组件,我们先要了解Kubernetes的一些常见的抽象概念及资源类型。

 

1、Pod

Pod是kubernetes中最小的调度单位,可以把他理解成在集群上运行的进程。

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容器的网络栈,他们之间的通讯就会更快。

他们之间的关系是这样的:

 

2、ReplicaSet

ReplicaSet是一个副本集,简称RS。

它的作用就类似于Pod的负载均衡器。

通常情况下,ReplicaSet用于实现Pod的高可用性。

就是说呢,如果有Pod异常退出,会自动创建新的 Pod 来代替;并且自动回收异常退出的Pod。

 

3、Deployment

Deployment一般是用于滚动部署更新的组件。

更新Deployment的时候,会自动创建ReplicaSet,并自动启动新的pod

Deployment会自动实现ReplicaSet的创建和销毁的过程,并自动对新老Pod进行替换。

 

4、Label

Label是以key/value键值对的方式存在,比如app:nginx。

Label就像一个标签,可以贴到很多对象上。比如Pod,Service,Node,ReplicaSet等等。

Label可以在创建对象的时候贴上去;也可以在对象创建以后再添加或者修改。

贴上Label以后,我们就可以通过调用Label,来调用对象。

每个Label必须是唯一的。

 

5、Service

Service是一个抽象的api对象。

Service可以成为多个后端Pod代理。

Service可以通过Selector指定Label名称,通过Label Selector来调用对象,比如调用Pod。

Service可以通过ClusterIP,让外部的客户端client可以直接访问到内部的Pod。

我们可以把Service理解成一个桥梁,对内串联Pod或Pod组,对外串联客户端。

Service的本质是一个四层代理服务。

 

二、快速了解kubernetes的主要架构

Kubernetes是主从分布式架构。

Kubernetes主要包括两种角色:Master Node和Worker Node。

Master Node是主节点,也叫控制节点。

Worker Node是工作节点。

有时候,也会直接把主节点叫做Master,工作节点叫做Node。

我们分别说一下这两类节点:

 

1、Master

Master负责Kubernetes集群的控制和管理,是整个Kubernetes的控制中心。

Master通常至少都需要占据单独一台服务器,生产环境建议部署三台以实现高可用。

Master中包含了三种重要的服务,分别是:ApiServer、Scheduler、Controller Manager。

 

1.1、ApiServer

ApiServer提供HTTP/HTTPS RESTful API。

ApiServer是整个kubernetes集群的中枢神经,是整个集群增删改查的唯一入口。

ApiServer串联了其他组件之间的数据交互。

ApiServer提供集群管理的授权、访问控制、发现、认证等等功能。

ApiServer是Etcd唯一的代理。

ApiServer部署在master节点上。生产环境中master节点通常会做成高可用。

 

1.2、Scheduler

Scheduler是一种调度器。

Scheduler会收集每个Worker资源的详细信息及运行情况,包括CPU、内存等。

Scheduler会收集每个Worker上运行什么服务。

Scheduler有自己的算法,在调度前会进行分析,然后会安排Pod到具体的worker节点上。

 

1.3、Controller Manager

Controller Manager包括了很多的Controller,它可以对Pod进行副本管理。

Controller Manager是处理kubernetes集群中常规任务的后台线程,它也是一个守护进程。

Controller Manager通过ApiServer监视kubernetes集群的共享状态,确保整个集群处于预期的工作状态。

Controller Manager是kubernetes高可用的保证。

 

2、Worker Node

Worker Node也叫Node,顾名思义,就是工作节点。我们Kubernetes的程序应用就会部署在这里。

Node主要就是为Pod提供一个运行的环境,以及可以对Pod进行操作的空间。

Node受Master的管理。

Node主要由Kuberlet、Container Runtime、kube-proxy组件构成。

下面快速说一下这三个组件:

 

2.1、Kubelet

每个Worker Node上都有Kubelet,Kubelet就像是Node的客户端。

Kubelet会监听和维护Pod的生命周期。

当Master上的Scheduler确定了某个Node后,就会把Pod的配置信息发送给这个Node的kubelet,

kubelet就会根据这些配置信息自动创建和运行容器。

 

2.2、Container Runtime

每个Worker Node上都有Container Runtime。

Container Runtime负责下载image并运行容器,它提供一个容器运行环境

Kubernetes的Container Runtime支持的容器有很多,最常见的就是Docker

 

2.3、kube-proxy

kube-proxy就是一个代理,它可以转发Service的请求到Pod。

kube-proxy可以实现一个内部Pod的负载均衡。

 

3、Etcd

Etcd是一个存储组件,就像是Kubernetes集群的数据库。

Etcd会存储整个kubernetes集群状态。比如各个Node的信息和状态等。

Etcd作为一个节点是相对独立的。

只有ApiServer才能和Etcd进行通讯,Etcd会为ApiServer的操作记录持久化。

Etcd不光可以存储,还可以监听。

Etcd的键值发生变化会通知ApiServer,由ApiServer去通知客户端。

因为Etcd的重要性,生产环境中Etcd最好部署多台,实现高可用。

 

下面这个图大致描述了之间的关系:

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值