Kubernetes 集群架构

etcd

集群状态存储 :etcd 存储所有 Kubernetes 对象的状态,例如部署、pod、服务、配置映射和机密。
配置管理 :集群配置的更改存储在 etcd 中,允许 Kubernetes 管理和维护集群的所需状态。

注意:etcd 可能位于 kube-system 中

Kube-api 服务器

Kubernetes API 服务器是 Kubernetes 控制平面的核心组件,它公开 Kubernetes API 并作为与集群所有交互的网关。

Kubernetes 控制器

Kubernetes 控制器管理器是一个运行控制器的守护进程,负责监视集群的状态并进行或请求更改以实现所需状态。(通过注册的 etcd 变量达到所需状态)

库贝莱特

kubelet 是 Kubernetes 代理,负责管理节点上的 pod、报告其状态并确保实现所需状态。

库贝代理

简单来说,kube-proxy 通过管理每个节点上必要的网络配置和规则,确保 Kubernetes 集群(pod、服务等)不同组件之间的网络通信按预期工作。

服务网络 :kube-proxy 确保所有用于 Kubernetes 服务的网络流量都可以正确路由到提供该服务的适当 pod。
负载平衡 :kube-proxy 可以在服务的各个 pod 之间执行基本的负载平衡,在它们之间分配传入流量。
网络代理 :kube-proxy 充当网络代理,根据服务配置将流量转发到正确的 pod。
网络规则:kube-proxy 负责在节点上设置必要的 iptables 规则或其他网络规则,以实现所需的网络行为。

中国国际广播电台

通过使用 CRI,Kubernetes 可以维护一个一致的容器管理接口,同时允许用户选择最适合其需求和基础设施的容器运行时。

(有选项)

调度器

Kubernetes 调度程序对于确保高效利用集群资源以及将 Pod 调度到能够处理其资源需求和约束的节点上至关重要。

工作节点或节点 1 和节点 2

简单来说,工作节点是 Kubernetes 集群的"主力",实际的应用程序工作负载在此执行。它们提供运行容器化应用程序所需的计算资源(CPU、内存、存储),而 Kubernetes 控制平面则管理整个集群中这些工作负载的整体编排和调度。

简单来说,Kubernetes 中的 Pod 是您可以在 Kubernetes 系统中创建和管理的最小、最基本的计算单元。

荚

Pod 是一组部署在同一主机(工作节点)上并共享相同资源的一个或多个容器,例如:

互动场景:

1.定义应用程序配置 :

创建一个 YAML 文件,描述简单 Web 应用程序的部署。

复制代码
# my-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web-container
        image: nginx
        ports:
        - containerPort: 80

2.应用配置 :

使用 kubectl 在集群中创建部署。

复制代码
kubectl apply -f my-deployment.yaml

相互作用:

  • kubectl 将配置文件发送到 Kubernetes API 服务器。
  • API 服务器验证配置并将其存储在集群的键值存储 etcd 中。
  1. API 服务器处理请求:
  • API 服务器在 etcd 中创建一个新的部署对象。
  • API 服务器向 kubectl 响应请求的状态。

4.部署控制器操作:

  • 作为控制器管理器的一部分,部署控制器注意到了新的部署对象。
  • 它创建 ReplicaSet 对象以匹配部署中指定的所需状态。
  1. ReplicaSet 控制器操作:
  • ReplicaSet 控制器看到新的 ReplicaSet 并确保正在运行正确数量的 pod。
  • 它在 etcd 中创建新的 Pod 对象以匹配所需的副本。

6.调度程序操作:

调度程序检测新的未调度的 pod 并将其分配给集群中的适当节点。

7.Kubelet操作:

  • 每个分配节点上的 kubelet 都会看到新的 Pod 对象。
  • 它指示容器运行时(如 Docker 或 containerd)拉取 nginx 镜像并启动容器。
  1. Pod 正在运行:
  • Web 应用程序现在正在指定的多个节点上运行。
  • kubelet 持续监控 pod,以确保它们保持所需的状态
相关推荐
吴声子夜歌2 分钟前
Docker入门与实战——配置私有仓库
运维·docker·容器
m0_5873830013 分钟前
无人自助拼豆系统的全栈开发方案
java·后端·struts·小程序·架构
绾樘14 分钟前
Docker
docker·容器
java_logo17 分钟前
Docker 部署 MariaDB:轻松搭建开源关系型数据库
数据库·docker·容器·开源·mariadb·轩辕镜像·docker部署教程
池佳齐35 分钟前
【软考高级架构师案例】容器化改造:Docker + K8s,如何用云原生视角重构传统多层架构?
docker·云原生·kubernetes
Jmyd012340 分钟前
3D数字协同设计实训空间技术架构解析:从三维采集到WebGL虚拟展示的全链路实现
3d·架构·webgl·虚拟实训
m0_5873830041 分钟前
GogoAI自助健身门店解决方案核心技术实现与落地部署全流程实操指南
运维·spring boot·信息可视化·架构·需求分析
zh731442 分钟前
Docker Desktop on Windows 挂载问题根因分析
windows·docker·容器
AI你一生一世44 分钟前
当“记笔记“变成一场架构战争:从 LWN 的一则注记说起
架构·笔记工具·知识管理·技术社区·研发协作·文档架构·lwn
PiaoKe___1 小时前
云手机底层架构与工程实践:从 KVM/容器到 WebRTC 串流
智能手机·架构·webrtc