K8S-基础架构

Kubernetes

Kubernetes(常简称为 K8S)是一个开源的生产级别容器编排平台集群管理系统,用于自动化容器化应用程序的部署、扩展和管理。它能够高效地管理跨多个主机的容器集群,实现资源管理的自动化,包括容器的创建、调度、监控和服务器管理。

核心功能特性

1. 自我修复

一旦某个容器崩溃,Kubernetes 能够在 1 秒左右迅速启动新的容器,确保服务的持续可用性。

2. 弹性伸缩

Kubernetes 可以根据负载需求,自动调整集群中正在运行的容器数量,支持水平自动扩缩容(HPA)。

3. 服务发现

服务可以通过内置的 DNS 或环境变量自动发现其所依赖的其他服务,无需硬编码 IP 地址或端口。

4. 负载均衡

如果一个服务启动了多个容器(Pod),Kubernetes 能够自动实现请求的负载均衡,将流量分发到不同的 Pod 实例。

5. 版本回退

如果新发布的程序版本出现问题,可以立即回退到之前的稳定版本,确保服务可靠性。

6. 存储编排

根据容器的需求自动创建和管理存储卷(Volume),支持多种存储类型(如本地存储、云存储等)。


基础架构

一个 Kubernetes 集群由控制节点(Master Node)工作节点(Worker Node) 组成,每个节点上安装不同的组件,共同协作完成容器编排任务。


控制节点(Master)

负责全局决策和资源调度

核心组件:

1. API Server
  • 资源操作的唯一入口,提供一系列 RESTful API。
  • 负责认证、授权、API 注册和发现机制。
  • 所有组件之间的通信都通过 API Server 进行。
2. Scheduler
  • 负责集群资源调度。
  • 根据预定义的调度策略(如资源需求、亲和性等)将 Pod 分配到合适的 Node 上。
3. Controller Manager
  • 负责维护集群状态,执行各种控制器逻辑。
  • 包括节点控制器、副本控制器、端点控制器等,实现故障检测、自动扩展、滚动更新等功能。
4. etcd
  • 分布式键值存储数据库,用于存储集群的所有状态和配置数据。
  • 仅与 API Server 交互,确保数据一致性和高可用性。

工作节点(Node)

工作节点是集群的"手脚",负责容器的实际运行。

核心组件:

1. Kubelet
  • 负责维护容器的生命周期。
  • 通过与容器运行时(如 Docker)交互,创建、更新、销毁容器。
  • 定期向 Master 报告节点状态。
2. Kube Proxy
  • 负责实现服务发现和负载均衡。
  • 通过维护网络规则,将请求转发到正确的 Pod。
3. 运行容器
  • 如 Docker、containerd 等,负责实际运行容器。

Kubernetes 工作流程

  1. 集群启动:Master 和 Node 节点启动后,将自身信息注册到 etcd 中。
  2. 接收请求 :用户通过 kubectl 或 API 发送指令到 API Server。
  3. 调度决策:API Server 将请求转发给 Scheduler,Scheduler 查询 etcd 中的节点信息,选择合适的 Node。
  4. 执行部署:API Server 调用 Controller Manager 调度目标 Node 上的 Kubelet。
  5. 启动容器:Kubelet 通知容器(如 Docker)启动 Pod。
  6. 服务访问:通过 Kube Proxy 实现服务的负载均衡和代理访问。

核心概念

Pod

  • Kubernetes 的最小调度单元,一个 Pod 可以包含一个或多个容器。
  • 共享网络和存储资源,紧密关联的容器通常部署在同一 Pod 中。

Controller

  • 控制器用于管理 Pod 的生命周期,包括创建、更新、扩缩容等。
  • 常见类型:Deployment、StatefulSet、DaemonSet 等。

Service

  • 为一组 Pod 提供统一的访问入口,实现服务发现和负载均衡。
  • 通过 Label Selector 关联后端 Pod。

Label

  • 键值对标签,用于标识和分类 Pod 等资源。
  • 便于 Controller 和 Service 进行资源筛选和管理。

Namespace

  • 命名空间用于隔离资源(如 Pod、Service 等),实现多租户资源管理。
  • 默认命名空间包括 defaultkube-system 等。

总结

Kubernetes提供了一个高度自动化、可扩展的容器编排平台。无论是自我修复、弹性伸缩,还是服务发现和存储编排,Kubernetes 都能高效地管理容器化应用。


相关推荐
雷工笔记几秒前
AI使用|通过AI学习物料分类编码表
笔记·学习
Shea的笔记本8 分钟前
MindSpore实战笔记:WaveNet音乐生成复现全记录
笔记
koo36429 分钟前
pytorch深度学习笔记23
pytorch·笔记·深度学习
不是书本的小明1 小时前
K8s探针实战:存活、就绪与启动三重保障
云原生·k8s
FakeOccupational1 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存结构图 + MPU内存保护单元 + Cache基本操作 + Cache&DMA 时序图
笔记·stm32·缓存
恋红尘1 小时前
K8S 配置与调度-叩丁狼
云原生·容器·kubernetes
掘根2 小时前
【微服务即时通讯】用户管理子服务1
微服务·云原生·架构
C羊驼2 小时前
C语言学习笔记(十一):数据在内存中的存储
c语言·经验分享·笔记·学习
恋红尘2 小时前
K8S Pod 基础解析-分篇-叩丁狼
云原生·容器·kubernetes·pod
承渊政道2 小时前
【优选算法】(实战体验滑动窗口的奇妙之旅)
c语言·c++·笔记·学习·算法·leetcode·visual studio