k8s 集群的组成和原理

news/2025/2/13 20:49:46/
  • 集群

集群是一组节点,这些节点可以是物理服务器也可以是虚拟机,在它们中安装了k8s的环境。

  • 集群的组成

k8s 集群由 worker 节点和 node 节点组成,其中worker节点由Controller Manager(控制管理器)、etcd(键值数据库)、scheduler(调度器)、api-server(api服务器);node节点主要由kubelet(监工)、kube-proxy(代理网络组成)。

worker节点各部分的作用

master 负责管理集群,master 协调集群中的所有活动,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。

  • kube-apiserver

集群控制的入口,提供 HTTP REST 服务。

  • etcd

一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。

  • kube-scheduler

负责 Pod 的调度

  • kube-controller-manager

Kubernetes 集群中所有资源对象的自动化控制中心

node节点各部分作用

节点是k8s 中的工作节点,负责维护运行的Pod 并提供k8s的环境。

  • kubelet

负责 pod 的创建、启动、监控、重启、销毁等工作,同时与Master节点协作,实现集群管理的基本功能。

  • kube-proxy

实现k8s的通信与负载均衡功能。


  • 归纳

k8s 的核心组件

apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
etcd 保存了整个集群的状态,就是一个数据库;
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;
Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
  • k8s 部署一个应用的交互流程
  1. 程序员使用命令行工具: kubectl ; kubectl create deploy tomcat --image=tomcat8(告诉 master 让集群使用 tomcat8 镜像,部署一个 tomcat 应用)。
  2. kubectl 命令行内容发给 api-server,api-server 保存此次创建信息到 etcd 。
  3. etcd 给 api-server 上报事件,说刚才有人给我里面保存一个信息。(部署Tomcat[deploy])
  4. controller-manager 监听到 api-server 的事件,是 (部署Tomcat[deploy])。
  5. controller-manager 处理这个 (部署Tomcat[deploy])的事件。controller-manager 会生成 Pod 的部署信息【pod信息】。
  6. controller-manager 把 Pod 的信息交给 api-server ,再保存到 etcd
  7. etcd 上报事件【pod信息】给 api-server 。
  8. scheduler 专门监听 【pod信息】 ,拿到 【pod信息】的内容,计算,看哪个节点合适部署这个 Pod【pod 调度过后的信息(node: node-02)】。
  9. scheduler 把 【pod 调度过后的信息(node: node-02)】交给 api-server 保存给 etcd 。
  10. etcd 上报事件【pod调度过后的信息(node: node-02)】,给 api-server 。
  11. 其他节点的 kubelet 专门监听 【pod 调度过后的信息(node: node-02)】 事件,集群所有节点 kubelet 从 api-server 就拿到了 【pod调度过后的信息(node: node-02)】 事件。
  12. 每个节点的 kubelet 判断是否属于自己的事情;node-02 的 kubelet 发现是他的事情
  13. node-02 的 kubelet 启动这个 pod。汇报给 master 当前启动好的所有信息。

http://www.ppmy.cn/news/1186890.html

相关文章

Linux服务器等保测评命令

最近公司等保,就罗列了一些测评命令,记录下 LANG"en_US.UTF-8" #临时设置utf8编码 ip addr #查看IP地址 ifconfig #查看IP地址 dmidecode -s system-product-name #查看服务器是虚拟机还是物理机 cat /proc/version #查看版本信息 cat /etc/…

RPA机器人与传统自动化解决方案的差异性

当前,数字化转型是大势所趋,不少企业在应用传统自动化改造时,由于受到资金、技术、冗杂的流程或者系统集成的限制,投入产出比不甚理想。随着新技术和自动化的升级发展,RPA数字员工为企业数字化转型提供了一套更加简单高…

C++设计模式_20_Composite 组合模式

Composite 组合模式和后面谈到的Iterator,Chain of Resposibility都属于“数据结构”模式。Composite 组合模式核心是通过多态的递归调用解耦内部和外部的依赖关系。 文章目录 1. “数据结构”模式1.1 典型模式 2. 动机( Motivation )3. 模式定义4. Composite 组合模…

vscode在新窗口打开文件夹

点击左槐娃下角中更多设置选项 VS Code怎么设置在上的新窗口中打开文件夹 2 弹出了下拉蚂阅菜单选择settings选项 VS Code怎么设置在上的新窗口中打开文件夹 3 点击左侧中new widow选项 VS Code怎么设置在上的新窗口中打开文件夹 4 点击open folders in new window选项 VS …

Springmvc 讲解(1)

文章目录 前言一、SpringMvc1、简介2、核心组件和调用流程2.1 涉及组件的理解 3、小案例快速体验3.1场景需求3.1.1 导入依赖3.1.2 controller声明3.1.3 核心配置类3.1.4 环境搭建3.1.6 配置tomcat3.1.7 测试 二、SpringMvc 接收参数1.路径设置注解2、param接收参数四种类型2.1 …

springboot整合日志,并在本地查看

目录 1.导入依赖 2.编写配置 3.使用 4.验证 5.打印错误信息 1.导入依赖 <!-- logback&#xff0c;向下兼容log4j,还支持SLF4J--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId> </depen…

10.30 知识总结(标签分类、css介绍等)

一、 标签的分类 1.1 单标签 img br hr <img /> 1.2 双标签 a h p div <a></a> 1.3 按照标签属性分类 1.3.1 块儿标签 即自己独自占一行 h1-h6 p div 1.3.2 行内(内联)标签 即自身文本有多大就占多大 a span u i b s 二、 标签的嵌套 标签之间是可以互相…

JAVA-图形化编程——排序

import java.awt.*; import java.awt.event.ActionEvent; import java.lang.reflect.Array; import javax.swing.*; import java.util.*;public class 排序 {public static void main(String args[]) {//初始化控件们JFrame jf new JFrame("小排序");jf.setLayout(n…