Kubernetes核心概念总览

系统的学习了一遍Kubernetes,发现概念太多,使用的时候有的概念容易混淆或记不清,写一篇文章做一个记录和梳理。

Master

关键进程:

  • API Server:集群控制的入口进程,提供了Rest接口
  • Controller Manager:所有资源对象的自动化控制中心,“大总管”
  • Scheduler:负责资源调度,“调度室”

Node

关键进程:

  • kubelet:负责Pod的创建、启停,实现集群管理的基本功能
  • kube-proxy:实现Kubernetes Service的通信与负载均衡机制
  • Docker Engine:Docker引擎,容器创建与管理

每个Node都是一台物理机,都有自己的Node IP

Pod

有一个根容器--Pause,剩下的就是业务容器。
有一个唯一的Pod IP,因为存在虚拟二层网络,所以Node间的Pod是可以通信的

Service

通过Label Selector关联一组Pod来组成一个Service。
有一个全局唯一的虚拟IP,称为Cluster IP。

Endpoint

暴露的端口和Cluster IP组成一个Endpoint,一个Service可以有多个Endpoint

RC

全名Replication Controller,定义了一个期望的Pod场景,比如始终保持Pod数量为3个

RS

全名Replica Set,是RC的升级版,一般与Deployment搭配使用

Deployment

可以知道当前Pod“部署”的进度,因为从Pod到Node是一个连续变化的状态

StatefulSet

顾名思义:有状态的Pod集合。
必须与Headless Service配合使用,Headless Service是一个无负载均衡器的Service,它没有Cluster IP,解析他的域名,会返回对应全部Pod的Endpoint列表。

HPA

全称Horizontal Pod Autoscaler,实现K8s的自动水平扩容和缩容

Job

批处理的工作项

Kubernetes Volume

Volume定义在Pod上,与Pod生命周期相同,同时还支持分布式文件系统

Persistent Volume

PV是一个独立的网盘,可以在每个Node访问
Pod使用PersistentVolumeClaim来申请PV,PVC会根据容量进行自动绑定

Namespace

实现多租户的隔离

Annotation

与Label类似,但不是用于Label Selector,而是用于用户任意定义的附加信息,以便于外部工具查找

ConfigMap

所有配置项都当成是key-value字符串,放到etcd中。
然后Kubernetes将存储在etcd中的ConfigMap通过Volume映射的方式变成目标Pod内的配置文件

DaemonSet

为每个Node上都调度一个Pod

Ingress

如果要向外暴露服务,上面讲到可以通过NodePort的方式来完成。弊端是每个Node上都会开放这个端口
用Nginx的话,又需要Rolling Update
所以k8s弄了一个Nginx的抽象层Ingress
使用Ingress进行负载分发时,Ingress Controller会跳过kube-proxy,而直接转发到后端Endpoint上。Ingress Controller对外提供服务,可以看做实现的是边缘路由器的功能

kube-proxy

在Kubernetes集群的每个Node上都会运行一个kube-proxy服务进程,我们可以把这个进程看做Service的透明代理兼负载均衡器,核心功能是将某个Service的访问请求转发到后端的多个Pod实例上

StorageClass

StorageClass作为对存储资源的抽象定义,对用户设置的PVC申请,屏蔽后端存储的细节,实现了动态的资源供应。PVC找到合适的StorageClass后,将自动创建一个PV并完成与PVC的绑定
StorageClass被创建出来后,则无法修改。如需修改,则只能删除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章