博主最近开始接触云原生技术,作为一名原本只专注于后端的开发者,真的被它深深震撼到了!因此决定开一个新坑,持续分享自己的学习心得!当然毕竟博主作为初学,本博文也仅将当前技术栈以知识笔记的方式进行记录。

目录

K8S概览

K8S核心特性

K8S核心架构——Master-Worker架构

K8SMaster节点主要组件

kube-scheduler——调度组件:

Kube-controller-manager——本地服务监控组件:

Cloud-controller-manager——远程云服务监控组件:

kube-apiserver——请求入口服务组件

etcd——K8S的配置文件的持久化管理组件

Worker节点主要组件

kubelet

Kube-Proxy

Container Runtime


K8S概览

  Kubernetes(K8S) 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由 Google 基于其内部多年大规模运行容器工作负载的经验设计并开源,现已成为云原生应用架构的核心基础设施。

  在容器化技术日益普及的背景下,Docker 作为一种轻量级的应用容器引擎,使开发者能够将应用及其依赖打包成标准化的镜像文件,从而实现环境一致性并支持持续交付。然而,当应用规模扩大、容器数量激增时,如何高效地调度、管理和维护这些容器,便成为一个关键挑战。

  Kubernetes 应运而生,它通过声明式配置与自动化控制机制,提供了服务发现、负载均衡、存储编排、自动扩缩容、自我修复等重要能力,极大地简化了分布式系统中容器的生命周期管理。

Kubernetes中文官网站https://kubernetes.io/zh-cn/

K8S核心特性

  • 服务发现与负载均衡:Kubernetes 能够自动为容器组提供唯一的域名或IP地址,并实现网络流量的负载分发,使服务之间能够轻松通信,而无需修改应用程序本身。

  • 存储编排:平台可以根据用户的申明,自动挂载所选定的存储系统,无论是本地存储还是公有云存储,为有状态应用提供持久化数据保障。

  • Secret和配置管理:Kubernetes 允许您存储和管理敏感信息(如密码、密钥)与应用配置,并能在部署时动态注入,无需重新构建镜像,也避免了将机密信息硬编码在代码中。

  • 批量执行:除了长期运行的服务,Kubernetes 同样支持管理批处理任务和CI(持续集成)工作负载,确保任务完成,并在容器失效时自动替换。

  • 水平扩缩:通过简单的命令、用户界面或基于CPU使用率等自定义指标,Kubernetes 能够自动增加或减少应用实例的数量,以应对业务负载的变化。

  • 自动化上线和回滚:Kubernetes 会以受控的、分步骤的方式(例如滚动更新)部署应用变更,并在监测到问题时自动回滚到上一版本,确保服务上线过程的平稳与安全。

  • 自动装箱:系统在调度容器时,会智能地考虑每个容器的资源需求(如CPU和内存)以及其他约束条件,自动将其放置在合适的节点上,同时最大化资源利用率并保证应用可用性。

  • 自我修复:这一特性是系统健壮性的基石。Kubernetes 会自动重启故障容器、在节点不可用时重新调度容器,并终止那些无法通过健康检查的容器,直到它们恢复正常服务为止。

K8S核心架构——Master-Worker架构

K8S宏观架构

🧠 Master节点主要组件

kube-scheduler——调度组件:

   Master节点上的调度器,它的职责是“为新创建的Pod(Pod 理解为一台“逻辑虚拟机” 或者 一个“应用主机”)找一个家”。将 Pod 调度到合适的 Worker 节点,基于资源需求、策略和运行状态做出调度决策。调度器会监听API Server,一旦发现有尚未被调度到Node上的Pod(即Pending状态的Pod),然后根据资源需求、数据位置、策略等因素,从所有可用的Node中智能地选择一个最合适的来运行这个Pod。

Kube-controller-manager——本地服务监控组件:

  运行一系列控制器,监控集群状态并确保其符合用户声明的期望状态。可以理解为集群的“自动修复与控制中心”。它内部运行着许多不同的控制器,这些控制器就像一个个不知疲倦的“守护进程”,不断地观察着集群的状态(例如,某个Pod意外终止了),并努力将其调整到与我们声明的期望状态一致(例如,重新启动一个Pod)。

Cloud-controller-manager——远程云服务监控组件:

  用于与底层云服务商交互,实现节点、路由、服务等资源的云上管理。

Kube-apiserver——“总网关”入口

  这是整个集群的“总网关”和唯一入口。我们所有通过kubectl发出的命令,最终都会发送给API Server进行验证和处理。它也是各个组件之间相互通信的中枢。

Etcd——K8S的配置文件的持久化管理组件

  K8S的存储服务,存储了K8S的关键配置和用户配置,K8S种仅API Server才具备读写权限,其它组件必须通过API Server提供的接口才能实现数据的读写。

⚙️ Worker节点主要组件

kubelet

  Worker Node 的监视器,以及与Master Node的通讯器。Kubelet是Master Node安插在Worker Node上的“眼线”,会定期向Master Node汇报自己Node上运行的服务状态,并接收来自MasterNode的指示采取调整措施。

Kube-Proxy

  K8S的网络代理。负责Node再K8S上的网络通讯、以及对外部网络流量的负载均衡。

Container Runtime

  Worker Node 的运行环境。即安装了容器化所需的软件环境确保容器化程序能够跑起来,比如 Docker Engine运行环境。

小结:

Kubernetes架构的精妙之处:Master节点专注于决策与管理,实现全局掌控;Worker节点专注于执行与汇报,实现分布式运行

拥有自动化运维部署的一套声明式API和强大的控制循环机制,将我们从繁琐的手动运维中解放出来。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐