Kubernetes简介

Kubernetes简介

 

 

Kubernetes(常称 K8s)是一个用于自动部署、扩展和管理“容器化应用”的开源容器编排平台。

 

简单来说,它就像一个“云操作系统”,是你从单机Docker时代迈向大规模、分布式云原生架构的关键一步,负责在大规模集群中调度和管理成千上万个容器。

 

🚀 核心功能和价值:为什么需要K8s?

K8s的核心价值在于解决了大规模容器管理的诸多痛点:

  • 服务发现与负载均衡:为容器组(Pod)提供统一访问入口(Service)和内置负载均衡,无需关心其具体IP。

  • 自动部署和回滚:通过声明式配置描述"期望状态",K8s自动变更,更新出错时可一键回滚。

  • 自我修复:强大的自愈能力是K8s的关键特性,它能自动重启故障容器、重新调度宕机节点上的容器。

  • 自动调度:如同"交通指挥员",为新Pod选择最合适的节点以最大化资源利用率。

  • 存储编排:支持挂载多种类型的存储系统,如本地存储、云存储和网络存储。

  • 密钥与配置管理:安全地管理应用的敏感信息和配置文件,无需重建镜像即可更新。

 

架构详解:集群的 "大脑" 与 "四肢"

一个K8s集群由控制平面(Control Plane) 和工作节点(Worker Nodes) 两部分组成。

控制平面:集群的 "大脑"

负责管理整个集群,做出全局决策。通常会以高可用(HA)模式在多个节点上运行。

  • 核心组件1: kube-apiserver (API服务器):集群的唯一入口,所有操作都必须通过它。

  • 核心组件2: etcd:K8s的后端数据库,以键值对格式存储所有集群数据。

  • 核心组件3: kube-scheduler (调度器):为新Pod选择最合适的运行节点。

  • 核心组件4: kube-controller-manager (控制器管理器):集群的"问题监控与修复"大脑,持续运行控制器使集群状态趋近用户期望。

  • 核心组件5: cloud-controller-manager (云控制器管理器):将K8s与云厂商特定功能(如负载均衡器)解耦的中间层。

 

工作节点 (Worker Node): 集群的 "四肢"

承载实际运行的容器化应用,是执行任务的地方。

  • 核心组件1: kubelet:工作节点的"管家",负责与API Server通信,并确保节点上的容器健康运行。

  • 核心组件2: kube-proxy:维护网络规则,实现Service的负载均衡和服务发现。

  • 核心组件3: 容器运行时 (Container Runtime):负责真正运行容器的底层软件,如 containerd、CRI-O 等。

 

核心概念 (K8s的对象模型)

在K8s中,对象是对集群状态的持久化描述,通常以YAML或JSON文件定义。

  • Pod:最小的部署和调度单元。可包含一个或多个紧密相关的容器。k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定镜像,用来运行具体的服务。Pod代表集群上正在运行的一个进程,一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程。

  • label:k8s中的资源对象大都可以打上标签,如Node、Pod、Service 等,一个资源可以绑定任意多个label,k8s 通过 Label 可实现多维度的资源分组管理,后续可通过 Label Selector 查询和筛选拥有某些 Label 的资源对象,例如创建一个 Pod,给定一个 Label是app=tomcat,那么service可以通过label selector选择拥有app=tomcat的pod,和其相关联,也可通过 app=tomcat 删除拥有该标签的 Pod 资源。
  • Service:定义一组Pod的稳定访问策略,提供一个虚拟IP和负载均衡器。

    在kubernetes中,Pod是有生命周期的,如果Pod重启IP很有可能会发生变化。如果我们的服务都是将Pod的IP地址写死,Pod的挂掉或者重启,和刚才重启的pod相关联的其他服务将会找不到它所关联的Pod,为了解决这个问题,在kubernetes中定义了service资源对象,Service 定义了一个服务访问的入口,客户端通过这个入口即可访问服务背后的应用集群实例,service是一组Pod的逻辑集合,这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector实现的。

    image

  • Ingress:管理从集群外部访问集群内部Service的规则。

  • Deployment:管理Pod和ReplicaSet,提供声明式更新。

    Deployment是管理Replicaset和Pod的副本控制器,Deployment可以管理多个Replicaset,是比Replicaset更高级的控制器,也即是说在创建Deployment的时候,会自动创建Replicaset,由Replicaset再创建Pod,Deployment能对Pod扩容、缩容、滚动更新和回滚、维持Pod数量。

  • StatefulSet:专为有状态应用设计,提供稳定的网络标识和持久化存储。

  • DaemonSet:确保在集群的每个节点上都运行一个Pod副本,常用于日志或监控。

  • Namespace:实现多租户资源隔离。

总结

Kubernetes通过其控制平面 + 工作节点的架构,为容器化应用提供了一套声明式、自动化的管理平台,是构建、运行现代云原生应用的核心基础设施。

 

posted @ 2026-04-26 10:27  邓维-java  阅读(4)  评论(0)    收藏  举报