K8S
📎

K8S

介绍

kubernetes:声明式系统

kubernetes 的所有管理能力构建在对象抽象的基础上,核心对象包括:
  • Node: 计算节点的抽象,用来描述计算节点的资源抽象、健康状态等。
  • Namespace: 资源隔离的基本单位,可以简单理解为文件系统中的目录结构。
  • Pod: 用来描述应用实例,包括镜像地址、资源需求等。 Kubernetes 中最核心 的对象,也是打通应用和基础架构的秘密武器。
  • Service: 服务如何将应用发布成服务,本质上是负载均衡和域名服务的声明。
 

结构图

notion image

Master Node(主节点)

  • APIServer API服务器:
    • 这是 Kubernetes 控制面板中唯一带有用户可访问 API 以及用户可交互的组件。API 服 务器会暴露一个 RESTful 的 Kubernetes API 并使用 JSON 格式的清单文件(manifest files)。
  • Cluster Data Store 集群的数据存储:
    • Kubernetes 使用“etcd”。这是一个强大的、稳定的、高可用的键值存储,被 Kubernetes 用于长久储存所有的 API 对象。
  • Controller Manager 控制器:
    • 被称为“kube-controller manager”,它运行着所有处理集群日常任务的控制器。包 括了节点控制器、副本控制器、端点(endpoint)控制器以及服务账户等。
  • Scheduler 调度器:
    • 调度器会监控新建的 pods(一组或一个容器)并将其分配给节点。
       

Worker Node(工作节点)

  • kubelet 节点客户端:
    • 负责调度到对应节点的 Pod 的生命周期管理,执行任务并将 Pod 状态报告给主节 点的渠道,通过容器运行时(拉取镜像、启动和停止容器等)来运行这些容器。它 还会定期执行被请求的容器的健康探测程序。
  • kube-proxy 网络代理:
    • 它负责节点的网络,在主机上维护网络规则并执行连接转发。它还负责对正在服务 的 pods 进行负载平衡。
       

etcd

etcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如 数据库选主、分布式锁等)。
  • 基本的 key-value 存储;
  • 监听机制;
  • key 的过期及续约机制,用于监控和服务发现;
  • 原子 CAS 和 CAD,用于分布式锁和 leader 选举。
notion image

APIServer

Kube-APIServer 是 Kubernetes 最重要的核心组件之一,主要提供以下功能:
  • 提供集群管理的 REST API 接口,包括:
    • 认证 Authentication;
    • 授权 Authorization;
    • 准入 Admission(Mutating & Valiating)
  • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 APIServer 查询或 修改数据,只有 APIServer 才直接操作 etcd)。
  • APIServer 提供 etcd 数据缓存以减少集群对 etcd 的访问。
notion image
APIServer 展开图
notion image

Controller Manager

  • Controller Manager 是集群的大脑,是确保整个集群动起来的关键;
  • 作用是确保 Kubernetes 遵循声明式系统规范,确保系统的真实状态(Actual
    • State)与用户定义的期望状态(Desired State)一致;
  • Controller Manager 是多个控制器的组合,每个 Controller 事实上都是一个 control loop,负责侦听其管控的对象,当对象发生变更时完成配置;
  • Controller 配置失败通常会触发自动重试,整个集群会在控制器不断重试的机 制下确保最终一致性( Eventual Consistency)。
 
工作流程:
notion image
Informer 内部机制
notion image
 
代码结构
 
.//staging/src/k8s.io/kubectl/README.md:- Code must be usefully commented.
 
🎖️
专业英文缩写
🃏
K8S 贡献指南