Kubernetes,作为当今容器编排技术的事实标准,以其强大的功能和灵活的架构设计,在全球范围内得到了广泛的应用和认可。本文将深入简出地探讨Kubernetes的核心架构,帮助大家了解Kubernetes,为今后的高效的学习打下良好的基础。
本文是系列的第2期,欢迎大家阅读往期,并关注后续更新~
👉《云原生:10分钟了解一下Kubernetes架构》
🖋《云原生:15分钟了解一下Kubernetes的核心概念》
🖋《云原生:20分钟体验一下Kubernetes》
Kubernetes集群包含 Master节点(控制面/控制节点)和 Node节点(计算节点/工作节点),应用自动调度部署在Node节点上,且可以通过配置选择应用部署在某些特定的节点上。
Master节点(控制面)
Master节点是集群的控制节点,主要由API Server、Scheduler、Controller Manager和ETCD四个组件构成(云上还需cloud-control-manager)。在生产环境中,为了保障集群的高可用,通常会部署多个Master节点。
组件 | 说明 |
---|---|
etcd | 一个分布式key-value数据存储组件,为Kubernetes提供原数据的存储,它保存了整个集群的状态。支持watch机制,这样组件很容易得到系统状态的变化,从而快速响应和协调工作。 |
kube-api-server | 主要提供Kubernetes API,提供对Pods,Services,RC等对象的CRUD处理REST操作各组件互相通讯的中转站,接受外部请求,并将信息更新到ETCD中。 |
kube-scheduler | 负责应用调度的组件,根据各种条件(如可用的资源、节点的亲和性等)将容器调度到Node上运行。 |
kube-controller-manager | 执行集群级功能,例如复制组件,跟踪Node节点,处理节点故障等等。例如:节点控制器、任务控制器、端点分片控制器等。 |
cloud-control-manager | 云控制器管理器是指嵌入特定云的控制逻辑的控制平面组件。 云控制器管理器允许您链接聚合到云提供商的应用编程接口中, 并分离出相互作用的组件与您的集群交互的组件。 |
Node节点(worker)
Node节点是集群的计算节点,即运行容器化应用的节点。
组件 | 说明 |
---|---|
kubelet | kubelet主要负责同Container Runtime打交道,并与API Server交互,管理节点上的容器。 |
kube-proxy | 应用组件间的访问代理,解决节点上应用的访问问题。 |
Container Runtime | 容器运行时,最主要的功能是下载镜像和运行容器。 例如:Docker、Containerd(1.24后默认) |
工作流程简介
- 用户通过 kubectl 等工具与 API 服务器交互,提交应用部署的请求。
- API 服务器将请求存储在 etcd 中,并通知调度器。
- 调度器根据资源需求和节点状况,决定 Pod 应该在哪个节点上运行。
- API 服务器将 Pod 的分配结果通知对应的节点上的 kubelet。
- kubelet 与容器运行时通信,创建和启动 Pod 中的容器。
- kube-proxy 在节点上设置网络规则,确保服务的网络请求可以转发到正确的 Pod。
- 控制器管理器监控集群状态,确保实际状态与用户的期望状态一致,并在必要时进行调整。
更多信息可访问官网:https://kubernetes.io/zh-cn/docs/concepts/architecture/
或关注后续相关博文。
往期精彩内容推荐
云原生:5分钟了解一下Kubernetes是什么
云原生:应用敏捷,华为视角下的应用现代化
云原生:为企业带来的7大价值
云原生:重塑未来应用的基石
「快速部署」第一期清单