跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kubernetes组件
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Kubernetes组件 = Kubernetes(简称K8s)是一个开源的容器编排平台,其核心功能由多个相互协作的组件实现。本页面将详细介绍Kubernetes的核心架构组件及其交互方式。 == 概述 == Kubernetes采用'''主从架构'''(Master-Worker),包含控制平面(Control Plane)组件和工作节点(Node)组件。所有组件通过API Server进行通信,使用etcd作为集群状态存储。 <mermaid> graph LR A[Control Plane] --> B[API Server] A --> C[Scheduler] A --> D[Controller Manager] A --> E[etcd] F[Node] --> G[kubelet] F --> H[kube-proxy] F --> I[Container Runtime] B <--> G B <--> H </mermaid> == 控制平面组件 == === API Server === '''核心通信枢纽''',提供RESTful Kubernetes API,是所有集群操作的唯一入口。 <syntaxhighlight lang="bash"> # 查看API Server端点 kubectl cluster-info </syntaxhighlight> 输出示例: <pre> Kubernetes control plane is running at https://192.168.49.2:8443 </pre> === Scheduler === 负责将新创建的Pod分配到合适的节点,决策基于: * 资源请求/限制 * 亲和性/反亲和性规则 * 数据局部性 * 节点状态 === Controller Manager === 运行各种控制器进程的守护进程,包括: * '''Node Controller''':监控节点状态 * '''Replication Controller''':维护Pod副本数 * '''Endpoint Controller''':维护Service与Pod的映射 === etcd === 分布式键值存储,保存整个集群的状态数据。采用Raft一致性算法保证数据一致性。 == 节点组件 == === kubelet === 运行在每个工作节点上的"节点代理",负责: * 管理Pod生命周期 * 挂载存储卷 * 执行健康检查 <syntaxhighlight lang="bash"> # 查看节点kubelet状态 systemctl status kubelet </syntaxhighlight> === kube-proxy === 实现Kubernetes Service抽象,通过以下方式维护网络规则: * '''iptables'''(默认模式) * '''IPVS'''(高性能模式) * '''userspace'''(旧模式) === 容器运行时 === 实际运行容器的软件,如: * containerd * CRI-O * Docker(已废弃) == 插件组件 == === CNI插件 === 实现Pod网络,常见选择: * Calico * Flannel * Weave Net === CSI插件 === 提供持久化存储支持,如: * AWS EBS * Azure Disk * Ceph RBD == 组件交互示例 == 当用户创建Deployment时: <mermaid> sequenceDiagram participant User participant API_Server participant etcd participant Scheduler participant kubelet User->>API_Server: kubectl create deployment API_Server->>etcd: 存储Deployment配置 API_Server->>Controller_Manager: 触发ReplicaSet创建 Controller_Manager->>API_Server: 创建Pod定义 API_Server->>etcd: 存储Pod定义 Scheduler->>API_Server: 监听未调度Pod Scheduler->>API_Server: 绑定Pod到节点 kubelet->>API_Server: 获取分配的Pod kubelet->>Container_Runtime: 启动容器 </mermaid> == 实际案例 == '''电商应用部署场景''': 1. API Server接收Deployment创建请求 2. Scheduler将前端Pod分配到高CPU节点 3. kube-proxy为支付服务创建Service VIP 4. kubelet确保库存服务Pod始终保持运行 == 故障排查提示 == 常见组件问题诊断命令: <syntaxhighlight lang="bash"> # 检查控制平面组件状态 kubectl get componentstatuses # 查看节点详细信息 kubectl describe node <node-name> # 检查kubelet日志 journalctl -u kubelet -f </syntaxhighlight> == 数学基础 == 调度器使用的评分公式示例: <math> score = \alpha \times \left(\frac{availableCPU}{requestedCPU}\right) + \beta \times \left(\frac{availableMemory}{requestedMemory}\right) </math> 其中<math>\alpha</math>和<math>\beta</math>为权重系数。 == 版本变化 == * v1.20+:默认容器运行时接口(CRI)改为containerd * v1.26+:移除Docker支持 * v1.29+:引入结构化配置管理 本内容最后更新于2023年11月,适用于Kubernetes v1.28+版本。 [[Category:集成部署]] [[Category:Kubernetes]] [[Category:Kubernetes基础]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)