【k8s 系列】k8s 学习二十七 - 4,k8s 自身原理 4

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 前面咱们分享了 mater 和 worker 节点里面都有哪些组件,他们又是各自主要负责的工作是什么,现在我们心里应该都有数了吧

【k8s 系列】k8s 学习二十七 - 4,k8s 自身原理 4

前面咱们分享了 mater 和 worker 节点里面都有哪些组件,他们又是各自主要负责的工作是什么,现在我们心里应该都有数了吧

master 节点

etcd 存储资源配置,ApiServer 提供 RESTful Api 用于交互,scheduler 用于调度 pod,controller manager 控制器管理器

worker 节点

kubelet 管理 节点上的所有组件和内容,kube-proxy,作为代理将数据给到 pod

从控制器到 pod 运行,是如何达成的?

那么今天来分享一下,这些组件都是如何高效配合协同作战的,我们可以从控制器作为切入点,来看看

前面我们说到 master 里面的组件是不会直接去创建和运行 pod 的,只会和 ApiServer 通信,那么我们来看看创建一个 控制器的资源,到最终 pod 运行,中间都会涉及哪些控制器,哪些资源,哪些动作

我们都知道,咱们在生产环境下面,是不会直接去创建 pod 资源的,而是通过 RC / RS 去管控 pod ,然后我们是否还记得 Deployment 资源是会去管控 RS 的,那么我们就用之前环境中一直有的 deploy 来演示一下效果吧

看一下环境中的 deploy

image.png

可以看到环境中是有 5 个 pod,我们进入 newkubia ,将副本数修改为 3 个,并且在另外一个窗口进入到 master 节点,开启事件监控 kubectl get events --watch

image.png

在将 newkubia Deployment 从 5 个副本修改到 3 个副本的时候,我们可以看到此处的事件监控能够看到监控的信息

image.png

[xmt@VM-20-15-centos ~]$ kubectl get events --watch
LAST SEEN   TYPE     REASON              OBJECT                MESSAGE
0s          Normal   ScalingReplicaSet   deployment/newkubia   Scaled down replica set newkubia-85df599b7f to 3
0s          Normal   Killing             pod/newkubia-85df599b7f-zhwnw   Stopping container newkubia
0s          Normal   Killing             pod/newkubia-85df599b7f-jzjsn   Stopping container newkubia
0s          Normal   SuccessfulDelete    replicaset/newkubia-85df599b7f   Deleted pod: newkubia-85df599b7f-zhwnw
0s          Normal   SuccessfulDelete    replicaset/newkubia-85df599b7f   Deleted pod: newkubia-85df599b7f-jzjsn

f599b7f   Deleted pod: newkubia-85df599b7f-jzjsn

咱可以在 REASON 字段处看到,经历的过程是  **ScalingReplicaSet -> Killing newkubia-85df599b7f-zhwnw ->  Killing newkubia-85df599b7f-jzjsn -> SuccessfulDelete **

上述过程中,就会涉及到这些 控制器:

  • Deployment 控制器
  • ReplicaSet 控制器

还涉及 调度器,ApiServer 和 kubelet 和 docker

image.png

首先是各种控制器会监听 ApiIServer 里面对应的资源,当我们修改 newkubia Deployment 清单的副本数时候,

  • kubectl 会发 http 请求 POST 方法去请求 ApiServer,ApiServer 修改对应的 etcd 数据
  • Deployment 控制器监控到 Deployment 资源有变动,则会去和 APiServer 交互修改 ReplicaSet 资源的副本数
  • ReplicaSet 此时监听到 ApiServer 处的 ReplicaSet 资源有变动,则会 与 ApiServer 进行交互 去通知 相应的 pod 资源 进行需要进行更新
  • 调度器 scheduler 同样也是监听到 ApiServer 中的 pod 资源有变动后,Scheduler 就会去和 ApiServer 交互 在相应节点上配置增删 pod
  • 对应节点的 kubelet 监听到 ApiServer 中 pod 资源的变化,便会去通知自己节点的 docker,进行增加运行容器和删除容器的动作

通过上述简图和描述,相应到这里,xdm 对于修改一个 deployment 资源的副本数, k8s 中从控制器 到 实际的 pod 会涉及哪些组件了吧!

今天就到这里,学习所得,若有偏差,还请斧正


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
3天前
|
存储 Kubernetes 负载均衡
k8s原理概念基础入门
k8s原理概念基础入门
40 2
|
14天前
|
Kubernetes 监控 调度
K8S中Scheduler原理分析
【6月更文挑战第20天】K8S Scheduler是集群的关键组件,它监听API Server,为新Pod选择合适的Node。
|
2月前
|
Kubernetes 安全 API
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
|
2月前
|
存储 Kubernetes API
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
|
9天前
|
存储 Kubernetes Cloud Native
云原生 - Kubernetes基础知识学习
云原生 - Kubernetes基础知识学习
18 0
|
2月前
|
Kubernetes API 调度
|
2月前
|
Java 数据库连接 Spring
K8S+Docker理论与实践深度集成java面试jvm原理
K8S+Docker理论与实践深度集成java面试jvm原理
|
2月前
|
Kubernetes API 调度
Kubernetes学习-核心概念篇(二) 集群架构与组件
Kubernetes学习-核心概念篇(二) 集群架构与组件
|
2月前
|
Kubernetes 调度 虚拟化
Kubernetes学习-核心概念篇(一) 初识Kubernetes
Kubernetes学习-核心概念篇(一) 初识Kubernetes