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实现的。

-
Ingress:管理从集群外部访问集群内部Service的规则。
-
Deployment:管理Pod和ReplicaSet,提供声明式更新。
Deployment是管理Replicaset和Pod的副本控制器,Deployment可以管理多个Replicaset,是比Replicaset更高级的控制器,也即是说在创建Deployment的时候,会自动创建Replicaset,由Replicaset再创建Pod,Deployment能对Pod扩容、缩容、滚动更新和回滚、维持Pod数量。
-
StatefulSet:专为有状态应用设计,提供稳定的网络标识和持久化存储。
-
DaemonSet:确保在集群的每个节点上都运行一个Pod副本,常用于日志或监控。
-
Namespace:实现多租户资源隔离。
总结
Kubernetes通过其控制平面 + 工作节点的架构,为容器化应用提供了一套声明式、自动化的管理平台,是构建、运行现代云原生应用的核心基础设施。

浙公网安备 33010602011771号