k8s 数据流向 与 核心概念详细介绍

目录

一  k8s 数据流向 

1,超级详细版

2,核心主键及含义

3,K8S 创建Pod 流程

4,用户访问流程

二    Kubernetes 核心概念

1,Pod

1.1 Pod 是什么

1.2 pod 与容器的关系

1.3 pod中容器 的通信

2, Pod 控制器

2.1 Deployment

2.2 Replicaset

2.21  Replicaset 是什么

2.22  Replicaset 和  Deployment 关系

2.3  Daemonset

2.4  Statefulset

2.5 job

2.6 Cronjob

3,  Label 标签

3.1  Label 作用

3.2 Label 格式

4, Label 选择器(Label selector)

5, Service

5.1  Service概念

5.2   Service 功能其一

5.3   Service 功能其二

5.4 Service 优势

6,   Ingress

7,  Ingress 与 service

7.1  外部访问 数据流向

7.2   Ingress 与 service 区别

8, Name

9,   Namespace

 三    常见的K8S按照部署方式


上一章 对k8s理论做了一些说明,为了更透彻讲述k8s  的工作过程,本章将详细阐述 k8s 的数据流向 与  核心概念供君参考。

一  k8s 数据流向 

1,超级详细版

1.首先Kubectl通过Auth认证,访问到Master节点的APIserver

2.APIserver会先将访问数据发送给ETCD存储,相当于将Kubectl发送的请求,例如创建服务的指令形成一个类似与模板的数据,进行存储

3.ETCD会将请求重新发送给APIserver

4.APIserver会先调用controller-manager组件去执行ETCD模板请求,类似与生成一条指令,但是它没有执行的目标

5.controller-manager组件并不能直接在Node节点上创建服务,它会将类似于执行命令的数据发送给APIserver

6.APIserver再将该数据发送到ETCD,ETCD会记录操作请求,而后会将指令需求发送给scheduler组件

7.scheduler组件会kubelet监控,并发送给APIserver的节点信息,而后根据预选、优选策略去选择合适的节点去执行指令,但是它也无法直接将指令发送给kubelet,而是将指令发送给APIserver

8.APIserver将指令发送给kubelet

9.kubelet会在每一个node节点上执行,它将APIserver发送的指令在其所在的node节点上执行,同时它还会负责监控所在节点的Pod实例状态,管理所有Pod实例的生命周期。在执行完指令后,会将执行记录返回给APIserver,APIserver会将记录存储在ETCD当中。并负责与master进行通信。

10.此时用户访问服务,会通过kube-proxy来访问pod实例

注释:

所有的执行操作与访问数据,都会记录到ETCD当中

master组件之间并不会互相进行通信与调用,所有的操作都会通过APIserver进行调用执行

2,核心主键及含义

  1. apiserver接入的唯一入口,集群的大脑,负责所有操作的读写,增删改查
  2. kube-comtroller-manager:增删改查,创建pod的资源模板,一个资源一个控制器,资源控制器,任务控制
  3. kube-scheduler调度器,根据模板初选节点pod,以实现最优资源利用
  4. kubelet:API小弟,节点代理,监视 管理 反馈管理节点上容器和资源,接收指令跟容器引擎交互实现容器生命周期管理
  5. kube-proxy为pod提供网络代理和负载均衡,负责写入规则到iptables或ipvs实现服务映射和访问容器
  6. ETCD分布式键值对存储重要信息,并持久化

3,K8S 创建Pod 流程

kubectl 创建一个Pod(在提交时,转化为json格式)

  1. 首先经过auth认证(鉴权),然后传递给api-server进行处理
  2. api-server 将请求信息提交给etcd
  3. scheduler和controller-manager 会watch(监听) api-server ,监听请求
  4. 在scheduler 和controller-manager监听到请求后,scheduler 会提交给api-server一个list清单——》包含的是获取node节点信息
  5. 此时api-server就会向etcd获取后端node节点信息,获取到后,被scheduler watch到,然后进行预选优选进行打分,最后将结果给与api-server
  6. 此时api-server也会被controller-manager watch(监听) controller-manager会根据请求创建Pod的配置信息(需求什么控制器)将控制器资源给与api-server
  7. 此时api-server 会提交list清单给与对应节点的kubelet(代理)
  8. kubelet代理通过K8S与容器的接口(例如containerd)进行交互,假设是docker容器,那么此时kubelet就会通过dockershim 以及runc接口与docker的守护进程docker-server进行交互,来创建对应的容器,再生成对应的Pod
  9. kubelet 同时会借助于metrics server 收集本节点的所有状态信息,然后再提交给api-server
  10. 最后api-server会提交list清单给与etcd来存储(最后api-server会将数据维护在etcd中)

4,用户访问流程

  1. 假设用户需创建 nginx资源(网站/调度)kubectl ——》auth ——》api-server
  2. 基于yaml 文件的 kubectl create run / apply -f nginx.yaml(pod 一些属性,pod )
  3. 请求发送至master 首先需要经过apiserver(资源控制请求的唯一入口)
  4. apiserver 接收到请求后首先会先记载在Etcd中
  5. Etcd的数据库根据controllers manager(控制器) 查看创建的资源状态(有无状态化)
  6. 通过controllers 触发 scheduler (调度器)
  7. scheduler 通过验证算法() 验证架构中的nodes节点,筛选出最适合创建该资源,接着分配给这个节点进行创建
  8. node节点中的kubelet 负责执行master给与的资源请求,根据不同指令,执行不同操作
  9. 对外提供服务则由kube-proxy开设对应的规则(代理)
  10. container 容器开始运行(runtime 生命周期开始计算)</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值