当前位置: 首页 > news >正文

Kubernetes 核心组件架构详解

Kubernetes 核心组件架构详解

Kubernetes 是一个由多个核心组件组成的分布式系统,这些组件协同工作以提供容器编排能力。以下是 Kubernetes 的核心组件及其功能:

一、控制平面组件 (Control Plane)

1. kube-apiserver

功能:集群的统一入口和前端

  • 暴露 Kubernetes API
  • 处理 REST 操作请求
  • 验证和配置数据
  • 是所有其他组件通信的中枢

2. etcd

功能:分布式键值存储

  • 保存集群所有配置数据和状态
  • 采用 Raft 算法保证一致性
  • 默认只运行在 master 节点
  • 关键数据包括:Nodes, Pods, Configs, Secrets

3. kube-scheduler

功能:资源调度器

  • 监听未调度的 Pod
  • 根据资源需求、策略等选择合适 Node
  • 考虑因素:
    调度决策
    资源需求
    亲和/反亲和
    数据位置
    污点和容忍

4. kube-controller-manager

功能:运行各种控制器

  • Node Controller:监控节点状态
  • Replication Controller:维护 Pod 副本数
  • Endpoint Controller:维护 Service-Endpoint 关联
  • Service Account & Token Controller:管理命名空间账户

5. cloud-controller-manager (可选)

功能:与云平台交互

  • 对接云提供商 API
  • 管理负载均衡器、路由等
  • 实现节点控制器、路由控制器

二、节点组件 (Node Components)

1. kubelet

功能:节点代理

  • 管理 Pod 生命周期
  • 挂载 Pod 所需 Volume
  • 执行容器健康检查
  • 向 master 报告节点状态

2. kube-proxy

功能:网络代理

  • 维护节点网络规则
  • 实现 Service 的 VIP 转发
  • 工作模式:
    # 查看当前模式
    ps aux | grep kube-proxy | grep -- --proxy-mode
    
    • iptables (默认)
    • ipvs (高性能)
    • userspace (已废弃)

3. 容器运行时 (Container Runtime)

常见实现

  • Docker
  • containerd
  • CRI-O
  • Mirantis Container Runtime

三、插件组件 (Addons)

1. DNS 服务

  • CoreDNS (默认)
    # 查看部署
    kubectl get deployment -n kube-system coredns
    

2. 网络插件

常见选择

  • Calico
  • Flannel
  • Weave Net
  • Cilium

3. Dashboard

  • Web 管理界面
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
    

4. Ingress Controller

常见实现

  • Nginx Ingress
  • Traefik
  • HAProxy Ingress
  • Istio Ingress Gateway

四、组件交互关系

kubectl
注册/心跳
拉取配置
获取规则
User
api-server
etcd
Scheduler
Controller
kubelet
kube-proxy

五、组件部署方式对比

组件典型部署位置高可用方案
api-serverMaster多实例 + LB
etcdMaster3/5节点集群
schedulerMaster多实例 leader选举
controllerMaster多实例 leader选举
kubelet所有Node-
kube-proxy所有Node-

六、关键配置文件位置

  1. 组件配置

    • /etc/kubernetes/manifests/ (静态Pod方式)
    • /etc/systemd/system/kubelet.service.d/
  2. 认证文件

    • /etc/kubernetes/pki/ (CA证书)
    • /etc/kubernetes/kubelet.conf
  3. 网络配置

    • /etc/cni/net.d/ (CNI配置)
    • /var/lib/kubelet/ (kubelet数据)

七、组件健康检查

# 检查控制平面组件
kubectl get componentstatuses# 详细检查
kubectl get --raw='/readyz?verbose'

理解这些核心组件及其交互关系,是掌握 Kubernetes 架构的基础。实际部署时,根据集群规模和使用场景,可能需要对这些组件进行特定的配置和优化。

http://www.xdnf.cn/news/236737.html

相关文章:

  • git中reset和checkout的用法
  • C语言实现库函数strlen
  • 健康养生:构建健康生活的多维度指南
  • curl和wget的使用介绍
  • 修改apk包名
  • 使用atomic实现无锁方式的全局变量访问
  • 美林数据基于大模型的设备智能运维检修方案—驱动设备运检业务效率跃迁
  • 基于SpringBoot的旅游网站的设计与实现
  • spring boot中@Validated
  • pytorch对应gpu版本是否可用判断逻辑
  • JWT GenTokenParseToken
  • AnimateCC教学:形状补间动画的代码实现
  • 零改造实现MySQL加密:安当TDE透明加密与KSP密钥管理系统的创新实践
  • Kaggle比赛入门攻略(以 Titanic 为例)
  • 玩转MCP
  • C# dataGridView分页
  • JMeter WebSocket 压测详细步骤(支持 ws+proto 协议)
  • flutter 专题 五十六 Google 2020开发者大会Flutter专题
  • 驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成
  • 斯坦福RGA软件 老版本和兼容Windows 11版本可选
  • 在 OpenSearch 中建立有效的混合搜索: 技术和最佳实践
  • PCB设计工艺规范(四)安规要求
  • 变量char2、*char2、pChar3、*pChar3的存储位置
  • 冰冰一号教程网--介绍采用vuepress搭建个人博客
  • CrowdStrike推出新型工具防御恶意AI模型与数据窃取
  • 「Mac畅玩AIGC与多模态10」开发篇06 - 使用自定义翻译插件开发智能体应用
  • ai改写智能助手在线润色,高效产出优质文章!
  • Qt -DFS可视化
  • 乐西高速大凉山1号隧道实现双幅贯通:成都到昭觉9小时变3.5小时
  • 代码随想录打卡|Day31动态规划(最后一块石头的重量2、目标和、一和零)